Как я могу получить доступ к моим данным в 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")
Другие вопросы по тегам