2016-09-02 2 views
4

Я планирую местные уведомления. Он работает в IOS 9.x, но с тех пор прошивка 10didReceiveLocalNotification не получает вызов после использования UNUserNotificationCenter

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 

не дозвонился, когда приложение работает на прошивке 10.

Я знаю, что IOS представила новый UserNotifications рамки, но это не должно остановить работающих API IOS 9.

Как решить эту проблему?

+0

Возможный дубликат [UILocalNotification устарел в iOS10] (http://stackoverflow.com/questions/37938771/uilocalnotification-is-deprecated-in-ios10) – pedrouan

+0

@pedrouan: Я уже пробовал решение, данное в http: //stackoverflow.com/questions/37938771/uilocalnotification-is-deprecated-in-ios10. Но это не работает. – user1947894

+0

У меня такая же проблема с didReceiveLocalNotification прекратил стрельбу в iOS 10.0 и 10.1 GA. Похоже, он не просто устарел, но он больше не поддерживается. – Billy

ответ

3

Как известно, 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, даже если вы установили делегат.

+0

Я попробую и дам вам знать, работает ли это или нет. Спасибо. – user1947894

Смежные вопросы