我正在使用FCM推送通知在后台模式下启动服务,但应用程序在杀死应用程序后不会收到任何通知。在其他设备中,它工作正常。
当我手动启用自动启动时,它将正常工作。 但是如果没有启用自动启动,它将无法正常工作。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Intent intent = new Intent(ACTION_MAIN);
intent.setClass(this, LinphoneService.class);
intent.putExtra("PushNotification", true);
startForegroundService(intent);
} else {
Intent intent = new Intent(ACTION_MAIN);
intent.setClass(this, LinphoneService.class);
intent.putExtra("PushNotification", true);
startService(intent);
}
每当应用在所有设备中收到 Firebase 推送通知时,我都需要启动我的服务,而无需启用自动启动功能。
(1(vivo和其他中国OEM(小米,Oppo,Mi(限制后台任务。 - 特别适用于安卓9及以上。
截至目前,启用自动启动是唯一的选择。 您可以提示用户自动启动权限,将他带到设置页面并请求他启用自动启动。 检查这个SO答案。
(2( 忽略电池优化的系统对话框
在此处检查安全问题:默认情况下,棉花糖以上的所有应用程序都启用了电池优化。
https://commonsware.com/blog/2015/11/11/google-anti-trust-issues.html
你可能希望提示用户禁用电池优化,让应用在后台执行你的任务