为什么从Firebase控制台发送的通知能够绕过android后台任务限制? -react-native-firebase-

问题描述

我试图找到一种方法,将通知发送到限制后台应用活动的android设备,其中大多数是华为和Oppo等中国品牌。

奇怪的是,只有从Firebase控制台发送通知时,我才能收到通知。

这是我在应用中编写通知的方式:

const notification = new firebase.notifications.Notification()
            .setNotificationId(notificationId)
            .setTitle('some title')
            .setBody('body')
            .setData({
              screen: 'AroundMe',})
            .setSound('default')
            .android.setChannelId('fcm_default_channel')
            .android.setSmallIcon('ic_launcher')
            .android.setPriority(firebase.notifications.Android.Priority.Max)
            .android.setVisibility(
              firebase.notifications.Android.Visibility.Public,)
            .android.setAutoCancel(true)
          firebase.notifications().scheduleNotification(notification,{
            fireDate: d.getTime(),});

我知道该应用可以在电话设置中得到授权,因此它可以在后台接收通知,但是为什么可以显示从Firebase控制台发送的应用呢?

谢谢!

解决方法

我认为

的答案

为什么从Firebase控制台发送的通知能够绕过android后台任务限制?

与android中的推送通知机制有关, 看到这个:

How does push notification technology work on Android?

在此线程中,进行了概述和描述,这是因为保持与GCM的一个套接字连接保持活动状态,该连接可获取通知。 当然,您可以使用其他推送通知服务,例如onesignalflurry等,但是机制相同。

您是否勾选了它们,却无法显示通知?

就我而言,即使是在中国品牌上,该机制也可以很好地与这些服务配合使用。

,

根据“频繁”和“稀有”存储桶中的https://developer.android.com/topic/performance/power/power-details个应用程序,每天分别只能接收10条和5条FCM消息。您可以使用ADB命令更改应用程序待机模式。

设置应用备用存储桶(将任何一个设置为活动到稀有):

$ adb shell am set-standby-bucket [packagename] active|working_set|frequent|rare

获取当前存储桶:

$ adb shell am get-standby-bucket [packagename]

(请注意,“有效”的值为10,“工作集”的值为20,“频繁”的值为30,“稀有”为40)

将应用存储桶设置为罕见/频繁后,请尝试发送超过相应存储桶限制的FCM通知。

提示:发送通知后请勿拉动通知抽屉-它会更改应用程序的待机状态。并在整个测试过程中确保所需的应用程序备用存储桶状态得以维持(相同)。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...