Возможно, вы путаете понятие регистрации и получения уведомлений.Приложение не может получить push-уведомление до первого вызова метода registerForRemoteNotificationTypes:
, поскольку этот метод предоставляет push-токен, который используется для отправки push-уведомлений.
Итак,Вы должны говорить о получении уведомлений в двух отдельных ситуациях, в которых они могут быть доставлены: при первом запуске приложения и во время выполнения программы.
Для обработки уведомлений первого типа необходимопроверить словарь options
, отправленный на application:didFinishLaunchingWithOptions:
.В следующем коде показано, как перенаправить уведомление, полученное при запуске, на метод делегата, который вызывается при получении push-уведомления, когда приложение уже запущено.
Поместите это в переопределение application:didFinishLaunchingWithOptions:
:
NSDictionary *pushNotificationPayload = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(pushNotificationPayload) {
[self application:application didReceiveRemoteNotification:pushNotificationPayload];
}