解析到 Firebase 增强的推送通知
Posted
技术标签:
【中文标题】解析到 Firebase 增强的推送通知【英文标题】:Parse to Firebase enhanced push notifications 【发布时间】:2017-01-23 20:33:02 【问题描述】:我正在将 Parse 迁移到 Firebase,但在使用增强型推送通知时遇到了问题。
解析数据(ios 端)是这样的:
"ast":
"alert":
"body": "body_test",
"title": "title_test",
"description": "description",
"endpoint-proposal": "https://.."
"launch-image": "https://..."
,
"sound": "chime",
...
使用 Firebase API,ast 标签是 ['notification']['body']。
如果我发送
['notification']['body'] = 'Hello'
它完美运行并生成以下推送:
"ast":
"alert": "Hello"
...
所以,问题来了,我需要在该标签中发送一个字典(警报),但我不能这样做,因为 firebase 将值设置为字符串。
python中的示例:
alert = dict()
alert['title'] = 'title'
alert['description'] = 'description'
alert['endpoint-proposal'] = 'https://..'
alert['launch-image'] = 'https://..'
fcm_payload['notification']['body'] = alert
send_push()
在 iOS 端我得到:
[AnyHashable("gcm.message_id"): 0:123456789,
AnyHashable("aps"):
alert = "\"body\": \"body\",
\"launch-image\": \"https://...\",
\"endpoint-proposal\": \"https://...\",
\"description\": \"description\",
\"title\": \"title\"";
]
始终作为字符串 :S
有没有办法将警报作为字典发送?
【问题讨论】:
【参考方案1】:notification
body
参数将始终被 FCM 视为String
。这只是行为。您需要做的是利用 data
有效负载并放入您的自定义键值对:
在 iOS 上,如果消息是通过 APNS 发送的,它代表自定义数据字段。如果通过 FCM 连接服务器发送,则在 AppDelegate application:didReceiveRemoteNotification: 中表示为键值字典。
更多细节可以在这个Receiving Messages in iOS 文档中看到。我认为对于您的情况,您只需在有效负载中同时使用 notification
和 data
参数即可。
【讨论】:
【参考方案2】:json.loads() 应该给你一个字典。
【讨论】:
已经测试过了。无论如何,它总是将值设置为字符串。以上是关于解析到 Firebase 增强的推送通知的主要内容,如果未能解决你的问题,请参考以下文章