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


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

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

мы обнаружили одну или несколько проблем с вашей недавней доставкой для Функция app_name. Ваша поставка была успешно, но вы можете исправить следующие проблемы в вашем следующая поставка:

отсутствует право уведомления толчка - ваше приложение включает в себя API Служба Push-уведомлений Apple, но право aps-environment отсутствует в подписи приложения. Чтобы решить эту проблему, убедитесь, что ваш Идентификатор приложения включен для push-уведомлений на портале подготовки. Затем подпишите приложение с помощью профиля подготовки распространения, который включает право aps-environment. Это позволит создать правильный подпись, и вы можете повторно отправить приложение. См. раздел "подготовка и Развитие " в локальном и Push-уведомлении Руководство по программированию для подробная информация. Если ваше приложение не использует Push-уведомление Apple обслуживание, никаких действий не требуется. Вы можете удалить API из будущего представления, чтобы остановить это предупреждение. Если вы используете сторонний фреймворк, возможно, Вам потребуется связаться с разработчиком для получения информации об удалении ПРИКЛАДНОЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС.

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

с уважением,

команда App Store

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

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

11 108

11 ответов:

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

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

capability

из Xcode заметки:

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

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

для тех из вас, кто не хочет просто слепо нажимать "Fix Me "и в настоящее время не имеет файла прав, это просто файл plist, на который ссылаются в настройках сборки вашего проекта в разделе"права подписи кода"

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

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

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

после дня борьбы с Xcode 8 мы не могли понять, почему aps-environment разработка не была добавлена в наши отладочные сборки. Он отсутствовал в разделе прав в построенном приложении для отладки тестирования... несмотря на то, что мы включили новую возможность и файл прав существовал. Проблема заключается в том, что файл прав должен быть установлен для любого SDK в настройках сборки Xcode для прав отладки.

screenshot

Automatically manage signing was off for me

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

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

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

enter image description here enter image description here

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

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

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

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

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

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

изменение нескольких значений Настройки Сборки > Подпись > Права Подписи Кода один MyAppName/MyAppName.entitlements и затем повторное включение Функции > Push-Уведомления переключатель сделал трюк для меня.

надеюсь, что это помогает.

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