Ответ 1
Я исправляю эту проблему, предоставляя возможность push-уведомления.
Нажмите на .xcodeproj → Возможности → Включить Push Notification
Итак, у меня есть это приложение под названием "Капельница", которое я выпустил около месяца назад, а затем обновление пару дней назад. Обновление добавило push-уведомления и несколько небольших настроек. Я тестировал его с помощью sandbox-apn, используя профиль разработки, и все отлично работало. Затем я переключил все на производство и подтолкнул его к испытательному полету, и все получилось отлично. Как только я разместил обновление на рынке и запустил его, я заметил, что я не получил никаких новых регистраций на сервере. Я посмотрел на консольные журналы для устройства и нашел это:
4 декабря 17:55:15 Ina-touch-it coffco [1210]: Регистрация для удаленных уведомлений
Dec 4 17:55:15 Ina-touch-it SpringBoard [52]: нет правильной строки права доступа" aps-environment" для приложения "Капельница": (null). Уведомления не будут доставлены.
Dec 4 17:55:15 Ina-touch-it coffco [1210]<Warning>: Failed to register with error : Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x174270900 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
Я немного смущен, потому что я думал, что production-apn будет работать одинаково между сборками ad-hoc и app store.
Вот мой идентификатор приложения и его права → http://i.stack.imgur.com/uf4pB.png
Вот профиль обеспечения для магазина приложений → http://i.stack.imgur.com/AYOV5.png
Я исправляю эту проблему, предоставляя возможность push-уведомления.
Нажмите на .xcodeproj → Возможности → Включить Push Notification
Я исправил эту проблему следующим образом:
И попробуйте еще раз!
Источник:
Вам необходимо включить функцию Target- > capability- > push. Я столкнулся с этой проблемой, используя Xcode 8.
Такие проблемы возникают из-за того, что текущий профиль Provisioning Profile не содержит информацию APNS, поскольку профиль Provisioning Profile создается до создания сертификата APNS.
Поэтому для решения проблемы создайте новый профиль Provisioning Profile и выберите профиль Provisioning Profile в Xcode. Затем вы ДОЛЖНЫ.
Кроме того, когда вы добавляете push, я считаю, что вы также обновили сертификаты в цепочке ключей.
У меня была такая же проблема с использованием версий iOS 8.0 и выше; Я не получил токен устройства и выдавал ошибку: "нет допустимой строки прав доступа aps-environment, найденной для приложения"
Я исправил его, используя следующие шаги
и теперь запустить проект определенно, он будет работать.
По какой-то причине решение Wei не работало для меня. При нажатии на права Fix, Xcode сгенерировал два файла, и он все еще не функционировал, действительно, сгенерированные файлы прав были пустыми.
Это было вызвано (по-видимому) PRODUCT_NAME проекта довольно длинным и включает пробелы и буквы "ä" и "ö". После того, как вы изменили его на короткую версию с буквами только на английском языке, исправление Wei работало правильно.
Относительно Xcode 9, некоторые ответы устарели или неполны, чтобы решить эту специфическую проблему.
Вот шаги для меня:
(FCM не является обязательным условием для push-уведомлений, но их руководства поразительно ясны, вот ссылка)
Чтобы протестировать ваше приложение в процессе разработки, вам необходим профиль обеспечения для разработки, чтобы авторизовать ваши устройства для запуска приложения, которое еще не опубликовано в App Store.
Мне потребовалось некоторое время, чтобы выяснить, что не вызывает действительной ошибки прав доступа aps-environment. Проблема заключалась в том, что в проекте XCode было два файла .entitlements. Один - это права платформы /ios//., А другой - платформа /ios//Ресурсы/.entitlements, и соответствующие права присутствуют в первом файле только тогда, когда XCode настроен на использование последнего. Я обновил последний файл вручную, и все начало работать. Еще одна возможность исправить это - изменить .entitlements, который используется XCode. Это можно сделать в настройках Build → Signing → Code Signit Entitlements.
Я не уверен, почему в XCode есть два файла .entitlements. Может быть, плагин Cordova Push создал второй (я разрабатываю гибридное мобильное приложение Cordova)? И какое правильное расположение для файла .entitlements?
Я столкнулся с этой проблемой и решил ее первым решением.
Тем не менее, я однажды потерпел неудачу, потому что у меня было две учетные записи Apple. После удаления одного все стало работать.