Обработка удаленных уведомлений IOS, если приложение принудительно завершается - PullRequest
0 голосов
/ 24 сентября 2018

Я обрабатываю удаленное уведомление, как фрагмент кода, показанный ниже, но мне не удалось запустить приложение и перенаправить на определенные страницы, когда пользователи принудительно запускают приложение.

func userNotificationCenter(_ center: UNUserNotificationCenter,
                                didReceive response: UNNotificationResponse,
                                withCompletionHandler completionHandler: @escaping () -> Void) {


        let userInfo = response.notification.request.content.userInfo
        let page = userInfo["page"] as! String


        if page == "message"{
            NotificationCenter.default.post(name: Notification.Name(rawValue: "Messages"), object: nil) }

Я где-то здесь читал, что в appdelegate didfinishlaunchingwithoptions мы можем добавить строку:

    if let remoteNotification = launchOptions?[.remoteNotification] as?  [AnyHashable : Any] { 
}

Но я не знаю, как извлечьинформация сообщения из этого словаря

Обновлено для моего ответа на уведомление:

 4 elements
  ▿ 0 : 2 elements
    ▿ key : AnyHashable("aps")
      - value : "aps"
    ▿ value : 2 elements
      ▿ 0 : 2 elements
        - key : alert
        ▿ value : 2 elements
          ▿ 0 : 2 elements
            - key : title
            - value : New Message
          ▿ 1 : 2 elements
            - key : body
            - value : You have a new message from John 
      ▿ 1 : 2 elements
        - key : sound
        - value : default
  ▿ 1 : 2 elements
    ▿ key : AnyHashable("gcm.message_id")
      - value : "gcm.message_id"
    - value : 0:
 ▿ 2 : 2 elements
    ▿ key : AnyHashable("google.c.a.e")
      - value : "google.c.a.e"
    - value : 1
  ▿ 3 : 2 elements
    ▿ key : AnyHashable("page")
      - value : "page"
    - value : message

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вам необходимо получить доступ к словарю launchOptions из метода делегата didfinishlaunchingwithoptions, а затем получить доступ к полезной нагрузке уведомлений, как показано ниже.Попробуйте сначала войти в словарь userInfo, чтобы увидеть его содержимое, а затем получить доступ к полезной нагрузке уведомления.

var userInfo = launchOptions ["UIApplicationLaunchOptionsRemoteNotificationKey"] как?[AnyHashable: Any] var apsInfo = userInfo? ["Aps"] как?[AnyHashable: любой]

0 голосов
/ 24 сентября 2018

Просто вам нужно получить "страницу", подобную этой

if let remoteNotification = launchOptions?[.remoteNotification] as?  [AnyHashable : Any] {
            if let page = remoteNotification["page"] as? String {
                if page == "message" {

                }
            }
        }

Примечание. Пожалуйста, покажите свой ответ на уведомление, которое вы получите в приложении, если это не сработало

...