推送通知不会在 Android 上弹出

Posted

技术标签:

【中文标题】推送通知不会在 Android 上弹出【英文标题】:Push notification doesn't pop up on Android 【发布时间】:2021-03-08 20:09:05 【问题描述】:

我正在创建使用 FCM 发送推送通知的颤振应用程序。我通过向设备发送 JSON 来从网站发送带有 Cloud Functions 的通知。然而,这在 ios 上完美运行(弹出通知)在 android 上我得到声音并且通知只出现在状态栏中。关于如何让它弹出的任何建议?

这是我发送的 JSON:


    "message":
        "token" : result,
        "notification" : 
            "body" : body,
            "title" : title,
        ,
        "data": 
            "body": body,
            "title": title
        ,
        "apns": 
            "headers": 
                'apns-priority': '10',
            ,
            "payload": 
                "aps": 
                    "sound": 'default',
                
            ,
        ,
        "android": 
            "priority": 'high',
            "notification": 
                "sound": 'default',
            
        ,
    

【问题讨论】:

能否分享您编写的云函数并指出您是如何发送推送通知的?请分享最少的可重复步骤,以更好地帮助您。另外请查看以下Firebase Official Documentation 以向多个设备发送消息。 【参考方案1】:

您正确设置了“优先级”:“高”,但我认为这可能是 FCM 降低优先级的情况。这是来自FCM Documentation:

高优先级消息通常会导致用户与您的应用或其通知进行交互。如果 FCM 检测到他们没有检测到的模式,您的消息可能会被取消优先级。

如果您的应用程序在前台,您可以通过将 NotificationChannel 优先级和 NotificationBuilder 中的通知优先级设置为高优先级来实现所需的行为。如果应用在前台,则通知由扩展的 FirebaseMessagingService 创建,并且可以设置优先级。

但如果应用处于后台或关闭状态,则通知由系统的通知托盘创建。

这适用于同时发送 notificationdata 对象。

可能的解决方案是仅发送data 对象(不发送notification 对象)。像这样,通知总是由 FirebaseMessagingService 创建。应用程序是在前台还是在后台或关闭。见此表this table

【讨论】:

以上是关于推送通知不会在 Android 上弹出的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 和推送通知问题

推送通知弹出 - Android

推送通知未在 Android 上显示

在显示推送通知弹出窗口时禁用点击主页按钮

反应本机推送通知(Android) - 通知不断重复并且不会停止

Android解析推送通知不会在状态栏上显示消息