Отсутствует Право На Push-Уведомление


У меня есть приложение для представления, когда он был отклонен, и я получил сообщение

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

Я проверил свою специальную подготовку, и там я нашел aps-среду и производство, однако, когда я открываю свою подготовку распределения, я не нахожу такого.

Это причина этого сообщения об ошибке и отказа apple, как я могу это исправить?

15 98

15 ответов:

Да, это причина отказа App Store. Если в вашем профайле ad-hoc provisioning есть ключ aps-environment, это означает, что ваше приложение настроено правильно на портале Apple Provisioning Portal. Все, что вам нужно сделать, это удалить профиль распространения магазина приложений на локальном компьютере, а затем повторно загрузить и установить профиль распространения с портала подготовки. Этот Новый должен содержать ключ aps-environment.

первый идентификатор приложения

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

как показано на рисунке

enter image description here

Второй Сертификат

из производственного раздела создайте два сертификата с вашим идентификатором (push-уведомление включено)

App Store и Ad Hoc сертификат

Apple Push Notification service SSL (Sandbox) сертификат

enter image description here

Третий Профиль Подготовки

из раздела дистрибутива создать App Store профиль с вашим id

наконец-то

при загрузке Бина необходимо проверить, какой профиль подготовки используется и имеют много прав

enter image description here

это все случаи вызывают эту проблему надеюсь, что это будет полезно с вами

в XCode 8 вам нужно включить push на вкладке "возможности" на вашей цели, поверх включения всего на положениях и сертификатах: Xcode 8 "право aps-environment отсутствует в подписи приложения" на submit

мой блог об этом здесь.

Я получил это сообщение по другой причине - я отправил приложение через Xcode без предварительного создания профиля дистрибутива App Store специально для приложения. Я считаю, что Xcode автоматически использует профиль магазина приложений с подстановочными знаками, если он установлен. Но приложение использует уведомления толчка требует свой собственный профиль.

исправление заключается в создании нового профиля распространения App Store для приложения. Затем вы загружаете его, перетаскиваете на Xcode и изменяете настройки сборки проекта > Код Подпись > отпустите, чтобы использовать новый профиль.

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

наши push-сертификаты недавно истекали, поэтому мы создали новые сертификаты dev / prod push стандартным способом, описанным Apple (я не буду вдаваться в подробности здесь, есть много информации об этом во всем интернете при обновлении ваших push-сертификатов для еще одного года использования).

после этого, однако, вопрос в этом вопросе выскочил. Что бы мы ни делали, мы получил это письмо от Apple после отправки нашего приложения. Когда мы проверили настройки нашего профиля подготовки дистрибутива в центре участников Apple, все выглядело нормально (Push был включен для нашего идентификатора приложения для обоих prod / dev, и наш профиль подготовки дистрибутива все еще был связан с этим идентификатором приложения, мы буквально только что создали новые сертификаты push еще на один год, как это стандартная практика).

наконец, это то, что в конечном итоге решить его для меня:

  1. создать новый профиль подготовки распространения, указывающий на Ваш идентификатор приложения (оставьте свой текущий в tact)
  2. в Xcode обновите профили подготовки через Настройки > Учетные записи > выберите свою учетную запись > сведения > нажмите значок обновления
  3. вручную создайте файл plist прав для вашего приложения:
    • меню Файл > Новый файл...
    • выберите iOS > ресурс > список свойств
    • назовите новый файл " foo.права " (как правило," foo " является целью имя)
    • Нажмите кнопку ( + ) рядом с "файл прав", чтобы добавить элемент верхнего уровня (редактор списка свойств будет использовать правильную схему из-за расширения файла)
  4. убедитесь, что этот файл прав используется в настройках сборки вашей цели (Цель > настройки сборки > Поиск "прав", в CODE_SIGN_ENTITLEMENTS установите путь к файлу прав, который вы только что сделали)
  5. убедитесь, что профиль подготовки / подписи кода идентичности в вашей цели правильно установлен соответствующий профиль подготовки распределения / удостоверение подписи (это должно быть очевидно)
  6. Я не на 100% уверен, что это повлияло на него (это не должно быть, так как целевые настройки переопределяют настройки проекта, но я все равно это сделал), убедитесь, что профиль подготовки / подписи вашего проекта соответствует вашей цели
  7. в файле прав, который вы сделали, щелкните правой кнопкой мыши в пустом файле и выберите "Показать необработанные ключи / значения"
  8. добавить a новая запись в файл прав называется " aps-environment "и установите его значение в"production"
  9. одно ключевое замечание, если вы ранее использовали право keychain-access-groups, вы также захотите добавить этот ключ, потому что по какой-то причине он был очищен для меня при выполнении этого вручную. Убедитесь, что значение совпадает со значением, используемым в предыдущих сборках (вы можете найти значение, найдя предыдущую сборку в органайзере, пытаясь отправить в магазин приложений, выберите команда, затем перед отправкой приложения нажмите стрелку рядом со строкой" (X) права", чтобы развернуть права и увидеть значение права keychain-access-group.
  10. архивируйте свое приложение и попытайтесь отправить его до точки перехода к окончательной кнопке "Отправить". Вы должны увидеть, что это приложение теперь было построено с новым профилем подготовки, созданным в member center. Отмените это сейчас же.
  11. вернитесь в центр участников Apple и удалите новую подготовку профиль, созданный на шаге 1.
  12. вернитесь в Xcode, обновите список профилей подготовки еще раз, повторив Шаг 2.
  13. теперь снова архивируйте свое приложение, и вы должны увидеть, что приложение было построено со старым профилем подготовки распределения, который вы хотели использовать, и правильно имеет право на aps-environment. Подчинитесь, и все готово.

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

следуя ответу, данному @Vaiden, в Xcode 8 вы можете решить эту проблему, выбрав цель и нажав кнопку "исправить проблему". Конечно, вам все равно нужно настроить push-уведомления в Apple Developer portal (вы можете немного упростить процесс, используя новую опцию "автоматическое управление подписью", которая избавляет вас от необходимости загружать профили подготовки).

Fix me option

Я также столкнулся с этой проблемой даже Я вообще не использовал push-уведомления в моем приложении.Делая новый профиль подготовки также не работает для меня.То, что я сделал, было: -

1.Создайте новый сертификат только для ad hoc и App Store.

2.Затем создайте профиль распространения с этим сертификатом и интегрируйте профиль с Xcode.

затем вновь представленная сборка с этим профилем утверждена без любое предупреждение.

проверьте, что Ваш идентификатор приложения включен или не включен developer.apple.com в портале подготовки iOS Если он не включен,настройте свой Push SSL-сертификат для своего идентификатора приложения загрузите его, и переустановите в своем брелке еще раз, а затем загрузите свой профиль Distrubution установите в свой Xcode Liabrary

В моем случае, даже я создал приложение.профиль и установить его в xcode вручную, и когда я выбрал "показать в finder" и расположен встроенный.mobileprovision и проверил, чтобы убедиться, что aps-среда есть в файле, ошибка все еще была там.

затем я пошел в Центр разработчиков и обнаружил, что статус XC: myapp.профиль является недействительным. Я обновил его и установил XC: myapp.профиль и он работал нормально.

Я думаю, что xcode пытается управлять профилем, а вы необходимо проверить профиль подготовки при отправке двоичного файла в хранилище и убедиться, что он правильный. И, согласно другим ответам, это может быть вызвано по разным причинам, поэтому это может быть очень раздражающим.

обновление:

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

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

на Параметры Построения tab, in Права Подписи Кода мой .права файл не был ссылкой для всех разделов. Как только я добавил его в любой раздел SDK, ошибка была решена.

enter image description here

чтобы решить эту проблему для приложения expo 'ejected', я перешел на вкладку "возможности", включил push, а затем снова отключил его. В этом удалены настройки точек доступа APN "пособия" от .файл прав.

Это случилось со мной внезапно, потому что профиль распространения моего приложения истек. Вместо этого Xcode начал использовать профиль подстановочных знаков, в котором не было включено право push-уведомления. Я не получил никакого предупреждения. Исправление было простым; мне просто нужно было создать другой профиль распространения для моего приложения в Центре разработчиков Apple, загрузить его и дважды щелкнуть, чтобы установить в Xcode.

здесь есть несколько действительно хороших предложений.

ссылаясь на последний снимок экрана, предоставленный Mina, после первоначального архивирования моего приложения профиль подготовки, упомянутый во время загрузки, содержал подстановочный знак (XC.*). Это неправильно.

потребовалось немало усилий, чтобы решить эту проблему. Мне пришлось выполнить комбинацию предложений, которые предоставили Simon Woodside & Mina Fawzy.

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

детальное предложение мины Фавзи превосходно. Выполнение предложения мины, если оно выполнено правильно, должно позаботиться о вас в интернете.

введите предложение Саймона. Две вещи мне нужно было проверить внутри моего проекта. Используя XCode, перейдите сюда:

ПРОЕКТ - > НАСТРОЙКИ СБОРКИ - > КОД Подписание

обзор Удостоверение Подписи Кода и Профиль Подготовки свойства. Убедитесь, что вы установили эти два свойства для имени вашего проекта. Не разрешайте XCode автоматически выбирать для вас и не используйте какой-либо общий идентификатор подписи кода (например, разработчик Iphone).

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

самая большая проблема, которая у меня есть после включения Push Notification с Capabilities и переделка всех сертификатов заключается в том, что имя и имя папки где хранился проект был составлен из 2 строк, разделенных пробелом. После удаления все работало прекрасно!

У меня была та же проблема, и мое решение состояло в том, чтобы добавить право на push-уведомление из Target - > Capabilities.