Отсутствие права на уведомление Push Push

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

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

Я проверил свой ad-hoc provisiong, и там я нашел aps-environment и production, однако, когда я открываю дистрибутив, я не нахожу их.

Является ли это причиной этого сообщения об ошибке и отклонения яблока, как я могу его исправить?

Ответ 1

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

Ответ 2

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

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

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

enter image description here

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

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

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

Служба уведомления Apple Push Notification SSL (песочница)

enter image description here

Третий профили Provisioning

В разделе "Распределение" создайте профиль App Store с идентификатором

Наконец

когда вы загружаете корзину, вы должны проверить, какой профиль профилей используется и имеют много прав.

enter image description here

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

Ответ 4

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

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

Ответ 5

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

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

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

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

  • Создайте новый профиль предоставления распределения, указывающий на ваш идентификатор приложения (оставьте свой текущий в такте)
  • В Xcode обновите профили подготовки через Настройки > Учетные записи > Выберите свою учетную запись > Подробности > Нажмите значок обновления
  • Вручную создайте файл plives для вашего приложения:
    • Меню "Файл" > "Новый файл..."
    • Выберите iOS > Ресурs > Список свойств
    • Назовите новый файл "foo.entitlements" (обычно "foo" - это имя цели)
    • Нажмите кнопку (+) рядом с "Файл прав доступа", чтобы добавить элемент верхнего уровня (редактор списка свойств будет использовать правильную схему из-за расширения файла)
  • Убедитесь, что этот файл прав используется в ваших целевых настройках сборки (Target > Build Settings > Search for "Entitlements", в CODE_SIGN_ENTITLEMENTS задайте путь к вашему файлу Entitlements, который вы только что создали)
  • Убедитесь, что идентификатор профиля/идентификатор подписи кода в вашем целевом объекте правильно настроен для вашего профиля распределения/идентификации подписки (это должно быть очевидно).
  • Я не уверен на 100%, если это повлияло на него (это не должно происходить, поскольку параметры Target переопределяют параметры проекта, но я все равно это делал), убедитесь, что ваш профиль профилирования/подпись подписи соответствует вашей цели
  • В файле прав, который вы сделали, щелкните правой кнопкой мыши в пустом файле и выберите "Показать исходные ключи/значения"
  • Добавьте новую запись в файл прав, называемый "aps-environment", и установите значение "production"
  • Одно из ключевых замечаний: если вы ранее пользовались правом доступа к группе ключей, вы также захотите добавить этот ключ, потому что по какой-то причине он очистился для меня, когда делаете это вручную. Убедитесь, что значение совпадает с значением, используемым в предыдущих сборках (вы можете найти это значение, найдя предыдущую сборку в Organizer, попытавшись отправить в магазин приложений, выберите свою команду, затем перед отправкой приложения нажмите стрелку рядом с "(X)" Права ", чтобы расширить права и увидеть значение права доступа к группе ключей.
  • Архивируйте свое приложение и пытайтесь отправить его до момента получения окончательной кнопки "Отправить". Вы должны увидеть, что это приложение теперь было создано с новым профилем создания, созданным в центре участников. Отмените это сейчас.
  • Вернитесь в центр участника Apple и удалите новый профиль подготовки, созданный на шаге 1.
  • Вернитесь в Xcode, обновите список профилей подготовки еще раз, повторив шаг 2.
  • Теперь снова заархивируйте свое приложение, и вы должны увидеть, что приложение было создано со старым профилем распределения, который вы хотели использовать, и правильно имеет право доступа aps-environment. Отправить, и все готово.

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

Ответ 6

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

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

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

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

Ответ 7

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

Fix me option

Ответ 8

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

Ответ 9

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

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

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

UPDATE:

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

Ответ 10

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

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

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

Ответ 11

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

Ответ 12

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

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

Чтобы решить эту проблему, потребовалось немало усилий. Мне пришлось выполнить комбинацию предложений, которые предоставили Саймон Вудсайд и Мина Фаузи.

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

Отличное предложение Мины Фаузи. Выполнение предложения Mina, если выполнено правильно, должно заботиться о вас в Интернете.

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

ПРОЕКТ → НАСТРОЙКИ СТРОЕНИЯ → ПОДПИСАНИЕ КОДА

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

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

Ответ 13

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

Ответ 14

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