我正在使用fcm创建一个应用程序。在某些设备上可以正常工作,但在 OPPO,RED-MI 5 PRO 之类的设备上,应用终止后仍未收到消息。所以我要做的是确保每次在每台设备上都收到消息。
答案 0 :(得分:4)
因此对于中文设备,在后台处理应用程序服务存在很多问题。
它在普通rom中可以正常工作,但是对于定制ROM,则存在很多问题,因为中文设备限制了应用程序只能在后台使用。
因此,这些自定义ROM将Whatsapp,Facebook等应用程序或任何大型公司应用程序列入白名单。但是对于新应用程序,您可以使其在后台访问。当您从应用程序托盘中滑动应用程序时,它将被视为强制退出。它甚至不会运行任何“预定任务”的工作。
您可以做的是, 询问用于手动将应用白名单使用,
val intent = Intent()
val manufacturer = android.os.Build.MANUFACTURER
when {
"xiaomi".equals(manufacturer, ignoreCase = true) -> intent.component = ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")
"oppo".equals(manufacturer, ignoreCase = true) -> intent.component = ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")
"vivo".equals(manufacturer, ignoreCase = true) -> intent.component = ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity")
"Letv".equals(manufacturer, ignoreCase = true) -> intent.component = ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity")
"Honor".equals(manufacturer, ignoreCase = true) -> intent.component = ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")
}
val list = applicationContext.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
if (list.size > 0) {
applicationContext.startActivity(intent)
}
对于精通技术的用户来说,它甚至可以工作,但是如果您对这项技术的了解不多,也不要感到惊讶。
我也面临这个问题。要对此进行详细说明,请参见here