2012-06-11 2 views
26

Есть много вопросов о didRegisterForRemoteNotificationsWithDeviceToken, но они все обходят очень прямой вопрос, на который я не могу найти точный ответ.Когда это сделаноRegisterForRemoteNotificationsWithDeviceToken называется?

Для приложения, которое правильно настроено для уведомлений всеми другими способами и имеет надлежащее сетевое подключение: когда сделаноRegisterForRemoteNotificationsWithDeviceToken называется? Некоторые из возможных вариантов может быть:

  1. Каждый раз, когда приложение запускается
  2. только после первоначального запроса пользователю принимать уведомления толчка
  3. что-то еще?

ответ

24

Делегат приложение вызывает метод после успешной регистрации удаленного уведомления после того, как вы вызываете этот метод в UIApplication:

(void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

По: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html

When you send this message, the device initiates the registration process with Apple Push Service. If it succeeds, the application delegate receives a device token in the application:didRegisterForRemoteNotificationsWithDeviceToken: method; if registration doesn’t succeed, the delegate is informed via the application:didFailToRegisterForRemoteNotificationsWithError: method. If the application delegate receives a device token, it should connect with its provider and pass it the token.

Теперь, для дальнейшей разработки, обычно приложение будет называть registerForRemoteNotificationTypes в вашем doneFinishLaunchingWithOptions: (NSDictionary *) launchOptions в делегате приложения. И поэтому приложение : didRegisterForRemoteNotificationsWithDeviceToken обычно называют моментами после запуска приложения.

Редактировать: Приложение: didRegisterForRemoteNotificationsWithDeviceToken по-прежнему вызывается для регистрации последовательностей после первого.

+1

Мы обнаружили, что, как представляется, ошибка IOS (как в ст. 6), в котором операционная система покажет вам, что пользователь отказался от всех уведомлений, даже если это не правда. Это происходит только при первом запуске: если вы вызываете [[UIApplication sharedApplication] enabledRemoteNotificationTypes] в файле didRegisterForRemote ..., он говорит, что все они отключены. Это не так, и если вы отправите push-уведомление, приложение получит его.И последующие запуски вернут правильный результат; проблема в том, что большинство приложений работают в фоновом режиме, поэтому вы не знаете, когда или произойдет второй запуск. – Oscar

+2

Вы уверены, что didRegisterForRemoteNotifications вызывается, даже если вы уже зарегистрировались? Я пытаюсь реализовать push-уведомление в своем приложении, и registerForRemoteNotifications работал красиво в первый раз, но теперь ни последующие обратные вызовы успеха, ни неудачи не выполняются при последующих попытках. – Bryan

+0

@ Брайан: как вы это исправите? – jAckOdE

8

Когда приложение запускается в первый раз, оно спросит пользователя, смогут ли они удалять уведомления. Если они скажут «да», тогда он будет запускать didRegisterForRemoteNotificationsWithDeviceToken в это время и каждый раз после запуска этой функции при первом открытии приложения. Если они скажут «нет», то они не будут уволены, если они не войдут в настройки и не будут уведомлены о приложении.

0

Там может быть много причин, проверить некоторые причины

  • Если запустить приложение в симуляторе, то применения: didFailToRegisterForRemoteNotificationsWithError: метод будет называться уведомлением толчка не поддерживается в тренажере ,

  • Проверьте соединение вашего интернет-соединения, если оно не подключено.

Для получения дополнительной информации ознакомьтесь Link

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