it-swarm.com.ru

Xcode 8 "право aps-среды отсутствует в подписи приложения" при отправке

У меня есть приложение, в которое мы отправили десятки версий за последние 6 месяцев, и мы используем APNS. Я получил следующее письмо от Apple после обновления до Xcode 8

Уважаемый разработчик,

Мы обнаружили одну или несколько проблем с вашей недавней доставкой за ИМЯ ПРИЛОЖЕНИЯ. Ваша доставка была успешно, но вы можете исправить следующие проблемы в вашем следующая доставка:

Отсутствует право на push-уведомление. Ваше приложение содержит API для Служба push-уведомлений Apple, но разрешение aps-среды отсутствует в подписи приложения. Чтобы решить эту проблему, убедитесь, что ваш Идентификатор приложения включен для push-уведомлений на портале обеспечения . Затем подпишите свое приложение с помощью профиля обеспечения распространения включает в себя право aps-environment. Это создаст правильный подпись, и вы можете повторно отправить свое приложение. См. «Подготовка и Разработка» в Руководстве по программированию локальных и push-уведомлений для Дополнительная информация. Если ваше приложение не использует Apple Push Notification сервис, никаких действий не требуется. Вы можете удалить API из будущего представления, чтобы остановить это предупреждение. Если вы используете сторонний фреймворк, Вам может потребоваться связаться с разработчиком для получения информации об удалении API.

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

С Уважением,

Команда App Store

Что странно, я зашел в developer.Apple.com -> Сертификаты, идентификаторы и профили и в моем AppId все еще включены push-уведомления. Я не делаю ничего иного, чем когда-либо, поэтому мне любопытно, что обновление Xcode 8 что-то сломало. Есть идеи? 

Кстати, ссылка, которую они указали на Руководство по программированию Push-уведомлений, была разорвана в электронном письме, так что это не очень хороший знак.

110
Unome

Очень легко на самом деле. По некоторым причинам это было отключено на Xcode 8, но перейдите к Targets -> Capabilities и проверьте, что Push-уведомления все правильно в этом представлении. Для меня это было «Исправить меня», я должен был нажать, и вуаля. 

142
Unome

У меня также есть та же проблема, и я уверен, что Push-уведомление отключено по умолчанию в Xcode8. Я этого не заметил. Будьте осторожны с этим.

 capability

78
Bruce Tsai

Из Xcode заметки о выпуске :

Xcode 8 не копирует автоматически права aps-среды из профилей обеспечения во время сборки. Такое поведение является преднамеренным. Чтобы использовать это право, либо включите Push-уведомления на панели «Возможности» редактора проекта, либо добавьте разрешение вручную в файл прав. (28076333)

Это большое изменение, так как всегда было довольно странно, что для доступа к aps-environment не требовался plist, но многие другие сделали это.

Для тех из вас, кто не хочет просто слепо нажимать «Исправить меня» и в настоящее время не имеет файла разрешений, это всего лишь файл plist, на который есть ссылки в настройках сборки вашего проекта в разделе «Права подписи кода»

27
mattyohe

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

Для меня это была не кнопка «Исправить меня», но у меня было два файла прав (один для разработки и один для распространения). Переключение функции push-уведомлений добавит ключ aps-environment - со значением development - в файл разрешений на разработку, но не добавит его в файл разрешений на распространение. Копирование того же ключа в дистрибутив помогло избавиться от предупреждающего электронного письма при загрузке в iTunes Connect.

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

27
timgcarlson

После дня борьбы с Xcode 8 мы не могли понять, почему разработка aps-environment НЕ была добавлена ​​в наши отладочные сборки. Он отсутствовал в разделе «Права» во встроенном приложении для отладочного тестирования ... даже несмотря на то, что мы ВКЛЮЧИЛИ новую возможность и файл прав. Проблема состоит в том, что файл полномочий должен быть установлен для ЛЮБОГО SDK в Настройках сборки XCode для Прав отладки.

 screenshot

12
James L Harris

Я получил то же письмо от Apple, используя XCode 7.3.1. Что я сделал, чтобы решить эту проблему:

  1. В разделе «Возможности»> «Установите push-уведомление», как указано в ответе @Bruce Tsai.
  2. В Build-Settings> Signing Code> Code Signing Identity установите сертификат разработчика для отладки и сертификат распространения для выпуска, как показано на рисунке:

enter image description here enter image description here

6
Ruben

Если вы используете фреймворки Firebase и не используете Push-уведомления, есть два решения: 1. просто согласитесь с сообщением «проблема», которое отправляется всей вашей команде каждый раз при загрузке двоичного файла. Приложение будет по-прежнему приниматься как отправка, если вы на самом деле не используете уведомления, вы можете игнорировать предупреждение. или 2. сделать это: https://stackoverflow.com/a/46802075/7529450 . Это удалит раздражающее уведомление по электронной почте, а также будет принято в качестве представления.

5
Aaron Halvorsen

 Automatically manage signing was off for me

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

4
Shemeer M Ali

Использование Xcode 9 Push-уведомлений было включено.

Я пытался отключить/повторно включить возможности Push Notification. (не работал)

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

Оказывается, мне пришлось удалить и заново добавить мои профили обеспечения. ( см. здесь, как это сделать ) Возможно, вам придется отключить/повторно включить Автоматически управлять подписанием после защиты.

4
Aldracor

Для меня проблема была в том, что было два файла с правами: Entitlements-Debug.plist и Entitlements-Release.plist. И только один из них (Debug) нуждается в настройках.

Изменив несколько значений Настройки сборки> Подписание> Права подписи кода на один MyAppName/MyAppName.entitlements, а затем снова включив Возможности> Push-уведомления switcher сделал свое дело за меня.

Надеюсь, поможет.

2
Alexander Zinchuk

Сработал еще один вариант: скопируйте и вставьте источник AppName/Entitlements-Debug.plist в AppName/Entitlements-Release.plist.

0
Alexander Zinchuk