2011-12-24 3 views
10

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

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

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

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

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

ответ

7

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

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

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

+0

Я попытался удалить приложение с устройства без каких-либо успехов. Приложение не находится в Центре уведомлений. Кроме того, 'didRegisterForRemoteNotificationsWithDeviceToken' или' didFailToRegisterForRemoteNotificationsWithError' никогда не вызывается. – dhrm

+0

Вы установили правильный идентификатор пакета? Вы используете идентификатор приложения подстановочного знака? – YuAo

+3

Спасибо за ваш ответ. Проблема заключалась в том, что мне пришлось повторно генерировать профиль Provisioning Profile после того, как я включил Push-уведомления для сертификата. – dhrm

3

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

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

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

+0

Тот же учебник, тот же выпуск. Я запускаю сборку Debug, привязанную к устройству, и у меня есть подпись подписи ... Когда вы говорите: «Я только разрешил« Производство »push-уведомления для моего приложения», не могли бы вы рассказать о том, что это значит? –

1

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

- (void)registerForRemoteNotifications NS_AVAILABLE_IOS(8_0); 

Calling это приведет либо application:didRegisterForRemoteNotificationsWithDeviceToken: или application:didFailToRegisterForRemoteNotificationsWithError: называться на делегата приложения.

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

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