2015-11-16 3 views
2

Документы с яблоками немного расплывчаты, когда устройство устройства может изменить. Он платит, чтобы защищать код, и проверить этот код.Есть ли способ заставить ваше устройство уведомлений iOS pushToken изменить?

Я написал свое приложение, чтобы при запуске он регистрировался для push-уведомлений и обрабатывал обратный вызов didRegisterForRemoteNotificationsWithDeviceToken.

My didRegisterForRemoteNotificationsWithDeviceToken сохраняет последний токен устройства по умолчанию пользователя, и если токен все тот же, он перемещается. Если у него нет сохраненного токена вообще или если токены не совпадают, он загружает новый токен на нашем сервере.

У меня также есть механизм, который позволяет мне называть мои тестовые устройства с человекочитаемыми именами, такими как «4s_1» «5s_1» «5s_2» и т. Д. У меня есть инструмент командной строки сервера, который принимает имя для чтения человеком, просматривает идентификатор устройства IdentifierForVendor, а затем просматривает токен устройства с помощью идентификатора. Затем он запускает уведомление о песочнице.

Кажется, что удаление приложения и его переустановка приводят к изменению идентификатора «identifierForVendor», но не deviceToken, что в точности противоположно тому, что я хотел бы провести для тестирования. Я хочу, чтобы какое-то значение никогда не менялось, чтобы однозначно идентифицировать тестовое устройство, и прочь изменить токен устройства, чтобы я мог проверить свой код.

EDIT: С момента написания этого я изменил приложение, чтобы сгенерировать его собственный UUID и сохранить его в цепочке ключей, как предложил Уэйн в его ответе.

Есть ли способ заставить Apple APN изменить токен устройства, чтобы я мог проверить свой код (как на стороне клиента, так и на стороне сервера) для обработки случая, когда токен изменяется?

ответ

2

Я так не верю.

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

Любой идентификатор, который вы сохранили в брелках, сохранится до тех пор, пока он не будет удален или не будет восстановлен из резервной копии без содержимого этой брелка.

+0

Я думал о том, чтобы идти по маршруту связки ключей. Записи Keychain определенно выживают при удалении всех приложений из определенной учетной записи разработчика? –

+0

Удаление из учетной записи разработчика? Брелок для ключей сохранился с устройства. – Wain

+0

Прохладный. Я был обеспокоен тем, что записи в приложении keychain были похожи на записи по умолчанию для пользователей по умолчанию и были очищены, когда последнее приложение из учетной записи разработчика было удалено, но они сохраняются. Спасибо за предложение. –

1

Я не уверен, если этот подход также сбрасывает маркер, но вы можете попробовать reset the permission:

Сброс Нажмите Уведомление Permissions оповещения о прошивке Первого времени толчка с поддержкой регистров приложений для толчка уведомления, iOS запрашивает у пользователя , если они хотят получать уведомления для этого приложения. Как только пользователь ответил на это предупреждение, он снова не отображается, если устройство не восстановлено или приложение не было удалено, по крайней мере, на один день.

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

Удалите свое приложение с устройства. Полностью выключите устройство, и включите его снова. Перейдите в «Настройки»> «Общие»> «Дата» &. Время и установите дату вперед в день или более. Полностью выключите устройство, и включите его снова.

Что касается смены идентификаторов устройства: вы можете установить второе приложение на свои тестовые устройства (пустое от одного и того же эмитента). Если вы переустановите свое фактическое приложение, identifierForVendor не должны меняться.

+1

Я просто попробовал шаги, которые вы набросали, и он сбрасывает флаг разрешения push-уведомления, чтобы вы получили запрос («Это приложение снова хочет отправить вам push-уведомления. OK?»), Но оно не меняет deviceToken. :( –

+1

Слишком плохо. Спасибо в любом случае за попытку попробовать. – tilo

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