【发布时间】:2017-01-05 10:33:38
【问题描述】:
我正在使用 Firebase Cloud Messaging 在我的 Android 和 iOS 应用中发送数据负载并显示通知。我正在将它集成到我的 iOS 应用程序中,我遇到了一件奇怪的事情。
- 短篇小说:
我的通知服务器只发送数据消息(我的意思是包含“数据”字段且没有“通知”字段的 JSON 消息)。在我的 Android 应用程序中,这不是问题,因为即使我的应用程序在我的 Service 实现中处于后台并且我手动构建了我显示的通知,我也会收到消息。但在 iOS 情况下,当我的应用程序在后台执行相同操作时,我如何接收消息?我的意思是,如果我在我的请求中添加一个“通知”字段,我会在我的屏幕上看到通知弹出(当应用程序在后台时),并且当我的应用程序在时,我可以在单击后获取数据(位于“数据”字段中)前景。
但是当我的应用在后台时,我可以有数据来手动显示通知吗?
- 重要的精度:
显示通知的内容应该是在应用端而不是服务器端构建的,因为服务器没有足够的信息,这就是为什么我不能在我的有效负载消息中发送“通知”字段的原因。
谢谢
编辑:我使用this link(部分)解决了这个问题。很快,我在 Background Modes 下启用了 Background fetch 和 Remote 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