【问题标题】:Not receiving FCM messages when app is killed and in Optimised battery mode| OnePlus 5t |OnePlus 6 | Error broadcast intent callback: result=CANCELLED应用程序被杀死并处于优化电池模式时未收到 FCM 消息|一加 5t |一加 6 |错误广播意图回调:result=CANCELLED
【发布时间】:2018-09-10 17:38:39
【问题描述】:

我正在尝试将 FCM 消息发送到我的设备。当应用程序处于后台或前台时,我会正确接收它们。但是,当我的应用程序被终止时,即从最近的应用程序中删除时,如果它处于默认的“优化”电池使用模式,我不会收到通知。当我将应用的电池模式设置为“未优化”时,即使应用被终止,我也能正确收到通知。

是的,我尝试发送具有“高”优先级的 FCM 消息和 FCM 通知,但接收消息时的 logcat 显示:

Error broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.flagg327.guicomaipu (has extras) }

我设备上的所有其他应用程序(WhatsApp、Facebook 等)都处于“优化”模式,但即使它们被杀死,它们也会收到推送通知。

我已尝试安装我的应用的签名 apk 版本在后台仍然没有响应

现在我已经实现了一个基本功能

@Override
protected void onStart() {
    super.onStart();  
packageName = getApplication().getPackageName();
intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
pm = (PowerManager) 
getApplication().getSystemService(Context.POWER_SERVICE);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && 
!pm.isIgnoringBatteryOptimizations(packageName)) {

intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
    getApplication().startActivity(intent);
        }
        }

这基本上会将用户带到设置并强制他禁用优化,但这是一种不好的方法,我们如何以编程方式解决这个问题。

我使用的是 OnePlus 5T (Android 8.1.0)。谁能解释为什么我的应用会发生这种情况?以及如何将我的应用添加到白名单

can this be implemented 这是我的数据负载代码

JSONObject root = new JSONObject();

                    JSONObject data = new JSONObject();

                    data.put("type", type);
                    data.put("message", message);
                    data.put("id", pNumber);
                    data.put("count",count);
                    JSONObject android = new JSONObject();
                    android.put("priority","high");
                    root.put("android",android);
                    root.put("data", data);
                    root.put("to", "/topics/"+recipients);



                    String result = postToFCM(root.toString());

任何帮助将不胜感激......

【问题讨论】:

  • OOS 在通知方面非常激进,以至于许多人只需安装 LineageOS 即可避免它。
  • 类似但可能有帮助的post
  • 不,我已经尝试了上面帖子中提到的所有解决方案对我不起作用:(

标签: android push-notification background firebase-cloud-messaging android-8.0-oreo


【解决方案1】:

这里有一个解决您问题的方法。

  1. 转到手机的设置。

  2. 点击应用,然后点击应用列表。

  3. 向下滚动找到your app并点击它。

  4. 点击通知并确保它已启用。

  5. 在同一屏幕中,点击电池。

  6. 点击电池优化。

  7. 向下滚动找到your app并点击它。

  8. 选择不优化并点击完成。

【讨论】:

  • 抱歉寻找程序化方法请回答保持开发人员的观点。
  • 没有编程方式可以做到这一点
  • 我可以将应用程序列入白名单,这样即使优化后它也可以像whatsapp一样在后台运行?
  • 警报管理器会在每个周期间隔内触发,但是,我正在寻找异步方法,即每当通知到达时都需要实时处理
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
相关资源
最近更新 更多