0

大家好我有一個問題很久,決定在一些設備上發佈(更常見的是4.1-4.4沒有sdcard)$ localStorage它沒有加載(已經試過使用SQLiete,文件),但我相信他可以保存你的身份驗證,因爲有應用程序緩存。我需要數週的時間才能回覆,但我不知道問題出在哪裏,我找不到解決方案。

OBS [1]:我已經通過刪除SD卡在我的手機上進行了多次測試,但這並不是應用程序正常工作的問題。

[2]當在模擬器上的Android 4.1沒有SD卡,我會遇到以下錯誤在CMD安裝「RM失敗-f,只讀文件系統」

[3]我已經在AndroidManifest和權限檢查正確

我的權限:白名單 相機 媒體捕捉 設備 狀態欄 文件 文件傳輸 imagepicker 媒體 網絡信息 file-opener2 sqlite-storage ms-adal x-toast 社交分享。

我的例程是:檢查(READ)的localStorage - >

IF OK:AUTH自動 - >更新的localStorage - > GO主頁。

ELSE:用戶信息登錄和密碼 - >認證 - >保存本地存儲 - >回到主頁。

看看我的代碼:

app.factory('Auth', function ($http, $q) { 
    loginAuth = function (login, pswd) { 
     var def = $q.defer(); 
     var url = "XXXXXXXXXXX"; 
     var uuid = device.uuid; 
     $http({ 
      method: 'GET', 
      dataType: "json", 
      url: url + 'GetLoginUser', 
      params: { login: login, pswd: pswd, cdUuid: uuid } 
     }).success(function (data) { 
      def.resolve(data); 
     }).error(function (data) { 
      def.reject("error"); 
     }); 
     return def.promise; 
    }; 

    return { 
     Login: function (login,pswd) { 
      return loginAuth(login, pswd); 
     } 
    }; 
}); 


app.factory('User', function ($cordovaSQLite, $localStorage,$q) { 

    var user = { 
     idUser: '', 
     name: '', 
     email: '', 
     pswd: '', 
     imgProfile: '' 
    }; 

    setUser = function (objUsuario) { 
     user.idUser = objUsuario.idUsuario; 
     user.name = objUsuario.nome; 
     user.email = objUsuario.email; 
     user.pswd = objUsuario.senha; 
     user.imgProfile = objUsuario.imgProfile; 
    }; 

    deleteUser = function() { 
    delete $localStorage.user; 
    }; 

    return { 
     Set: function (data) { 
      setUser(data); 
     }, 
     Get: function() { 
      return user; 
     }, 
     Delete: function() { 
      deleteUser(); 
     } 
    }; 
}); 





app.controller('LoginCtrl', function ($scope, $ionicLoading, $timeout, $state, $ionicPopup, $http, $localStorage,Auth, UtilApp, User) { 
    $scope.user = { 
     login: "", 
     pswd: "" 
    } 

    $scope.checkUser = function() { 
     UtilApp.Show(); 
     try { 
      if (angular.isDefined($localStorage.user)) { 
       Auth.Login($localStorage.user.email, $localStorage.user.pswd).then(function (data) { 
        try { 
         $localStorage.user = data; 
         User.Set($localStorage.user); 
         UtilApp.Hide(); 
         $state.go('app.feed'); 
        } catch (err) { 
         UtilApp.Hide(); 
         UtilApp.AlertShow('ERRO', 'XXXXXXXXXX'); 
        } 
       }, 
       function (data) { 
        UtilApp.Hide(); 
        if (UtilApp.CheckConnection() == "0") { 
         UtilApp.AlertShow('XXXX', 'XXXXXXX.'); 
        } else { 
         UtilApp.AlertShow('XXXX', data.Message); 
        } 
       }); 
      } else { 
       UtilApp.Hide(); 
      } 
     } 
     catch (err) { 
      UtilApp.Hide(); 
     } 

    }; 

    $scope.logar = function() { 
     UtilApp.Safe($scope, function() { 
      UtilApp.Show(); 
      var login = $scope.user.login; 
      var pswd = $scope.user.pswd; 
      if (login.trim() && pswd.trim() != "") { 
       Auth.Login(login, pswd).then(function (data) { 
        try { 
         $localStorage.user = data; 
         User.Set($localStorage.user); 
         UtilApp.Hide(); 
         $state.go('app.feed'); 
        } catch (err) { 
         UtilApp.Hide(); 
         UtilApp.AlertShow('XXXX', 'XXXXXX'); 
        } 
       }, 
       function (data) { 
        UtilApp.Hide(); 
        if (UtilApp.CheckConnection() == "0") { 
         UtilApp.AlertShow('xxxxxxxx', 'XXXXXXXXXXX'); 
        } else { 
         UtilApp.AlertShow('XXXX', data.Message); 
        } 
       }); 

      } else { 
       UtilApp.Hide(); 
       UtilApp.AlertShow('XXXXXX', 'XXXXXXXXXXXXXXXX'); 
      } 
     }); 

    }; 

    setTimeout($scope.checkUser(), 10000); 

}); 

預先感謝您

回答

0

我發現在一些設備上的錯誤,該設備沒有「準備好了」,並給除了及時獲得認證的uuid 。

解決方案:檢查設備準備就緒。 Ionic:

controller('MyCtrl', function($scope, Platform) { 
    Platform.ready(function() { 
    // Platform stuff here. 
    }); 
}); 
相關問題