Подтвердить что ты не робот

Является ли токен устройства APN уникальным для каждого отдельного приложения?

У меня есть два приложения в магазине iTunes - оба представляют push-уведомления. Пока я тестировал отправку уведомлений в эти производственные приложения, я заметил, что нажатие, предназначенное для приложения A, было названо и было открыто приложение B.

Оба этих приложения установлены на одном телефоне. Я посмотрел в свой приборный стол и увидел, что устройства Tokens (и, конечно же, идентификатор устройства), перечисленные для двух приложений, были одинаковыми.

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

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

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

Спасибо за любую помощь!

4b9b3361

Ответ 1

ПРИМЕЧАНИЕ: это старый ответ, который верен только для iOS <= 6. См. user1641761 answer для текущего подхода.

Выяснил это. Токены устройства НЕ уникальны для соединения телефона и приложения. Они уникальны только для телефона. Если у вас несколько приложений с нажатием на один и тот же телефон, все они будут использовать один и тот же токен устройства. Сертификат, который вы используете для отправки уведомления, будет определять, к какому приложению оно относится.

Ответ 2

iOS 7 обрабатывает это по-другому. Сейчас УНИКАЛЬНО.

См. пункт 1 в этой статье: http://urbanairship.com/blog/2013/10/03/how-ios-7-handles-push-differently

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

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

Ответ 3

Разделяя мое понимание и несколько ответов от разработчиков Apple:

  • Маркер устройства
    • Маркер устройства - это уникальный идентификатор устройства.
    • APN генерирует токен устройства с использованием уникального сертификата устройства (может быть, используется профиль обеспечения)
    • Маркер устройства может быть изменен. Поэтому обязательно отправляйте обновленный токен устройства на свой сервер каждый раз.
    • Маркер устройства SAME для всех приложений на устройстве.
    • Он специфичен для устройства, а не для приложения.
    • Идентификатор устройства может отличаться для песочницы и производства.
      • На основе профиля обеспечения (песочницы или производства) APN могут генерировать различный токен устройства для песочницы и производства для того же устройства.
    • Затем, как push-уведомление дифференцируется на устройстве? Для чего это приложение?
      • Это делается на основе идентификатора приложения и сертификата SSL, установленного на сервере (с помощью которого уведомление отправляется на сервер APN).
  • Ссылки

Ответ 4

Тем не менее, помните, что Apple оставляет за собой право изменять устройства APNToken по своему усмотрению, поэтому не используйте его для уникальной идентификации устройства/пользователя.

Ответ 5

Маркер устройства для push-уведомления зависит от приложения. Не специфично для устройства. i.e токен устройства будет отличаться и уникален для нескольких приложений на одном устройстве.

Согласно яблоку,

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

  • Включить удаленные уведомления.

  • Зарегистрируйтесь в службе уведомлений Apple Push (APN) и получите токен устройства, специфичный для приложения.

  • Отправьте токен устройства на сервер поставщика уведомлений.

  • Внедрить поддержку для обработки входящих удаленных уведомлений.

Маркер устройства, специфичный для приложения, глобально уникален и идентифицирует один app-device. После получения токена устройства из APN в ваше приложение, вы несете ответственность за открытие сетевого подключения к вашего провайдера. Вы также несете ответственность за свое приложение в своем приложении. переместите маркер устройства вместе с любыми другими необходимыми данными, которые вы хотите для отправки поставщику. Когда поставщик позже отправляет удаленный запросы уведомления к APN, он должен включать токен устройства, вдоль с полезной нагрузкой уведомления. Подробнее об этом см. В разделе Обзор APN.

Никогда не кешируйте токены устройства в своем приложении; вместо этого получить их из если вам это нужно. APN выдает новый токен устройства для вашего приложения когда происходят определенные события. Маркер устройства гарантированно будет например, когда пользователь восстанавливает устройство из резервной копии, когда пользователь устанавливает ваше приложение на новом устройстве и когда пользователь переустанавливает операционную систему. Выбрав токен, а не опираясь на кеш, гарантирует, что у вас есть текущий токен устройства необходимые для вашего провайдера для связи с APN. Когда вы пытаетесь получить токен устройства, но он не изменился, метод выборки возвращается быстро.

Здесь вы можете ссылаться на документ Apple Руководство по программированию локального и удаленного уведомлений

Ответ 6

Вы не можете использовать токен как уникальный идентификатор, но удалите старый токен, используя save в keygen (help from itunes), и удалите старый токен и добавьте новый в свою базу данных.