Тестирование тихих уведомлений pu sh в бета-версии Xcode11.4 - PullRequest
4 голосов
/ 12 февраля 2020

Я хочу протестировать уведомления в симуляторе Xcode 11.4, и все работает хорошо, кроме тихих уведомлений. didReceiveRemoteNotification не вызывается.

Что я сделал:

Включено Pu sh Уведомления в фоновом режиме / Удаленные уведомления в возможностях

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { granted, _ in
        if granted {
            DispatchQueue.main.async {
                UIApplication.shared.registerForRemoteNotifications()
            }
        }
    }
    return true
}

В didReceiveRemoteNotification I просто установите значение в UserDefaults, чтобы использовать его позже

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    print(userInfo)
    UserDefaults.standard.set("Hello world", forKey: "hello")
    completionHandler(.newData)
}

А затем в sceneDidBecomeActive что читать это значение из UserDefaults

    func sceneDidBecomeActive(_ scene: UIScene) {
    print(UserDefaults.standard.value(forKey: "hello")) // always nil
}

Это мои .apns json

{
"Simulator Target Bundle": "xxx",
 "aps" : {
    "content-available" : 1
 }
}

Ответы [ 2 ]

4 голосов
/ 02 апреля 2020

Похоже, что, вероятно, из-за ошибки (которая, как я полагаю, сообщалось), файл apns приводит к вызову performFetchWithCompletionHandler, а не didReceiveRemoteNotification.

1 голос
/ 08 апреля 2020

Решение Джеффа работало на меня, кроме того, мне пришлось добавить режим 'Background Fetch' в приложение

Enable Background Fetch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...