Как я могу получить доступ к моим данным в PKPushPayload?
XCode 7, Swift 2. (даже не говорите об этом, это не мой любимый набор ограничений)
Поэтому я отправляю данные, используя node-apn (большое спасибо этим людям!). Я использую (опция pushkit) *.voip
тема, и я получил все это работает. Я вижу, что уведомление получено на моем устройстве (большое спасибо libimobiledevice).
При составлении заметки на моем сервере я делаю
var note = new apn.Notification();
note.topic = 'mine.voip';
note.payload = {
message: 'text',
somethingElse: 'this other one '
payload: {
k1: v1,
k2: {
k3: v2
}
}
};
Как мне добраться до моего полезного объекта? После некоторых (сторонних) примеров pushkit (возможно, это был 1?), Который показал как
func pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!) {
let payloadDict = payload.dictionaryPayload["aps"] as? Dictionary<String, String>
let message = payloadDict?["alert"]
}
Я пытался имитировать это как
let myWeirdPayload = payload.dictionaryPayload["payload"] as? Dictionary<String, String>
или даже
let myWeirdPayload = payload.dictionaryPayload["payload"] as? Dictionary<String, Any>
но те не работают (я получаю nil
).
Как я должен это сделать?
2 ответа
Вот как я могу войти в Obj-C:
NSLog(@"pushRegistry:didReceiveIncomingPushWithPayload:forType:withCompletionHandler:%@",
payload.dictionaryPayload);
Позвольте мне попытаться прояснить это, объяснив связь между и его свойством с данными, которые вы ищете.
Для
func pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!)
у вас есть аргумент, который является
PKPushPayload
.
Данные, которые вы ищете, хранятся в
_dictionaryPayload
который является
NSDictionary
и это свойство
payload
аргумент.
Итак, чтобы получить доступ к данным, вы можете сделать:
let payloadDictionary = payload.dictionaryPayload as NSDictionary
let myData = payloadDictionary.value(forKey: "myData_unique_key")