我正在使用$ firebaseAuth来控制我的应用程序的登录部分,并且我希望在用户进行身份验证时启动地理位置。
使用以下代码时,地理位置在身份验证之前启动:
.run(function($ionicPlatform, $rootScope, $location, Auth, $ionicLoading, $cordovaGeolocation, geoLocation, defautLocation) {
$ionicPlatform.ready(function() {
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleLightContent();
}
$rootScope.firebaseUrl = firebaseUrl;
$rootScope.displayName = null;
Auth.$onAuth(function (authData) {
if (authData) {
console.log("Logged in as:", authData.uid);
} else {
console.log("Logged out");
$ionicLoading.hide();
$location.path('/login');
}
})
$cordovaGeolocation
.getCurrentPosition()
.then(function (position) {
...
}, function(err) {
...
});
$cordovaGeolocation.watchPosition({
frequency: 1000,
timeout: 3000,
enableHighAccuracy: false
}).then(function () {
}, function (err) {
...
});
$rootScope.logout = function () {
console.log("Logging out from the app");
$ionicLoading.show({
template: 'Logging Out...'
});
Auth.$unauth();
}
...
我尝试换行$ cordovaGeolocation:
Auth.$requireAuth().then(function(authData) {
if (authData) {
$cordovaGeolocation
.getCurrentPosition()
.then(function (position) {
...
}, function(err){
...
});
$cordovaGeolocation.watchPosition({
frequency: 1000,
timeout: 3000,
enableHighAccuracy: false
}).then(function () {
}, function (err) {
...
});
}else{
...
}
});
但是当用户登录时没有启动地理位置,我需要重新加载。
watchPosition意味着我的功能必须在身份验证期间始终处于活动状态。
所以我的问题是,如何在身份验证成功之后执行我的地理定位功能,直到unAuth()?
(我是Angular和Firebase的新手,毫不奇怪)
很多,