Нет действительной строки права доступа "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). После этого все было хорошо, не знаю, почему старый перестал работать.