android firebase后台通知仅在vivo设备上不起作用

Posted

技术标签:

【中文标题】android firebase后台通知仅在vivo设备上不起作用【英文标题】:android firebase background notification not working on only vivo device 【发布时间】:2020-01-09 04:23:22 【问题描述】:

我在后台模式下使用 FCM 推送通知启动服务,但应用程序在终止应用程序后不会收到任何通知。而且我只在vivo设备中遇到了这个问题。在其他设备上,它工作正常。

当我手动启用自动启动时,它会正常工作。但如果没有启用自动启动,它将无法正常工作。

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】:

(1) Vivo 和其他中国 OEM(小米、Oppo、Mi)限制后台任务。 - 特别适用于 android 9 及更高版本。

到目前为止,启用自动启动是唯一的选择。 您可以提示用户自动启动权限,将他带到设置页面并要求他启用自动启动。 检查此 SO answer。

(2) 忽略battery optimisation的系统对话框

在此处检查安全问题:默认情况下,所有高于 marshmallow 的应用都启用电池优化。

https://commonsware.com/blog/2015/11/11/google-anti-trust-issues.html

您可能希望提示用户禁用电池优化,让应用在后台执行您的任务

【讨论】:

我已在所有 OEM 的期望 vivo 中管理后台任务,但未启用自动启动。我的后台服务在没有启用自动启动的 oppo、小米设备上运行良好。但只是在vivo设备中出现问题,因为我在仅vivo设备中杀死应用程序后没有收到firebase推送通知。

以上是关于android firebase后台通知仅在vivo设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 推送通知仅在应用程序处于后台时有效

仅在应用程序处于后台时隐藏 APN 通知?

单击通知行为仅在应用程序在后台运行时才有效?

当app在前台时发送推送通知

android在后台处理大图片firebase通知

为啥从 firebase 控制台发送的通知能够绕过 android 后台任务限制? - 反应原生火力基地 -