当我的应用程序进行电池优化时,为啥我无法收到推送通知?

Posted

技术标签:

【中文标题】当我的应用程序进行电池优化时,为啥我无法收到推送通知?【英文标题】:Why am I not able to recive a push notification when my app is battery optimized?当我的应用程序进行电池优化时,为什么我无法收到推送通知? 【发布时间】:2019-05-15 17:33:04 【问题描述】:

当我的应用进行电池优化时,我无法接收推送通知。是否有可能被 Google 列入白名单?

过去,我使用 Firebase 发送推送通知。我认为这是 Firebase 的问题,所以我尝试使用 OneSignal,但我遇到了同样的问题。我也以高优先级发送,但在优化电池时它不起作用。

是否有可能解决这个问题,还是用户禁用电池优化的唯一方法?

如果我使用此代码,我会被禁止进入 Play 商店吗?

    if (Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1) 
  String pkg=getPackageName();
  PowerManager pm=getSystemService(PowerManager.class);

  if (!pm.isIgnoringBatteryOptimizations(pkg)) 
    Intent i=
      new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
        .setData(Uri.parse("package:"+pkg));

    startActivity(i);
  

【问题讨论】:

当the app is not in the working set 时,我只看到在 API 28 设备上延迟接收高优先级 FCM 消息。您在什么设备类型和 API 级别上观察到这种行为? 我使用的是带有 API 28 的 OnePlus 6T,但我在其他手机和不同的 API 上也遇到了这些问题。 你找到解决办法了吗?我也面临类似的问题! 不,我还没有找到解决办法。 【参考方案1】:

很遗憾,这是一个已知问题。最近,大多数移动制造公司使用他们自己的 android 修改版本实际上停止了大多数(如果不是全部)在后台运行的服务以节省电池。据我所知,您只能做一件事,就是很好地提示用户将您的应用列入白名单,这样即使在省电模式下也可以毫无障碍地运行。

【讨论】:

好的,我用一些代码更新了这个问题。我应该用我发布的代码来做吗? 是的,如果这可行并且只是向用户提出请求,那么绝对可以!所有的力量给你! 我会尽快尝试。

以上是关于当我的应用程序进行电池优化时,为啥我无法收到推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

当我连接到我的 Wifi 时,在 Android 上没有收到推送通知

为啥我的 iOS 应用程序在收到推送通知时会崩溃?

为啥我的 Android 应用程序偶尔会非常快地耗尽电池电量?

Parse.com 推送服务电池影响

为啥当我推送我的应用程序时我的 cli 会出错? [复制]

为啥我不能在 Swift5 中读取推送消息数据?