- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在快速开发一个消息传递应用程序。我配置了 Firebase 云消息传递,它可以正常工作,数据到达我的手机。
func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
print(remoteMessage.appData)
}
问题是,我不知道如何提取每个值。这是我从服务器收到的输出示例。
[AnyHashable("message"): {"chat":{"msg":"hey","file":null,"to":"username","date":"2019\/03\/06 08:17:42","group":"TESTING","from":"User Real Name","res":"1"}}, AnyHashable("from"): 123123123]
我试过将它作为 JSON 读取,但它不起作用。
let data = try? JSONSerialization.data(withJSONObject: remoteMessage.appData["message"]
if let messageJSON = try? JSONSerialization.jsonObject(with: data!) as? [String : Any] {
print(messageJSON
if let chatJSON = messageJSON["chat"] as? [String : Any] {
print(chatJSON)
}
}
它在第一行给我这个错误。
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* +[NSJSONSerialziation dataWithJSONObject:options:error:]: Invalid top-level type in JSON write'
我遵循了 this 上的建议发布,但也不走运。
let d: [String : Any] = remoteMessage.appData["message"] as! [String : Any]
let body: [String : Any] = d["chat"] as! [String : Any]
let msg: String = body["msg"] as! String
print(msg)
Could not cast value of type '__NSCFString' (0x1e0e52f90) to 'NSDictionary' (0x1e0e53bc0).
最佳答案
你需要
do {
let d = remoteMessage.appData["message"] as! String
let res = try JSONDecoder().decode(Root.self,from:Data(d.utf8))
print(res)
}
catch {
print(error)
}
struct Root: Codable {
let chat: Chat
}
struct Chat: Codable {
let msg: String
let file: String?
let to, date, group, from: String
let res: String
}
因为 message
键包含一个 json 字符串而不是字典
关于json - 从 Firebase remoteMessage 中的嵌套 JSON 中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55020536/
这个问题在这里已经有了答案: Firebase onMessageReceived not called when app in background (30 个答案) 关闭 6 年前。 在 Fir
我在我的应用程序中实现了 Firebase 云消息传递,并且在使用 Firebase 控制台时,我在 Android 和 iOS 中的应用程序收到了我的通知。但是因为我想每天推送通知,所以我创建了一个
这个问题在这里已经有了答案: Cannot resolve symbol com.google.firebase.messaging.Message (1 个回答) 关闭 3 年前。 有人问过类似的
在我的项目中,我需要从服务器向客户端发送通知。我可以从 FCM 控制台发送通知,但是当我从服务器向客户端发送通知时,remoteMessage.getNotification() 总是返回 null。
因此,我一直在此处和其他地方阅读有关此主题的其他帖子,但我仍在挣扎。我的应用正在使用 “Fireabase FCM” 执行设备到设备的通知。我能够发送和接收消息。然而,方法“didReceive Re
public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService
我正在快速开发一个消息传递应用程序。我配置了 Firebase 云消息传递,它可以正常工作,数据到达我的手机。 func messaging(_ messaging: Messaging, didRe
我按照 GoogleSamples https://github.com/googlesamples/android-NotificationChannels 在 Android 应用程序中注册了通知
我已将 gcm 迁移到 fcm 以获取推送通知消息。但是我如何从收到的 RemoteMessage 中获取 bundle 数据的 onMesssageReceived 方法。 Old GCM give
为什么 remoteMessage.getData() 在我的通知类中变为空?不知道问题出在哪里,请帮帮我!! Bundle[ { google.sent_time=14727
我在 firebase 中使用通知编辑器通过自定义数据发送以下键值对: type : 555 我没有在通知编辑器中将双引号 "" 放在 type 和 555 周围。所以在 key 的地方我写了 ty
我正在测试 Firebase 云消息传递。 如果我使用 Firebase 控制台发送消息 - 在我的代码中我设置了值的通知对象 - 不是问题: public override void OnMessa
我的 firbase RemoteMessage 有一个包含 12 个键值对的 mBundle,根据调试器,这些字段已填充 . 但是当我说:remoteMessage.getData();生成的 Ar
我正在使用 react-native-firebase v6.4.0。我成功注册了一个后台处理程序 setBackgroundMessageHandler一切正常。现在我正在尝试在应用程序处于后台/退
通过这个形状: { "to": "000", "priority": "high", "data": { "title": "A Title", "message": "A
我正在尝试解析 FCM 中的通知数据。我会尽可能详细地解释我的问题。我有两个应用程序,一个是 android,另一个是 javascript webapp。因此,当从 webapp 向 androd
我是一名优秀的程序员,十分优秀!