我有一个IONIC2应用程序,需要每天早上8点醒来20分钟,根据用户的地理位置发送用户提醒。
我正在使用此插件(使用IOS重要更改API来监控用户位置的变化) https://github.com/mauron85/cordova-plugin-background-geolocation
问题: 当我关闭应用程序时,应用程序不会被杀死,并且背景地理定位对我有用一段时间。我测试了长达一个小时。但是当我第二天早上醒来时,我发现应用程序被IOS杀死了。
我知道还有另一个插件可以让应用程序在后台运行https://github.com/katzer/cordova-plugin-background-mode,但我已经阅读了很多人抱怨它会导致你的应用被AppStore拒绝(事实上,插件也有免责声明同样的效果)。
明天唤醒应用程序,我只需设置一个setTimeout
setTimeout(function(){
console.log('waking up');
self.helper.scheduleLocalNotification('Hello World', 'Good Morning', 10, "");
self.ionViewDidEnter();
}, wakeupinMilliSeconds);
这是我的地理位置代码:
setupBackGroundGeolocation(){
let config = {
desiredAccuracy: 100,
stationaryRadius: 50,
distanceFilter: 100,
interval: 5000,
pauseLocationUpdates: false,
debug: false, // enable this hear sounds for background-geolocation life-cycle.
stopOnTerminate: false, // enable this to clear background location settings when the app terminates
};
BackgroundGeolocation.configure((location) => {
console.log('[js] BackgroundGeolocation callback: ' + location.latitude + ',' + location.longitude);
this.currentLocation.lat = location.latitude;
this.currentLocation.lng = location.longitude;
Promise.all([
//I do some calculations here.
]).then(d => {
// IMPORTANT: You must execute the finish method here to inform the native plugin that you're finished,
// and the background-task may be completed. You must do this regardless if your HTTP request is successful or not.
// IF YOU DON'T, ios will CRASH YOUR APP for spending too much time in the background.
BackgroundGeolocation.finish(); // FOR IOS ONLY
});
}, (error) => {
console.log('BackgroundGeolocation error');
}, config);
// Turn ON the background-geolocation system. The user will be tracked whenever they suspend the app.
BackgroundGeolocation.start();
}
答案 0 :(得分:0)
我没有使用此插件,但有相同的症状。我无法弄清楚出了什么问题:没有错误消息,没有线索,但是应用程序在几个小时后仍然关闭。
我想在安装和卸载这么多的cordova插件后,有些东西搞砸了。现在该应用程序更加稳定。我删除并添加了平台。这似乎完成了这项工作。
答案 1 :(得分:0)
我一直在阅读有关ionic2和性能的文章。在众多原因中,低性能和崩溃的可能性与取消订阅可观察量无关。在组件被销毁ngOnDestroy
时,阅读有关异步管道和.unsubscribe observables的信息我发现的另一个问题是在角度方面发展的一个非常基本的错误。我在app模块中加载了所有内容,因此需要大量内存才能立即加载整个应用程序。我想慢速终端会影响更多。无论如何,应该理解.module文件的基本角度概念。