Как известно, iOS 10 представил инфраструктуру UNUserNotifications
для обработки как локальных, так и удаленных уведомлений. Используя эту структуру, вы можете установить делегат для обнаружения, когда уведомление представлено или используется.
[UNUserNotificationCenter currentNotificationCenter].delegate = yourDelegate;
...
// In your delegate ...
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
// Notification arrived while the app was in foreground
completionHandler(UNNotificationPresentationOptionAlert);
// This argument will make the notification appear in foreground
}
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
withCompletionHandler:(void (^)())completionHandler {
// Notification was tapped.
completionHandler();
}
Теперь, если вы все еще хотите использовать старый (устаревшее) application:didReceiveLocalNotification
и application:didReceiveRemoteNotification:fetchCompletionHandler
, решение просто: не установлен какой-либо делегат в UNUserNotificationCenter
,
Обратите внимание, что молчаливые удаленные уведомления (те, которые содержат ключ content-available
и не alert
, sound
или badge
) всегда обрабатываются application:didReceiveRemoteNotification:fetchCompletionHandler
, даже если вы установили делегат.
Возможный дубликат [UILocalNotification устарел в iOS10] (http://stackoverflow.com/questions/37938771/uilocalnotification-is-deprecated-in-ios10) – pedrouan
@pedrouan: Я уже пробовал решение, данное в http: //stackoverflow.com/questions/37938771/uilocalnotification-is-deprecated-in-ios10. Но это не работает. – user1947894
У меня такая же проблема с didReceiveLocalNotification прекратил стрельбу в iOS 10.0 и 10.1 GA. Похоже, он не просто устарел, но он больше не поддерживается. – Billy