Я хочу протестировать уведомления в симуляторе 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
}
}