значение доступа для ключа словаря в Swift - PullRequest
0 голосов
/ 30 мая 2019

У меня проблема с доступом к значению оповещения о ключе в [AnyHashable ("aps")].Я пытаюсь сохранить оповещение об уведомлении в строке, чтобы я мог выполнять дальнейшие действия, но у меня не было доступа к значению оповещения.Ребята, вы знаете, что я делаю не так?

Я новичок в стремительности и пытаюсь испачкать руки, создав собственное приложение.Я ценю вашу помощь, ребята!

func userNotificationCenter(_ center: UNUserNotificationCenter,
                              willPresent notification: UNNotification,
                              withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    let userInfo = notification.request.content.userInfo

    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    print(userInfo)

    completionHandler([.sound, .alert])
}

фактический результат:

[
    AnyHashable("gcm.message_id"): 0:1559231429586204%16146ddd16146ddd,
    AnyHashable("google.c.a.ts"): 1559231429,
    AnyHashable("aps"): {
        alert = "BBQ event on 6/15";
        sound = enabled;
    },
    AnyHashable("gcm.n.e"): 1,
    AnyHashable("google.c.a.udt"): 0,
    AnyHashable("gcm.notification.sound2"): enabled,
    AnyHashable("google.c.a.e"): 1,
    AnyHashable("google.c.a.c_id"): 5464147931275974726
]

ожидаемый результат:

"BBQ event on 6/15"

1 Ответ

0 голосов
/ 30 мая 2019

Вам необходимо сначала получить значение aps как Dictionary типа [AnyHashable:Any].Затем получите значение alert из apsDict, т.е.

if let apsDict = userInfo["aps"] as? [AnyHashable:Any] {
    if let alert = apsDict["alert"] {
        print("Alert: \(alert)")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...