2015-03-06 3 views
0

Мне пришлось изменить поставщика APNS, и, конечно же, я сгенерировал новые сертификаты для нового провайдера.Apple Push уведомление didRegisterForRemoteNotificationsWithDeviceToken не вызывается для уже зарегистрированных устройств

Дела идут хорошо, если устройство при регистрации APNS является новым для компании Apple

Проблема происходит, когда у меня есть уже, от компании Apple точки зрения, зарегистрированное устройство, так как метод обратного вызова: - (Недействительными) приложения : (UIApplication *) application didRegisterForRemoteNotificationsWithDeviceToken: (NSData *) deviceToken

не вызывается и я не могу зарегистрировать токен у нового провайдера.

Я ищу решение, чтобы сбросить все маркера, которые компания Apple знает, таким образом каждое устройство будет управляться как новые и didRegisterForRemoteNotificationsWithDeviceToken наконец называется (с предыдущими оригинальными маркерами не имеет значения)

Может кто-нибудь сказать мне, если это возможно или как решить проблему?

Благодаря

Дарио

ответ

0

Проблема была связана с моим кодом. Этот вопрос можно удалить. Благодаря

Ответить на Sofie

Привет Sofie, это был очень старый вопрос, и я пытаюсь вспомнить.

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

Когда я получил маркер регистрации от Apple (didRegisterForRemoteNotificationsWithDevice) Я сохранения значения в UsersDefaults, используя функцию, подобную вашей handleNewDeviceToken: deviceToken

В этой функции, чтобы избежать бесполезной сетевой активности, я звоню в APN провайдер услуг - в то время UrbanAirShip - только если полученный токен отличался от токена, уже сохраненного в UserDefaults (это была моя ошибка!)

По разным причинам мне пришлось изменить поставщика услуг, переходящего из UrbanAirhip в Parse.

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

Фактически функция didRegisterForRemoteNotificationsWithDevice всегда вызывалась, конечно, только при запуске приложения ....

Я удалил сравнение токенов с userDefaults, регистрируя каждый раз токен с поставщиком услуг и перестраивая «новую» базу данных.

Я надеюсь, что было ясно и, конечно, надеюсь, что это поможет вам.

Дарио

+0

Привет, У меня аналогичная проблема (http://stackoverflow.com/questions/40359310/ios-10-didregisterforremotenotificationswithdevice-only-called-the-first-time), не могли бы вы объясняя, что вы сделали, чтобы исправить это, если вы все еще помните? Спасибо :) –

+0

Sofie Ответ в предыдущем ответе – Fulkron

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