iOS 未收到来自 Firebase 云消息传递的通知

Posted

技术标签:

【中文标题】iOS 未收到来自 Firebase 云消息传递的通知【英文标题】:iOS not receiving notifications from Firebase Cloud Messaging 【发布时间】:2017-05-05 16:54:39 【问题描述】:

我希望推送通知仅包含标题。当我从 Firebase 控制台发送消息时,它可以工作,但是当我尝试通过 API 执行相同操作时,它不适用于 ios(在 android 上可以正常工作)。

编辑:我想要完成的是仅在应用程序未打开时显示在通知抽屉中的通知中显示标题。如果添加了正文,则会显示在通知中的标题下方。

这是我要发送的推送通知:


    "to": "/topics/breaking",
    "priority":"high",
    "notification": 
        "title":"Dette er en test"
    

我什么也得不到

如果我在通知中添加正文:


    "to": "/topics/breaking",
    "priority":"high",
    "notification": 
        "title":"Dette er en test",
        "body":"hello"
    

我得到这个作为回报


    aps = 
        alert = 
            body = Hello;
            title = "Dette er en test";
        ;
    ;
    "gcm.message_id" = "xxxxxxx";

这是打印我收到的内容的代码:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) 
    self.parseNotification(application, userInfo: userInfo as NSDictionary!)


func parseNotification(_ application: UIApplication, userInfo: NSDictionary!) 

    print(userInfo)

如何在不向请求添加正文的情况下在 iOS 上获取通知?

【问题讨论】:

解析 userInfo 时为什么不直接忽略 body? 问题是应用未打开时通知抽屉中显示的通知。它应该只包含标题。 啊。所以您的意思是顶部横幅仅在应用未打开时显示? 如果这就是你的意思,这就是 iOS 的行为。当您的应用程序处于前台/活动状态时,您必须使用自定义视图来模拟横幅行为。对于 iOS 9,您可以使用 UNUserNotifications @ZonilyJame 试过了。看起来有点奇怪。 【参考方案1】:

我想通了!

如果我删除标题并只发布正文,它会起作用。


    "to": "/topics/breaking",
    "priority":"high",
    "notification": 
        "body": "Dette er en test"
    

【讨论】:

所以如果你只发布正文。正文会成为标题本身吗? 有点。通知中的标题文本是粗体的,但我们今天使用的(在切换到 FCM 之前)显然是正文,所以它有效。 很奇怪,但它确实有效。我会记下这一点,以备将来努力【参考方案2】:

请尝试为推送通知添加证书:用于开发和生产。

【讨论】:

以上是关于iOS 未收到来自 Firebase 云消息传递的通知的主要内容,如果未能解决你的问题,请参考以下文章

使用.p8文件后未收到iOS Firebase云消息传递通知

Web 应用程序中未收到 Firebase 云消息传递通知

设备未收到Firebase云消息传递通知

Firebase 云消息传递 - iOS - 未注册或无法订阅主题

Firebase 云消息传递未在 iOS 14 上提供推送通知

设备未收到 Firebase 云消息通知