Firebase 云消息服务

3

我正在创建一个应用程序,在其中使用了FCM。它在某些设备上运行良好,但在一些设备上(如OPPO、红米5 Pro)在应用程序关闭后无法接收消息。因此,我需要做什么才能确保每次在每个设备上都能接收到消息。


在你的 FirebaseMessagingService 中尝试使用 android:stopWithTask="false" - AskNilesh
我尝试过了,但仍然不起作用。 - kishan hadiyal
1个回答

2
在处理后台应用程序服务时,使用中国设备会出现很多问题。在原始ROM中,它的功能很好,但是当涉及到定制ROM时,由于中国设备限制应用程序在后台使用,所以存在很多问题。
因此,像WhatsApp、Facebook或其他大型公司的应用程序这样的应用程序已被这些自定义ROM列为白名单。但对于新应用程序,您可以使应用程序可以在后台访问。当您从应用程序托盘中滑动应用程序时,它将被视为强制退出。它甚至无法运行任何作业或计划任务。
您可以要求用户手动将应用程序添加到白名单中。
        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)
        }

对于技术熟练的用户,这种方法可能有效,但如果你使用这种技巧却没有得到太多结果,也不要感到惊讶。

我也曾面临过这个问题。如需详细解释,请参阅此处


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接