Firebase云消息服务

时间:2018-07-06 10:38:07

标签: android firebase firebase-cloud-messaging

我正在使用fcm创建一个应用程序。在某些设备上可以正常工作,但在 OPPO,RED-MI 5 PRO 之类的设备上,应用终止后仍未收到消息。所以我要做的是确保每次在每台设备上都收到消息。

1 个答案:

答案 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