IOS; Push-уведомление не работает, когда приложение не работает или в фоновом режиме

У меня проблема с обнаружением push-уведомления от APNS.

Если из APNS есть push-уведомление, когда приложение не работает или находится в фоновом режиме,

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 

не работает.

И когда я вернусь на передний план, не выбрав push-уведомление из центра уведомлений, это не работает.

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

Я тестирую приложение в iOS 6.13 и iOS 7.0.4.

Спасибо за вашу помощь. 🙂

Из документации Apple:

Внедрите этот метод, если ваше приложение поддерживает фоновый режим удаленного уведомления.

Это означает, что метод, который вы используете, фокусируется на фоновой задаче. И доступно только после iOS 7.0.

Я рекомендую вам использовать application:didReceiveRemoteNotification:

Из документации Apple:

Если приложение запущено и получает удаленное уведомление, приложение вызывает этот метод для обработки уведомления.

На самом деле, первым получателем уведомлений является система, а не ваше приложение.

Если ваше приложение не находится на переднем плане, приложение application:didReceiveRemoteNotification:fetchCompletionHandler никогда не будет вызываться до тех пор, пока вы не application:didReceiveRemoteNotification:fetchCompletionHandler уведомления, чтобы ваше приложение снова стало на переднем плане.

Когда приходит push-уведомление, и пользователь нажимает « cancel », your app has no way to read that push notification again . Вы должны реализовать отдельную функциональность (скорее всего, на server-side ), чтобы получить список уведомлений, отправленных на это устройство.