iOS: как зарегистрироваться для push-уведомлений? - PullRequest
10 голосов
/ 24 декабря 2011

Я пытаюсь внедрить Push-уведомления для моего приложения iOS 5 по указанию Рэя Вендерлиха: http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12.

Я добавил следующее в мой didFinishLaunchingWithOptions метод в моем AppDelegate:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
    (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

При запуске приложения на моем устройстве (не на симуляторе) всплывающее окно / предупреждение, говорящее мне о том, чтобы принимать push-уведомления, не отображается.Я вставил в строку точку отладки и вижу, что registerForRemoteNotificationTypes называется.

Почему ничего не происходит?

Ответы [ 3 ]

7 голосов
/ 24 декабря 2011

Возможно, удалите ваше приложение и попробуйте снова. Этот диалог появляется только один раз. Но я не уверен, появится ли этот диалог снова при переустановке приложения.

Вы также можете перейти к настройке приложения в центр уведомлений, посмотреть, есть ли ваше приложение в списке.

Вы также можете добавить точку останова и посмотреть, выполняется ли didRegisterForRemoteNotificationsWithDeviceToken.

3 голосов
/ 15 августа 2012

У меня возникла именно эта проблема (с тем же учебным руководством, но не менее), и я обнаружил, что я подписывал код с неправильным профилем обеспечения.

В частности, я включил только «производственные» push-уведомления для своего приложения (так как я не хотел создавать сертификаты дважды и т. Д.), Но в моих настройках сборки в XCode использовалась «Разработка iPhone» в качестве «Идентификации подписи кода» по умолчанию для Release », а не« iPhone Distribution », как это и должно было быть. Похоже, что это настройка по умолчанию в моем тестовом приложении.

Надеюсь, я смогу помешать кому-то еще тратить время на ту же проблему.

1 голос
/ 10 октября 2014

В iOS 8 появился новый метод для этого.Прямо с UIApplication.h:

- (void)registerForRemoteNotifications NS_AVAILABLE_IOS(8_0);

Вызов этого приведет к вызову либо application:didRegisterForRemoteNotificationsWithDeviceToken:, либо application:didFailToRegisterForRemoteNotificationsWithError: для делегата приложения.

Примечание: эти обратные вызовы будут выполняться только в том случае, если приложение успешно зарегистрировалось для уведомлений пользователей с помощью registerUserNotificationSettings: или если оно включено для фонового обновления приложения.

...