Xcode 8 "права доступу на середовище aps відсутні у підпису програми" після надсилання


118

У мене є додаток, до якого ми надсилали десятки версій протягом останніх 6 місяців, і ми використовуємо APNS. Наступний електронний лист від Apple отримав після оновлення до Xcode 8

Шановний розробник,

Ми виявили одну чи кілька проблем із вашою недавньою доставкою для APP_NAME. Ваша доставка була успішною, але ви, можливо, захочете виправити наступні проблеми під час наступної доставки:

Відсутність права на отримання сповіщень Push - у вашій програмі є API для служби Push Notification Apple, але у підписі програми відсутнє право aps-середовища. Щоб вирішити цю проблему, переконайтеся, що ваш ідентифікатор додатка включений для поштового повідомлення на порталі надання. Потім підпишіть свою програму з профілем надання дистрибуції, який включає право aps-оточення. Це створить правильний підпис, і ви можете повторно подати додаток. Докладнішу інформацію див. У розділі "Забезпечення та розробка" в Посібнику з локального та "Push Notification Programming". Якщо ваш додаток не використовує послугу Apple Push Notification, жодних дій не потрібно. Ви можете видалити API з поданих подань, щоб припинити це попередження. Якщо ви використовуєте сторонні рамки,

Після виправлення неполадок ви можете використовувати Xcode або навантажувач програм для завантаження нового бінарного файлу в iTunes Connect.

З повагою,

Команда App Store

Що дивно - я зайшов на developer.apple.com -> Сертифікати, ідентифікатори та профілі, і в моєму додатку додатково ще активовано Push Notifications. Я нічого не роблю, то я коли-небудь робив це, тому мені цікаво, якщо оновлення Xcode 8 щось зламало. Будь-які ідеї?

BTW: Посилання, яке вони додали до Посібника з програмування сповіщень про повідомлення, було порушено в електронній пошті, тому це не є гарним знаком.

Відповіді:


156

Насправді дуже просто. Чомусь його відключили на Xcode 8, але перейдіть до Цілі -> Можливості та переконайтесь, що Push Notifications є всім правильним у цьому поданні. Для мене це було "Виправити мене", що я повинен був натискати та вуаля.


4
Дивна річ у цій проблемі не була вирішенням, це те, що в Xcode 7 це було ввімкнено, а після оновлення його відключили.
Unome

2
Я також повинен був увійти до файлу прав і змінити значення середовища APS на "виробництво", оскільки воно було встановлено на "розвиток" за замовчуванням при створенні.
Бек

61
Нещодавно в Apple, найнятих людей, що безмозгливі. Чому вони втрачають час розробників, вимикаючи речі за замовчуванням і неявно встановлюючи невідповідні значення, не попереджуючи про це. Я втратив один день у створенні профілів, сертифікатів, налагодження та інших дратівливих речей ..
Христо Атанасов

3
Нарешті! Це смішно, що так важко було змусити його працювати. Я знімаю & відтворюю certs / профілі майже 5 годин. Хороша річ у тому, що я можу сказати, що я повністю розумію, що це ці сертифікати / профілі / ідентифікатори зараз :) Дякую за цей підказку.
Каміль Риковський

4
@bek зауважте, що ви, ймовірно, повинні залишити це як розвиток. Він автоматично змінюється на виробництво після завантаження в iTunes Connect.
Мондід'є

84

У мене також є та ж проблема, і я впевнений, що Push-повідомлення в Xcode8 за замовчуванням вимкнено. Я цього не помічав. Будьте уважні до цього.

здатність


Чи можете ви сказати мені, чому я не маю розділу про push-сповіщення у своєму обліковому записі?
Ануй

28

У Xcode 8 відбулася зміна, коли ваші права більше не надходять із ідентифікаторів додатків, а від можливостей, вибраних у вашій цілі програми. Отже, як сказав Unome (OP), ви повинні переконатися, що Push Notifications включено.

Для мене це була не кнопка «Виправити мене», але у мене було два файли прав (один для розробки та один для розповсюдження). Увімкнення можливості Push Notifications додасть aps-environmentключ - зі значенням development- до файлу прав на розробку, але не додасть його до файлу прав на розповсюдження. Копіювання того ж ключа в дистрибутив працювало, щоб позбутися електронної пошти з попередженням під час завантаження в iTunes Connect.

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


Це човен, в якому я перебуваю, за винятком того, що я б не вказав у своєму .entitlementsфайлі для поточної конфігурації / схеми, він завжди використовується productionяк aps-environment.
Альберт Борі

перемикання натискання Повідомлення у програмі "Можливості" руйнує мій Xcode 8 !!
djay

2
@AlbertBori Дивно, я міг отримати його лише для показу розвитку, що було чудово, тому що коли він архівувався, він виглядав як production.
timgcarlson

6
@meteors Це має бути добре, якщо значення є development. Він буде змінено в ipa, коли проект буде архівовано.
timgcarlson

2
@timgcarlson Це фактично не відбувається під час архівування. Це відбувається під час подання або при експорті. Також корисна інформація, щоб перевірити, чи правильно встановлено тут: developer.apple.com/library/content/qa/qa1798/_index.html
Марк Леонард

27

З приміток до випуску Xcode :

Xcode 8 не автоматично копіює права aps-середовища з профілів надання в час створення. Така поведінка навмисна. Щоб скористатися цим правом, увімкніть Push Notifications на панелі "Можливості редактора проекту" або додайте права вручну у файл прав. (28076333)

Це велика зміна, оскільки завжди було досить дивно, що для отримання програм aps-середовища не потрібен список, але багато інших зробили.

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


1
Я не зміг знайти цю цитату у пов'язаних записках!
Юліан Онофрей

Я не знаю, хто підтримав мій коментар і що було неправильно, але я зараз теж можу його знайти.
Юліан Онофрей

13

Після дня боротьби з Xcode 8 ми не змогли з’ясувати, чому aps-environmentрозробка НЕ ​​додалася до наших версій налагодження. Він був відсутній у розділі прав у вбудованому додатку для тестування налагодження ... навіть якщо ми ЗАБЕЗПЕЧИЛИ новий файл можливостей і файл прав. Проблема полягає в тому, що файл прав повинен бути встановлений для БУДЬ-якого SDK у налаштуваннях збірки Xcode для прав налагодження.

скріншот


Я не думаю, що існує різниця між встановленням Debugключа для ключа та встановленням його для Debug> Any SDKone, оскільки останній використовується для зміни значення для конкретного SDK.
Юліан Онофрей

Це рішення для мене
Хіманта

Після боротьби з цим цілий ранок, це була проблема, яку я мав також. Боротьба з можливостями, генерування профілів резервування, жоден з них не працював. Це зробили.
Dave S

це все ще є правильним рішенням у деяких випадках на Xcode 8.3.3
дан

Я б хотів, щоб я міг проголосувати за це мільйон разів. Я боровся тиждень, і це було рішення. Просто введення шляху до файлу в правах на підпис коду вгорі було недостатньо, це потрібно було зробити і в частині "Будь-який SDK". Це було ключовим для її вирішення.
Роберт Бентлі

7

Я отримав такий самий електронний лист від Apple за допомогою XCode 7.3.1. Що я зробив для вирішення проблеми:

  1. У розділі Можливості> Встановіть PUSH-повідомлення ввімкнено, як зазначено у відповіді @Bruce Tsai.
  2. У розділі Build-Settings> Code Signing> Identity Signing Identity встановіть cert розробника для налагодження та cert розподілу для випуску, як показано на зображенні:

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


Привіт, У можливостей я не отримую> Встановлення повідомлення PUSH
Anuj

@Anuj, я додав знімок екрана, де він повинен бути у вашому Xcode.
Рубен

5

Якщо ви використовуєте фреймворк Firebase і не використовуєте push-сповіщення, є два рішення 1. просто миріться з повідомленням "проблема", яке надсилається всій вашій команді щоразу, коли ви завантажуєте двійковий файл. Додаток все одно буде прийнято як подання, якщо ви фактично не використовуєте сповіщення, ігноруючи попередження. або 2. зробіть це: https://stackoverflow.com/a/46802075/7529450 . Це видалить дратівливе повідомлення електронною поштою, а також буде прийнято як надсилання.


4

Автоматичне управління підписом було для мене вимкнено

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


3

Використання Xcode 9 push сповіщень увімкнено.

Я спробував відключити / повторно включити можливості Push Notification . (не працювало)

Я спробував відключити / повторно включити Автоматичне управління підписанням . (не працювало)

Виявляється, мені довелося видалити та знову додати свої профілі забезпечення. ( див. тут, як це зробити ) Можливо, вам доведеться вимкнути / повторно ввімкнути Автоматичне управління підписом після підопічних.


2

Для мене проблема полягала в тому, що було два файли прав: Entitlements-Debug.plistі Entitlements-Release.plist. І лише одна з них (Налагодження) потребувала в ньому налаштувань.

Зміна декількох значень Налаштування збірки> Підписання> Права підписання коду до єдиного, MyAppName/MyAppName.entitlementsа потім повторне ввімкнення Можливості> Push Notifications Перемикач " зробив для мене хитрість.

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


0

Ще один варіант, який спрацював: копіювання вставлення джерела AppName/Entitlements-Debug.plistв AppName/Entitlements-Release.plist.

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