Я разрабатываю приложение для обмена сообщениями в Swift.Я настроил Firebase Cloud Messaging, и он работает, данные поступают на мой телефон.
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)
}
}
Это дает мне этоошибка в первой строке.
* Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «* + [NSJSONSerialziation dataWithJSONObject: options: error:]: недопустимая top-тип уровня в JSON напишите '
Я следовал советам по этой записи, но тоже не повезло.
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)
Невозможно привести значениетипа «__NSCFString» (0x1e0e52f90) в «NSDictionary» (0x1e0e53bc0).