Идентификатор устройства ios 7 отличается для того же устройства

У меня есть два приложения на одном устройстве. Для iOS 7 оба приложения отправляют разные токены устройства, но для iOS 6 оба приложения отправляют один и тот же токен устройства.

В соответствии с моим пониманием маркер устройства должен быть одинаковым для всех приложений на одном устройстве. В iOS7 есть что-то другое, чем iOS 6?

Ответ 1

UPDATE:

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

Основываясь на вашем описании, я бы предположил, что произошли коренные изменения в генерации маркеров между iOS6 и iOS7. Чтобы более внимательно изучить это поведение, я рекомендую вам взглянуть на Руководство по программированию локальных и push-уведомлений. В Руководстве в разделе "Планирование, регистрация и обработка уведомлений" вы найдете это выражение от Apple.

Идентификаторы устройства могут меняться. Ваше приложение должно перерегистрироваться каждый раз запускается в iOS, вызывая registerForRemoteNotificationTypes: метод UIApplication, а в OS X - путем вызова registerForRemoteNotificationTypes: метод NSApplication. Параметр, переданный этому методу, определяет начальные типы уведомления, которые приложение хочет получить. Пользователи могут изменять разрешенные типы уведомлений в любой точке, используя настройки в iOS или Системные настройки в OS X. Вы можете запросить включенную в данный момент типов уведомлений с использованием свойства enabledRemoteNotificationTypes UIApplication или свойство enabledRemoteNotificationTypes NSApplication. Система не значки значков, отображение предупреждений сообщения или звуковые сигналы воспроизведения, если какой-либо из этих типов уведомлений не включены для вашего приложения, даже если они указаны в полезная нагрузка уведомлений.

Справка:

Apple использует токены устройств, когда пользователи соглашаются получать удаленные уведомления от Apple Push Service.

Обычно маркер устройства получает доступ к следующему методу:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

deviceToken Токен, который идентифицирует устройство для APS. Токен - непрозрачные данные потому что это форма, которую поставщик должен представить в APS, когда он отправляет уведомление устройству. Серверы APS требуется двоичный формат по соображениям производительности.

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

Device Tokens Used in the Apple Push Notification Service

Существуют также значительные изменения в идентификаторе UIDevice (использование Apple ограничено). Я бы предложил следующее:

Ответ 2

Этот был также полезен. Пожалуйста, см. пункт 1 в этой статье: https://support.urbanairship.com/customer/portal/articles/1321513-how-ios-7-handles-push-differently

"До iOS 7 токен устройства был одинаковым во всех установках приложений на данном устройстве. Различные приложения на вашем телефоне, будь то Tap Tap Revenge или USA Today, будут использовать один и тот же адрес, то есть маркер устройства, для отправьте уведомление push для вас. Учетные данные безопасности, которые вы связываете с сообщением, обеспечили бы его правильное приложение. На iOS 7 Apple сделала еще один шаг и убедилась, что токены устройств теперь различны в каждом одна установка приложения. Это помогает защитить конфиденциальность пользователей, удалив другой идентификатор на уровне телефона.

Ответ 3

Хотя это очень поздний ответ, я хочу поделиться своим тестом, сделанным для i0S 9.2.1. Маркер устройства уникален для каждого приложения на устройстве. Новый токен устройства будет генерироваться каждый раз, когда мы устанавливаем приложение. Насколько я знаю, Apple изменила свою политику на токен устройства после того, как выпустила iOS7.