Чи унікальний маркер пристрою APN для кожного окремого додатка?


76

У мене є два додатки в магазині iTunes - обидва реалізують push-сповіщення. Поки я тестував надсилання сповіщень до цих робочих програм, я помітив, що натискання, призначене для програми A, було названо та відкрило програму B.

Обидві ці програми встановлені на одному телефоні. Я заглянув у таблицю своїх пристроїв і побачив, що маркери пристроїв (і, звичайно, ідентифікатор пристрою), перелічені для двох програм, однакові.

За потреби, я використовую два різних сертифікати на сервері - по одному для кожної програми. Я начебто припускав, що маркер пристрою або сертифікат буде направляти повідомлення в потрібний додаток, але очевидно, що це не так.

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

Чи повинен маркер пристрою бути унікальним для кожної програми? Якщо так, будь-яка ідея, як мій тестовий телефон міг надсилати один і той же маркер пристрою для обох програм на мій сервер. Майте на увазі, це з двох додатків, які зараз перебувають у магазині програм.

Дякуємо за будь-яку допомогу!

Відповіді:


91

ПРИМІТКА : це стара відповідь, справедлива лише для iOS <= 6. Див . Відповідь користувача 1641761 щодо поточного підходу.

Розібрався. Токени пристрою НЕ є унікальними для сполучення телефон-додаток. Вони унікальні лише для телефону. Якщо у вас є кілька додатків із натисканням на одному телефоні, вони будуть використовувати один і той же маркер пристрою. Сертифікат, який ви використовуєте для надсилання сповіщення, визначатиме, до якого додатка він переходить.


1
Дякую за питання та відповідь, це корисно знати. +1 для кожного. Має сенс, що телефон вирішить, на яку програму націлено сертифікат сервера, як автентифікацію наміру розробника.

3
Привіт @Mups. У початковому питанні ви стверджуєте, що: "Як потрібно, я використовую два різних сертифікати на сервері - по одному для кожного додатка". Потім у своїй відповіді ви говорите: "Сертифікат, який ви використовуєте для надсилання сповіщення, буде диктувати, до якого додатка воно переходить" .... Так, чому це не спрацювало? Я збираюся впровадити подібне налаштування для мого серверного сервера, і я хотів би бути впевненим. Дякую.
tompave

2
Також зверніть увагу, що маркер пристрою відрізняється залежно від типу збірки. Збірки розробок мають один маркер пристрою, а збірки розподілу (виробництва) мають інший. Маркери пристрою також скидаються до чогось іншого, коли користувач переінсталює ОС.
radesix

7
Це стара відповідь, що стосується старої iOS, тобто iOS 6 і старіших версій. З iOS 7 Apple змінив правила, і маркер пристрою вже не є унікальним для пристрою. Усі програми на одному пристрої матимуть різні маркери, на відміну від iOS 6 і старіших.
Камешвар Шеоран

2
проголосувавши за це, оскільки воно вже не оновлене. Дивіться відповідь користувача 1641761.
Даніель

52

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 відрізняється для одного пристрою


16

Поділяючись своїм розумінням та кількома відповідями від розробників Apple:

  • Маркер пристрою
    • Маркер пристрою - це унікальний ідентифікатор пристрою.
    • APN генерує маркер пристрою за допомогою унікального сертифіката пристрою (можливо, використовується профіль підготовки)
    • Маркер пристрою може бути змінений. Тож обов’язково щоразу надсилайте оновлений маркер пристрою на свій сервер.
    • Маркер пристрою РІВНИЙ для всіх програм на пристрої.
    • Це пристрій, а не додаток.
    • Маркер пристрою може відрізнятися для пісочниці та виробництва.
      • На основі профілю забезпечення (пісочниця або виробнича версія) APN можуть генерувати різні маркери пристроїв для пісочниці та виробництво для одного і того ж пристрою.
    • Тоді, як диференціюється push-повідомлення на пристрої? Для якої програми це?
      • Він робить це на основі ідентифікатора програми та сертифіката SSL, встановленого на сервері (за допомогою якого повідомлення надсилається на сервер APN).
  • Список літератури

1
Неправильна або застаріла відповідь. Відповідно до документації щодо яблук ваша відповідь більше не діє. Будь ласка, зверніться до документа тут developer.apple.com/library/content/documentation/…
Августин ПА

Маркер пристрою РІВНИЙ для всіх програм на пристрої. Ні, це як - Після успішної реєстрації APN надсилає на пристрій маркер пристрою, який відповідає певній програмі.
Ніко

8

Тим не менш, пам’ятайте, що Apple залишає за собою право змінювати пристрої APNToken, як вважає за потрібне, тому не використовуйте його для однозначної ідентифікації пристрою / користувача.


1

Маркер пристрою для push-сповіщення залежить від програми. Не стосується пристрою. тобто маркер пристрою буде різним і унікальним для декількох програм на одному пристрої.

За словами яблука,

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

  • Увімкнути віддалені сповіщення.

  • Зареєструйтесь у службі Apple Push Notification (APN) і отримайте маркер пристрою для певної програми.

  • Надішліть маркер пристрою на ваш сервер провайдера сповіщень.

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

Токен пристрою для конкретної програми є унікальним у всьому світі та визначає одну комбінацію програми та пристрою. Отримавши маркер пристрою з APN у вашому додатку, ваш обов’язок - відкрити мережеве з’єднання зі своїм провайдером. Ви також несете відповідальність у своєму додатку за пересилання маркера пристрою разом з усіма іншими відповідними даними, які ви хочете надіслати постачальнику. Коли постачальник пізніше надсилає запити на віддалене сповіщення до APN, він повинен включати маркер пристрою разом із корисним навантаженням сповіщення. Докладніше про це див. В Огляді APN.

Ніколи не кешуйте маркери пристроїв у своєму додатку; натомість отримуйте їх із системи, коли вони вам потрібні. APN видає новому маркеру пристрою ваш додаток, коли відбуваються певні події. Гарантована різниця маркера пристрою, наприклад, коли користувач відновлює пристрій із резервної копії, коли користувач встановлює вашу програму на новий пристрій і коли користувач переінсталює операційну систему. Отримання маркера замість того, щоб покладатися на кеш, гарантує, що у вас є поточний маркер пристрою, необхідний для зв'язку вашого провайдера з APN. Коли ви намагаєтесь отримати маркер пристрою, але він не змінився, метод отримання швидко повертається.

Ви можете звернутися до документа apple тут, Посібник з програмування місцевих та віддалених повідомлень


0

Ви не можете використовувати маркер як унікальний ідентифікатор, але видалити старий маркер за допомогою збереження в keygen (довідка з iTunes) і видалити старий маркер і додати новий у свою базу даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.