【问题标题】:FCM differences between Android and iOS about data messagesAndroid和iOS关于数据消息的FCM差异
【发布时间】:2017-01-05 10:33:38
【问题描述】:

我正在使用 Firebase Cloud Messaging 在我的 Android 和 iOS 应用中发送数据负载并显示通知。我正在将它集成到我的 iOS 应用程序中,我遇到了一件奇怪的事情。

  • 短篇小说:

我的通知服务器只发送数据消息(我的意思是包含“数据”字段且没有“通知”字段的 JSON 消息)。在我的 Android 应用程序中,这不是问题,因为即使我的应用程序在我的 Service 实现中处于后台并且我手动构建了我显示的通知,我也会收到消息。但在 iOS 情况下,当我的应用程序在后台执行相同操作时,我如何接收消息?我的意思是,如果我在我的请求中添加一个“通知”字段,我会在我的屏幕上看到通知弹出(当应用程序在后台时),并且当我的应用程序在时,我可以在单击后获取数据(位于“数据”字段中)前景。

但是当我的应用在后台时,我可以有数据来手动显示通知吗?

  • 重要的精度:

显示通知的内容应该是在应用端而不是服务器端构建的,因为服务器没有足够的信息,这就是为什么我不能在我的有效负载消息中发送“通知”字段的原因。

谢谢

编辑:我使用this link(部分)解决了这个问题。很快,我在 Background Modes 下启用了 Background fetchRemote Notification(并在有效负载中添加了content_available : true)。然后我可以处理在didReceiveRemoteNotification: 收到的数据但现在还有一件事:当我的应用程序被杀死时如何使它工作?

编辑 2: 我发现了可能是这样的东西:that。修改远程通知的有效负载意味着在显示之前处理传入的通知。我试试看。

EDIT 3:Firebase 不支持使我在 EDIT 2 找到的解决方案正常工作所需的 mutable-content 键。对此的讨论是here。所以...有什么想法吗?

【问题讨论】:

  • 嗨,FCM 现在确实支持可变内容键。如果您将 FCM 请求中的 mutable_content 字段设置为 true。在 iOS 10+ 上,您将能够在通知消息呈现给用户之前拦截它们。
  • 感谢您的工作和信息。但是为什么这个版本花了这么长时间(自 iOS10 发布以来)?

标签: android ios firebase push-notification firebase-cloud-messaging


【解决方案1】:

我认为在 iOS 上触发“库存”通知的方式与在 Android 上使用 NotificationBuilder 的方式相同。

唯一可用的选项是将混合消息与通知和数据负载一起使用。

查看他们的doc,了解有关混合消息的更多信息。

【讨论】:

  • 实际上,混合消息的问题在于显示的通知是在服务器端构建的。我希望它是构建客户端(应用程序)端...
  • 我编辑了我的帖子。它仍然不起作用的一种情况:当我的应用程序被杀死(内存不足)时
【解决方案2】:

2014 年 2 月 16 日,Firebase 增加了对“可变内容”键的合规性。这样就解决了我的问题,我想也解决了很多人的问题。

个人想法:

我认为这个功能延迟 6 个月真的太多了。我希望未来的版本能够与 iOS(以及 Android)版本保持同步。

【讨论】:

    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 2021-10-30
    相关资源
    最近更新 更多