当我的应用程序已优化电池时,为什么我无法收到推送通知?

Why am I not able to recive a push notification when my app is battery optimized?

当我的应用程序电池优化后,我无法接收推送通知。是否有可能被 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);
  }
}

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