我已经创建了一个离子应用程序与电容器,应该发送GPS坐标每分钟的API。这通常是可行的,但当屏幕被锁定时,它就变得麻烦了。
现在,我已经包含了cordova-background-mode,以及ForegroundService。然而,它仍然在5分钟后停止。我还使用了
this.backgroundMode.disableWebViewOptimizations();
this.backgroundMode.disableBatteryOptimizations();
但无济于事。
我甚至在设置中手动关闭了电池优化。
我忽略了什么?
如果有人需要一个解决方案,这适用于android 10 +电容器+原生背景模式:
if (this.platform.is('android')) {
this.platform.ready().then(() => {
this.backgroundMode.enable();
this.backgroundMode.setEnabled(true);
this.backgroundMode.on('activate').subscribe(() => {
this.backgroundMode.disableWebViewOptimizations();
this.backgroundMode.disableBatteryOptimizations();
});
this.backgroundMode.disableBatteryOptimizations();
});
const timer = 3 * 60 * 1000; // three minutes
setInterval(() => {
this.backgroundMode.wakeUp();
}, timer);
}
也添加在manifest:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_SERVICE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
插件坏了。我曾多次尝试让它工作,但都失败了。
我找到的唯一解决方案是使用这个代替。即使屏幕被锁定几个小时,它也能工作。