Итак, у меня есть приложение под названием Dripper, которое я выпустил около месяца назад, а затем обновил пару дней назад. В обновлении добавлены push-уведомления и несколько небольших настроек. Я протестировал его с помощью sandbox-apn, используя профиль разработки, и все прошло отлично. Затем я переключился на production-apn и отправил его в тестовый полет, снова все заработало отлично. После того, как я разместил обновление на рынке и запустил его, я заметил, что не получаю новых push-регистраций на сервере. Я просмотрел журналы консоли для устройства и обнаружил следующее:
4 декабря 17:55:15 Ina-touch-it coffco [1210]: Регистрация для удаленных уведомлений
4 декабря 17:55:15 Ina-touch-it SpringBoard [52]: для приложения не найдена допустимая строка прав 'aps-environment' 'Капельница': (ноль). Уведомления не доставляются.
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 и сборке магазина приложений.
Вот мой идентификатор приложения и его права -> http://i.stack.imgur.com/uf4pB.png
Вот профиль обеспечения для магазина приложений -> http://i.stack.imgur.com/AYOV5.png
Ответы:
Я решил эту проблему, включив возможность push-уведомлений.
Нажмите .xcodeproj -> Возможности -> Включить push-уведомление.
источник
Я исправил эту проблему так:
И попробуй еще раз!
Источник:
источник
Вы должны включить Target—> возможности—> push-уведомление. Я столкнулся с этой проблемой, используя Xcode 8.
источник
Такие проблемы возникают из-за того, что текущий профиль обеспечения не содержит информации APNS, поскольку профиль обеспечения создается ДО создания сертификата APNS.
Поэтому, чтобы решить эту проблему, создайте новый профиль обеспечения и выберите профиль обеспечения в Xcode. Тогда все готово.
Кроме того, когда вы добавляете push, я считаю, что вы также обновили сертификаты в связке ключей.
источник
Что касается Xcode 9, некоторые ответы устарели или неполны для решения этой конкретной проблемы.
Вот шаги, которые нужно было выполнить для меня:
1. Создайте профиль обеспечения.
( FCM не является обязательным условием для push-уведомлений, но их руководства удивительно понятны, вот ссылка )
Чтобы протестировать ваше приложение в процессе разработки, вам понадобится профиль Provisioning Profile для разработки, чтобы разрешить вашим устройствам запускать приложение, которое еще не опубликовано в App Store.
2. Активируйте возможности push-уведомлений.
источник
У меня была такая же проблема с версией iOS 8.0 и выше; Я не получил токен устройства и выдавал ошибку: «для приложения не найдена допустимая строка прав 'aps-environment'»
Я исправил это, выполнив следующие шаги
а теперь запустите проект, определенно он сработает.
источник
По какой-то причине решение Вэй у меня не сработало. При нажатии кнопки «Исправить права» Xcode сгенерировал два файла и по-прежнему не работал, действительно, сгенерированные файлы с правами были пустыми.
Это было вызвано (по-видимому) тем, что PRODUCT_NAME проекта был довольно длинным и содержал пробелы и буквы «ä» и «ö». После изменения его на короткую версию с буквами только на английском языке исправление Wei работало правильно.
источник
Мне потребовалось некоторое время, чтобы понять, что вызывает ошибку допуска к действительной среде aps. Проблема заключалась в том, что в проекте XCode было два файла .entitlements. Один из них - права на платформу / ios //., А другой - на платформу / ios // Resources / .entitlements, и соответствующие права присутствуют в первом файле только тогда, когда XCode настроен на использование второго. Я обновил последний файл вручную, и все заработало. Другой способ исправить это - изменить, какие .entitlements используются XCode. Это можно сделать в параметрах конфигурации Build Settings -> Signing -> Code Signing Entitlements.
Я не уверен, почему в XCode есть два файла .entitlements. Может быть, плагин Cordova push создал второй (я разрабатываю гибридное мобильное приложение Cordova)? И как правильно разместить файл .entitlements?
источник
Я столкнулся с этой проблемой и решил ее первым решением.
Однако однажды я потерпел неудачу, потому что у меня было две учетные записи Apple. После удаления одного все стало работать.
источник