Нет действительной строки права доступа "aps-environment", найденной для приложения

Я пытаюсь настроить приложение для поддержки push-уведомления, но продолжаю получать эту ошибку: Не удалось получить токен, ошибка: Ошибка Домен = NSCocoaErrorDomain Code = 3000 "no valid" строка соответствия aps-environment ", найденная для приложения" UserInfo = 0x1f818fc0 {NSLocalizedDescription = нет допустимой строки прав доступа aps-environment, найденной для приложения}

  • Я включил мое приложение для поддержки push-уведомлений (только для разработки на этом этапе).
  • Я создал профиль обеспечения после активации push-уведомлений.
  • Идентификатор моего идентификатора совпадает с отображаемым в профиле.
  • В моем файле профиля есть строка: aps-environment
  • Я убедился, что в проекте и цели в разделе "Идентификация подписи кода" ВСЕ значения выбраны для моего профиля подготовки.

Больше идей? Спасибо.

Ответ 1

В моем случае материал в моем профиле обеспечения:

security cms -D -i ~/Downloads/spolskyDevelop.mobileprovision 
...
<key>application-identifier</key>
<string>P5GM95Q9VV.com.dca.spolsky</string>
<key>aps-environment</key>
<string>development</string>

Отличался от того, что было на самом деле в приложении (вы можете узнать, где он построен, посмотрев вкладку Xcode Logs)

codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app'
<dict>
    <key>application-identifier</key>
    <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    </array>
</dict>

Это было верно , хотя текст подсказки "Текущий матчи" под идентификатором подписи кода указывал правильный профиль обеспечения - странно, да? Чтобы сделать странную историю более сложной, на моем устройстве был установлен правильный профиль подготовки (когда он был запущен) (Настройки- > Общие- > Профили), что привело к тому, что профиль обеспечения был прав - но он вернулся к идентификатору подстановочного знака когда приложение действительно запущено.

Под понятием была разница в выходе этих двух команд:

Y2X6Z7Z2GR.com.dca. spolsky-ios против P5GM95Q9VV.com.dca. spolsky

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

Мое предположение заключается в том, что XCode использовал совпадение в стиле подстановочных знаков для моего идентификатора без подстановочных знаков. ( "spolsky" - это, в конце концов, почти "spolsky-ios" ), и это объясняет вывод "Current Matches". Но что-то в цепочке сборки более строго об этом, поэтому оно возвращается к фактическому идентификатору подстановки во время сборки.

Ответ 2

Проблема связана с тем, что текущий профиль Provisioning Profile не содержит информацию APNS, так как профиль Provisioning Profile создан ПЕРЕД, создавая сертификат APNS.

Поэтому для решения проблемы создайте новый профиль Provisioning Profile и выберите профиль Provisioning Profile в Xcode, чтобы устранить ошибку.

Ответ 3

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

  • Xcode → Настройки → Аккаунты
  • Подробнее о вашей учетной записи разработчика
  • Несколько раз нажмите Refresh для Provision Profiles. Я видел эти изменения с каждым обновлением. Продолжайте освежаться, пока они не перестанут меняться.

Ответ 4

я получил эту ошибку и не создал новый профиль подготовки; создал новый, а затем пришлось перезапустить xCode, но теперь работает!

Ответ 5

Имейте в виду, что идентификатор пакета должен соответствовать профилю подготовки в режиме с учетом регистра. У меня было что-то вроде com.FirstLast.appname, когда это должно было быть com.firstlast.appname. Ну, это долгое время занимало меня.

Ответ 6

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

Выберите "Проект" > "Цель" > "Возможности" > "Включить Push-уведомления"

check out the image

Ответ 7

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

Выберите "Проект" > "Цель" > "Возможности" > "Включить Push-уведомления"

Ответ 8

Product- > Clean сделал это для меня. Надеюсь, он сделает это для кого-то другого.

Ответ 9

Я столкнулся с этим в том, что, возможно, нечасто используется. Я работаю с Xcode 6 и iOS 8. Я создавал серию совершенно новых проектов приложений и пытаюсь повторно использовать один и тот же идентификатор пакета, чтобы не переходить все настройки портала на другой. Это тоже было просто для тестирования песочницы.

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

Мое решение было:

  • Удалите связанный профиль обеспечения с устройства.
  • Удалите связанный профиль обеспечения из Xcode.
  • Закрыть Xcode
  • Дважды щелкните загруженный файл .mobileprovision, чтобы установить его обратно в Xcode
  • Откройте проект и разверните его.

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

Ответ 10

Для тех, кто получил эту ошибку в ios 10, вы можете попробовать следующие шаги:

1. очистите свой проект.
2. и проверьте Цели → Возможности → Push Notification.If он выключен, На нем.

И проблема решит. Вышеуказанные шаги помогут мне избавиться от этой проблемы. Надеюсь, это кому-то поможет.

Ответ 11

Новый профиль подготовки работал у меня. Обязательно используйте профиль разработчика, если вы находитесь в разработке (не используйте Ad Hoc). После этого все было хорошо, не знаю, почему старый перестал работать.