Я пытаюсь настроить свое приложение для поддержки push-уведомлений, но продолжаю получать эту ошибку: не удалось получить токен, ошибка: Error Domain = NSCocoaErrorDomain Code = 3000 "для приложения не найдена допустимая строка прав 'aps-environment'" UserInfo = 0x1f818fc0 { NSLocalizedDescription = для приложения не найдена допустимая строка прав 'aps-environment'}
- Я разрешил своему приложению поддерживать push-уведомления (на данный момент только для разработки).
- Я создал профиль обеспечения ПОСЛЕ включения push-уведомлений.
- Мой идентификатор пакета такой же, как в профиле.
- В моем профиле есть строка: aps-environment
- Я убедился, что и в проекте, и в цели в разделе «Идентификация подписи кода» ВСЕ значения выбраны в качестве моего профиля обеспечения.
Есть еще идеи? Благодарю.
Ответы:
В моем случае данные в моем профиле обеспечения:
Отличался от того, что было в самом приложении (вы можете узнать, где оно создано, посмотрев на вкладку 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». Но что-то в цепочке сборки более строгое в отношении этого, поэтому во время сборки он возвращается к фактическому идентификатору подстановки .
источник
Проблема связана с тем, что текущий профиль обеспечения не содержит информации APNS, поскольку профиль обеспечения создается ДО создания сертификата APNS.
Поэтому для решения проблемы создайте новый профиль обеспечения и выберите профиль обеспечения в Xcode, чтобы устранить ошибку.
источник
У меня была такая же проблема после того, как push-уведомления уже работали на моем устройстве. Похоже, что Xcode что-то неправильно кэшировал, поэтому его обновление устранило мою проблему:
источник
я получил эту ошибку и не создал новый профиль обеспечения; создал новый, а затем перезапустил xCode, но теперь работает!
источник
Имейте в виду, что идентификатор пакета должен соответствовать профилю подготовки с учетом регистра . У меня было что-то вроде com.FirstLast.appname, хотя должно было быть com.firstlast.appname. Что ж, это занимало меня довольно долго.
источник
Я исправил эту проблему, включив возможность push-уведомлений.
Выберите Проект> Цель> Возможности> Включить push-уведомления.
источник
Если эта проблема возникла внезапно после обновления до Xcode 8, вы можете найти предупреждение на экране возможностей, которое позволит вам исправить это автоматически:
Выберите Проект> Цель> Возможности> Включить push-уведомления.
источник
Продукт-> Clean сделал это за меня. Надеюсь, это поможет кому-то другому.
источник
Я столкнулся с этим, возможно, нечасто. Я работаю с Xcode 6 и iOS 8. Я создавал серию совершенно новых проектов приложений и пытался повторно использовать один и тот же идентификатор пакета, чтобы не пришлось заново проходить всю настройку на стороне портала. Это тоже было просто для тестирования в песочнице.
Я обнаружил, что, хотя установка и регистрация будут работать нормально для первого приложения, если я удалю это приложение с устройства, установлю тот же идентификатор пакета для второго приложения, а затем попытаюсь зарегистрировать PN в этом приложении, я получу эта ошибка.
Мое решение было:
.mobileprovision
файл, чтобы установить его обратно в Xcode.Этот подход, кажется, расшатывает любое предыдущее состояние, и я могу зарегистрироваться для PN с новым идентификатором приложения / того же пакета.
источник
Для тех, кто получил эту ошибку в ios 10, вы можете попробовать следующие шаги:
1. очистите свой проект.
2. и отметьте Targets -> Capabilities -> Push Notification. Если он выключен, включите его.
И проблема решит. Вышеуказанные шаги помогают мне избавиться от этой проблемы. Надеюсь, это кому-то поможет.
источник
У меня сработал новый профиль обеспечения. Обязательно используйте профиль разработчика, если вы в разработке (не используйте Ad Hoc). После этого все было нормально, понятия не имею, почему старый перестал работать правильно.
источник