如果设备空闲几分钟且没有充电状态,则未发送 Firebase 推送通知

Posted

技术标签:

【中文标题】如果设备空闲几分钟且没有充电状态,则未发送 Firebase 推送通知【英文标题】:Firebase push notification not delivered if device is idle for few minutes and no charging state 【发布时间】:2021-11-20 23:52:47 【问题描述】:

Firebase 推送通知适用于所有三种应用状态:前台、后台、已终止。

但如果设备空闲几分钟且没有充电状态,则不会发送通知。 但是,无论空闲时间多长,充电推送通知都有效。

我试过了:

    禁用“省电模式”。

    禁用“自适应省电模式”。

    应用的电池优化。

    在清单中添加

    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    

    中移除 [android:exported="false"]
    <service
         android:name="firebase.MyFirebaseMessagingService" =>[android:exported="false"]>
         <intent-filter>
                 <action android:name="com.google.firebase.MESSAGING_EVENT" />
         </intent-filter>
     </service>
    

    "registration_ids": [
        "ei0....ySI"
    ],
    "data": 
       "priority" : "high",
        "title": "msg title",
        "body": "msg body"
    ,
    "android": 
        "priority": "high"
    ,
    "apns": 
        "headers": 
            "apns-priority": "10"
        
    ,
    "webpush": 
        "headers": 
            "Urgency": "high"
        
    

【问题讨论】:

推送通知不保证即时交付 正如其描述所说,python-idle 标签用于 Python 语言的 IDLE IDE。 【参考方案1】:

"priority": "high" 移动到根目录有效。 现在有效载荷是这样的:


    "registration_ids": ["cWy......FrN"],
    "data": 
        "title": "this is msg title",
        "body": "this is msg body"
    ,
    "priority": "high"

【讨论】:

以上是关于如果设备空闲几分钟且没有充电状态,则未发送 Firebase 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如果 Android 设备长时间处于空闲状态,则不会收到推送通知

如果 (n-1)-th 有错误的令牌,则未发送第 n-th Apple 推送通知

java 心跳机制

空闲状态下的 WiFi 直接发现

如果应用程序终止,则未收到 iOS FCM 推送通知

如何设置始终显示的警报?