Немає права на натискання на сповіщення


126

У мене є додаток для подання, коли його відхилено, і я отримав повідомлення

Відсутність права на натискання на повідомлення - Ваш додаток, як видається, зареєстровано в службі Apple Push Notification, але права підпису програми не містять прав на "aps-середовище". Якщо ваш додаток використовує службу Apple Push Notification, переконайтеся, що ваш ідентифікатор додатка включений для повідомлення Push-сповіщення на порталі надання послуг та повторно подайте після підписання програми програму надання дистрибутива, що включає право "aps-середовище".

Я перевірив своє спеціальне забезпеченняg і там знайшов aps-середовище та виробництво, однак, коли я відкриваю своє розповсюдження, я не знаходжу такого.

Чи є причиною цього повідомлення про помилку та відхилення яблука, як це можна виправити?

Відповіді:


80

Так, це причина відхилення App Store. Якщо у вашому профілі спеціального забезпечення є ключ середовища aps, це означає, що ваш додаток правильно налаштовано на порталі надання програм Apple. Все, що вам потрібно зробити, - це видалити профіль розповсюдження App Store на локальній машині, після чого повторно завантажити та встановити профіль розподілу з порталу надання. Цей новий має містити ключ середовища aps.


Просто, щоб очистити ще один туман, це справедливо стверджує, що "профіль розповсюдження ОБОВ'ЯЗКОВО має в ньому aps-середовище тощо", і що коли я відкриваю резервування в текстовому редакторі, я мушу знайти його, що лежить там ...
mirageservo

чи потрібно мені генерувати новий сертифікат ssl, особливо коли я щось змінив зі свого профілю розповсюдження?
mirageservo

2
Ні, немає необхідності в новому сертифікаті розробника. Коли ви ввімкнули дистрибуцію для push-сповіщень (що ви, мабуть, зробили в якийсь момент, оскільки у вашому спеціальному профілі є ключ середовища-aps), портал iTunes Provisioning Portal генерує новий профіль розповсюдження магазину додатків, що містить ключ середовища aps. Напевно, ви просто завантажили та встановили найновіші.
Том

ще одна річ, перш ніж це питання потрапить до галактики, чи потрібно мені перекомпілювати (повторно архівувати) ipa, оскільки відбудуться зміни в настройках збірки проекту, або я можу безпосередньо розповсюджувати додаток, не турбуючи перекомпіляцію?
mirageservo

Потрібно повторно архівувати. Профіль резервування, пов’язаний із додатком, вбудовується в .ipa.
Том

43

Перший ідентифікатор програми

переконайтеся, що ваше повідомлення про ввімкнення особи ввімкнено на виробничій стороні

як показано на малюнку

введіть тут опис зображення

Другий сертифікат

у виробничому розділі створіть два сертифікати з вашим ідентифікатором (увімкнено push-повідомлення)

App Store та спеціальний сертифікат

Сертифікат SSL (пісочниці) служби Apple Push Notification

введіть тут опис зображення

Треті профілі надання

У розділі дистрибуції створіть профіль App Store зі своїм ідентифікатором

Нарешті

під час завантаження кошика ви повинні перевірити, який профіль надання послуг використовувався та маєте багато прав

введіть тут опис зображення

всі ці випадки викликають цю проблему, сподіваюся, що це буде корисно для вас


1
Це те, чого я бракував. Мені довелося створити новий профіль забезпечення на веб-сайті розробника яблук, використовуючи ідентифікатор додатка з push-повідомленнями. З новим профілем резервування, нарешті, до мого додатка було додано права aps-середовища. Дякую!
М. Луїза Карріон

38

У XCode 8 вам потрібно ввімкнути натискання на вкладці "Можливості" у вашій цілі, а також увімкнути все, що стосується положень та сертифікатів: Xcode 8 "у програмі aps-середовища відсутнє право на підпис програми"

Мій пост про це тут .


8
Це така класична Apple. Через дві години після того, як я надсилаю збірку, вони надсилають повідомлення про помилку щодо проблеми, яку я вже давно вирішив (увімкнувши службу додатків Push Notification Application на Dev Portal) і пояснюється посиланням на 404. Потім виявляється, що справжній Проблема полягає в тому, що вони не перемістили мої налаштування під час оновлення до нової версії свого програмного забезпечення (що я заблокований). Тьфу.
Рембрандт Ейнштейн

3
Тут же історія. Ми майже відхилили повідомлення про помилку як помилку Apple.
Вайден

23

Я отримав це повідомлення з іншої причини - я подав додаток через Xcode, не попередньо створивши профіль розповсюдження магазину додатків спеціально для додатка. Я вважаю, що Xcode автоматично використовує профіль магазину App Store, якщо у вас інстальовано. Але додаток, що використовує Push Notifications, вимагає власного профілю.

Виправлення полягає в створенні нового профілю дистрибуції App Store для додатка. Потім ви завантажуєте його, перетягуєте його на Xcode і змінюєте налаштування свого проекту збірки> підпис коду> Відпустіть, щоб використовувати новий профіль.


11

Виходячи з відповіді, наданої @Vaiden, у Xcode 8 ви можете вирішити цю проблему, вибравши ціль і натиснувши "Виправити проблему". Звичайно, вам все одно знадобиться налаштувати push-сповіщення на порталі розробників Apple (ви можете трохи спростити процес, скориставшись новою опцією "Автоматично керувати підписом", що позбавить вас від клопоту щодо завантаження профілів резервування).

Виправити варіант


8

Для тих, хто стикається з цією проблемою, які фактично використовують Push Notifications у своїх додатках:

Нещодавно наші термінали розгортки закінчилися, тому ми створили нові розгортки для розробки / продукту стандартним способом, викладеним Apple (я не буду тут детально розбиратись про це, про оновлення в Інтернеті є багато інформації при оновленні. ваші поштовхи на наступний рік використання).

Однак, зробивши це, питання в цьому питанні спливе. Незалежно від того, що ми зробили, ми отримали це повідомлення від Apple після подання нашої програми. Коли ми перевірили налаштування нашого профілю надання послуг дистрибуції в Apple Member Center, все виглядало нормально (Push було ввімкнено для нашого ідентифікатора додатка для продукту / розробника, а наш профіль надання дистрибуції все ще був підключений до цього ідентифікатора програми, ми буквально щойно створили нові термінали на ще один рік, як це є стандартною практикою).

Нарешті, ось що вирішило це для мене:

  1. Створіть новий профіль надання дистрибуції, що вказує на ваш ідентифікатор програми (залиште поточний у такті)
  2. У Xcode оновіть профілі резервування через Налаштування> Облікові записи> Виберіть свій рахунок> Деталі> Клацніть піктограму оновлення
  3. Створіть вручну файл файлу плістів з правами:
    • Меню файлу> Новий файл ...
    • Виберіть iOS> Ресурс> Список властивостей
    • Назвіть новий файл "foo.entitlements" (як правило, "foo" - цільове ім'я)
    • Клацніть (+) поруч із "Файлом прав", щоб додати елемент верхнього рівня (редактор списку властивостей використовуватиме правильну схему через розширення файлу)
  4. Переконайтесь, що цей файл прав використовується в налаштуваннях збірки вашої цілі (Ціль> Налаштування збірки> Пошук "Прав", у CODE_SIGN_ENTITLEMENTS встановіть шлях до файлу прав, який ви тільки що створили)
  5. Переконайтесь, що ідентифікаційний профіль підпису / коду у вашій цілі встановлено правильно для вашого відповідного профілю забезпечення розподілу / ідентифікації підпису (це має бути очевидним)
  6. Я не на 100% впевнений, чи це вплинуло на це (це не повинно, оскільки налаштування цілі перекривають налаштування проекту, але я це все одно робив), переконайтесь, що профіль надання проекту / ідентифікатор підпису вашого проекту відповідають вашим цільовим
  7. У створеному вами файлі прав правою кнопкою миші клацніть порожній файл і виберіть "Показати неочищені ключі / цінності".
  8. Додайте новий запис до файлу прав під назвою "aps-середовище" та встановіть його значення на "виробництво"
  9. Одне ключове зауваження, якщо ви раніше використовували права доступу до груп keychain-доступу, ви хочете додати цей ключ і тут, оскільки чомусь він очистився для мене, коли це робиться вручну. Переконайтесь, що значення збігається з значенням, використовуваним у попередніх збірках (ви можете знайти це значення, знайшовши попередню збірку в Організаторі, намагаючись подати в магазин додатків, виберіть свою команду, а потім перед подачею програми натисніть стрілку поруч із Рядок "(X) Entitlements", щоб розширити права та побачити значення прав групи keychain-access group.
  10. Заархівуйте додаток і спробуйте надіслати його до того, як потраплять до остаточної кнопки "Надіслати". Ви повинні побачити, що це додаток було побудовано за допомогою нового профілю надання, який ви створили в центрі учасників. Скасуйте це зараз.
  11. Поверніться до центру учасників Apple і видаліть новий профіль надання, який ви створили на кроці 1.
  12. Повернувшись до Xcode, оновіть список профілів резервування ще раз, повторивши крок 2.
  13. Тепер знову архівуйте додаток, і ви побачите, що додаток було створено зі старим профілем надання дистрибуції, який ви хотіли використовувати, і правильно має право на середовище aps. Подайте, і ви закінчите.

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


Дякую. №8 для мене був розроблений, що може стати нашим питанням.
взяти участь

Дякую велике, витратили цілий день на цю зухвалість, проблема №4 була проблемою, чомусь без вказівки CODE_SIGN_ENTITLEMENTS права ігнорувались лише для завантаження в магазин додатків.
Марк Казаков

5

перевірте, чи ваш Ідентифікатор додатка включений чи не на веб-сайті developer.apple.com на порталі iOS Provisioning Portal, якщо не ввімкнено його, налаштуйте свій Push SSL-сертифікат для ідентифікатора додатка. у вашій бібліотеці Xcode


4

Я також зіткнувся з цією проблемою, навіть якщо я взагалі не використовував push-сповіщення у своєму додатку. Створення нового профілю резервування для мене також не працювало. Що я зробив:

1.Створіть новий свіжий сертифікат лише для Ad hoc і App Store.

2. Потім складіть профіль розповсюдження з цим сертифікатом та інтегруйте профіль із Xcode.

Потім нещодавно представлена ​​збірка з цим профілем затверджена без будь-якого попередження.


2
Я спробував це - не допомогло. як і раніше отримую відсутні речі push-сповіщень. Я не використовую push-сповіщення!
Адам

2

У моєму випадку навіть я створив myapp.profile і встановив його в xcode вручну, і коли я вибрав "показати в пошуку" і розмістив embedded.mobileprovision і перевірив, чи впевнений, що aps-середовище є у файлі, помилка була все ще тут.

Потім я зайшов до центру розробників і виявив, що статус XC: myapp.profile недійсний. Я оновив його і встановив XC: myapp.profile, і він працював чудово.

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

ОНОВЛЕННЯ:

Після підписання із завантаженим профілем та підтвердження aps-environmentйого наявності під час спроби подати заявку App Store, ви зможете змінити профіль і підпис коду на автоматичний та iOS Developer. Сподіваюсь, що це можна покращити в Xcode 7.


Я перевірив усі профілі, а також XC: профіль оновлюється, і він не включає жодного ключа Asp-середовища там, і досі я знову і знову отримував ту саму проблему. Будь-яка допомога буде вдячна. І так, мені не потрібно жодного push-повідомлення, реалізованого в додатку
iOSDev

Ви можете переконатися, перевірте двійковий вміст профілю надання та побачите, чи є рядок "aps-середовище" всередині чи ні, будь ласка? Якщо він знаходиться всередині, вам потрібно знайти якийсь спосіб позбутися від нього, інакше вам потрібно переконатися, що профіль саме той, з яким ви підписуєте свою програму. У будь-якому випадку повинна бути проблема.
superarts.org

1
Я перевірив це двічі і намагаюся дізнатися більше, але не пощастило. Немає подібних рядків, але після 2-х днів пошуку та спроб, я зрозумів, що ця проблема з Xcode 7 beta, а не з моїм кодом :) Те саме створення через Xcode 6.4 ідеально працює, і електронної пошти від Apple не повідомляють, що проблема, тому проблема з Xcode 7 beta 4, а не з кодом або профілем.
iOSDev

2

Це було для мене виправленням. (Я вже спробував увімкнути / вимкнути можливості, відтворити профіль надання тощо).

На вкладці " Налаштування збірки" в розділі Права підпису коду мій файл .entitlements не посилався на всі розділи. Після того, як я додав його до розділу будь-якого SDK, помилка була усунена.

введіть тут опис зображення


2

Щоб вирішити це для програми "викинутого" експозиції, я перейшов на вкладку "Можливості", включив натискання, а потім знову відключив її. Це вилучило параметр APNS "права" з файлу .entitlements.


спробував це на своєму "викинутому" проекті, але все-таки я отримую ці сповіщення
webdevbyjoss

1

У мене була та сама проблема, і моє рішення полягало в тому, щоб додати право наштовхувати сповіщення з цільової -> можливостей.


0

Це сталося зі мною раптово, оскільки термін розповсюдження мого додатка минув. Натомість Xcode почав використовувати підстановочний профіль, у якому не було ввімкнено право наштовхувати повідомлення. Я не отримав жодного попередження. Виправити було легко; Мені просто довелося генерувати інший профіль розповсюдження для свого додатка в Центрі членів розробника Apple, завантажити його та двічі клацнути, щоб встановити Xcode.


0

Тут є кілька справді хороших пропозицій.

Посилаючись на останній скріншот, який надала Міна, попередньо архівувавши мою програму, профіль резервування, згаданий під час завантаження, містив підстановку (XC. *). Це неправильно.

Щоб вирішити це, знадобилося чимало зусиль. Мені довелося виконати поєднання пропозицій, які надали Simon Woodside & Mina Fawzy.

Якщо у вас є які-небудь існуючі сертифікати та профілі забезпечення, пов’язані з вашим проектом, зараз би вдалий час видалити їх на локальному рівні та відкликати їх усі віддалено. Почніть по-новому.

Детальна пропозиція Міни Фаузі відмінна. Виконання пропозицій Міни, якщо вони виконані правильно, має подбати про вас в Інтернеті.

Введіть пропозицію Саймона. Дві речі, які мені потрібно було перевірити всередині свого проекту. За допомогою XCode перейдіть сюди:

ПРОЕКТ -> НАЛАШТУВАННЯ БУДІВ -> ПОДПИСЬ КОДУ

Перегляньте код підписання ідентичності та надання властивостей профілю . Переконайтеся, що ви встановили ці два властивості для назви свого проекту. Не дозволяйте XCode автоматично обирати для вас і не використовуйте загальну особу підпису коду (наприклад, Iphone Developer).

Переконайтесь, що ви можете фактично встановити додаток на свої пристрої, перш ніж вирішити архівувати.


0

Найбільша проблема , що у мене є після включення Push Notificationвід Capabilitiesі переробці всіх сертифікатів є те , що ім'я Target і ім'я папки , де зберігалася проект складається з 2 -х рядків , розділених пропуском. Після вилучення місця все працювало чудово!


1
У моїй програмі не використовується push-сповіщення, але все ж я отримую це попередження від apple.
Підкажіть,

0

У мене виникла ця проблема, оскільки мій файл прав був неправильно сформований через попереднє редагування вручну. Я видалив неправильно відформатований синтаксис введення прав, і тоді я міг натиснути «виправити» на вкладці можливостей, а Xcode додав права до мого файлу.

Ось приклад правильно відформатованого файлу прав (" Runner.entitlements"):

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.applesignin</key>
    <array>
        <string>Default</string>
    </array>
</dict>
</plist>

0

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

Що ви повинні зробити:

перейдіть на сайт для входу в розробник Apple, де ви можете керувати своїми сертифікатами aso 2. виберіть вкладку "Сертифікати, ідентифікатори та профілі" праворуч 3. Тепер виберіть "Ідентифікатори" 4. та ідентифікатор групи зі списку праворуч 5. зараз прокручуйте вниз, поки не з’явиться повідомлення про натиск 6. вимкніть його 7. архівуйте свою збірку та перезавантажте її в Apple Store Connect

Сподіваюся, це допомагає!

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