Для приложения в магазине приложений не найдена допустимая строка прав 'aps-environment'

105

Итак, у меня есть приложение под названием 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

Джессия
источник
Здесь он подписывается и загружен -> i.stack.imgur.com/AziCI.png параметры сборки -> i.stack.imgur.com/j2TFG.png
Jessiah

Ответы:

283

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

Нажмите .xcodeproj -> Возможности -> Включить push-уведомление.

вэй
источник
15
В XCode 8 я увидел в этом разделе ошибку, в которой говорилось, что необходимо добавить файл прав. Я нажал на это, чтобы исправить это, и тогда все заработало.
Pellet
Только недавно появилось при запуске разработки в Xcode 8, и это исправило его. Спасибо!
Kody R.
Ранее работал над Xcode 7.3, но внезапно не регистрировался в Xcode 8, но это решило мою проблему, включив возможность push-уведомлений.
Винод Ратод,
Apple решает спрятать эту опцию где-нибудь глубоко внутри Xcode 8.1. Пожалуйста, дайте мне знать, если кто-нибудь сможет его найти.
Thomas Sebastian
У меня не было опции «Push-уведомление» в списке возможностей. Это было как-то связано с тем, что XCode автоматически генерировал мой профиль подготовки (я новичок в разработке iOS, поэтому могу ошибаться ...). Мне пришлось войти в свою учетную запись разработчика и вручную создать профиль обеспечения для моего приложения, прежде чем оно отобразило Push-уведомления в списке возможностей. Наконец, его включение устранило эту проблему.
Макс Мамфорд
103

Я исправил эту проблему так:

  • Перейдите в "Настройки" Xcode
  • Перейдите на вкладку "Аккаунты"
  • Выберите мой Apple ID и нажмите «Подробнее»
  • Щелкните стрелку в нижнем левом углу, чтобы обновить
  • Нажмите "Готово"

И попробуй еще раз!

Источник:

Эрван
источник
6
тогда вы должны выбрать правильный профиль обеспечения в настройках сборки
Хашем Абунаджми
2
В моем случае мне нужно было восстановить профили обеспечения в центре разработки. Затем снова загрузите все профили и сертификаты через Xcode> настройки> Учетные записи> Ваш Apple ID> кнопка просмотра сведений в правом углу> кнопка загрузки всех. После этого он должен снова заработать.
blackjacx
2
Мне грустно, что в процессе развертывания и развертывания так много сбоев. Единственный способ вынести все это - делать все на 100% вручную и знать, что пытается сделать Xcode, а также управлять идентификаторами связки ключей и профилями обеспечения в файловой системе и с помощью утилиты настройки iPhone.
Tom Pace
57

Вы должны включить Target—> возможности—> push-уведомление. Я столкнулся с этой проблемой, используя Xcode 8.введите описание изображения здесь

Рам Г.
источник
18

Такие проблемы возникают из-за того, что текущий профиль обеспечения не содержит информации APNS, поскольку профиль обеспечения создается ДО создания сертификата APNS.

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

Кроме того, когда вы добавляете push, я считаю, что вы также обновили сертификаты в связке ключей.

Фахим Паркар
источник
Профиль, который я использую, был создан после того, как я создал сертификат для производственного push apn. Могу ли я что-то сделать, чтобы подтвердить, что он отсутствует или содержит информацию об apns?
Джессия
@Jessiah: Нет .. Это похоже на то, что мы должны идти по стопам Apple.
Fahim Parkar
6

Что касается Xcode 9, некоторые ответы устарели или неполны для решения этой конкретной проблемы.

Вот шаги, которые нужно было выполнить для меня:

1. Создайте профиль обеспечения.

( FCM не является обязательным условием для push-уведомлений, но их руководства удивительно понятны, вот ссылка )

Чтобы протестировать ваше приложение в процессе разработки, вам понадобится профиль Provisioning Profile для разработки, чтобы разрешить вашим устройствам запускать приложение, которое еще не опубликовано в App Store.

  1. Перейдите в Центр участников Apple Developer и войдите в систему.
  2. Перейдите к сертификатам, идентификаторам и профилям.
  3. В раскрывающемся меню в верхнем левом углу выберите iOS, tvOS, watchOS, если он еще не выбран, затем перейдите к Provisioning Profiles> All.
  4. Нажмите кнопку +, чтобы создать новый профиль обеспечения.
  5. Выберите «Разработка приложений для iOS» в качестве типа профиля подготовки и нажмите «Продолжить».
  6. В раскрывающемся меню выберите идентификатор приложения, который вы хотите использовать, затем нажмите «Продолжить».
  7. Выберите сертификат разработки iOS для идентификатора приложения, который вы выбрали на предыдущем шаге, затем нажмите «Продолжить».
  8. Выберите устройства iOS, которые вы хотите включить в профиль обеспечения, затем нажмите «Продолжить». Обязательно выберите все устройства, которые хотите использовать для тестирования.
  9. Введите имя для этого профиля подготовки (например, образец профиля разработки приложений Firebase), затем нажмите «Создать».
  10. Нажмите «Загрузить», чтобы сохранить профиль обеспечения на свой Mac.
  11. Дважды щелкните файл профиля обеспечения, чтобы установить его.

2. Активируйте возможности push-уведомлений.

  1. Перейдите в редактор проекта из официального руководства введите описание изображения здесь
  2. В разделе возможностей активируйте push-уведомление введите описание изображения здесь
Micaball
источник
4

У меня была такая же проблема с версией iOS 8.0 и выше; Я не получил токен устройства и выдавал ошибку: «для приложения не найдена допустимая строка прав 'aps-environment'»

Я исправил это, выполнив следующие шаги

  • Я создал новый профиль подготовки для идентификатора приложения
  • добавил это в xcode
  • проект Перейти к Xcode «Настройки»
  • Перейдите на вкладку «Учетные записи». Выберите мой Apple ID и нажмите «Подробнее»
  • выберите свой профиль обеспечения
  • Щелкните стрелку в нижнем левом углу, чтобы обновить
  • Нажмите "Готово"

а теперь запустите проект, определенно он сработает.

Венки Читтала
источник
3

По какой-то причине решение Вэй у меня не сработало. При нажатии кнопки «Исправить права» Xcode сгенерировал два файла и по-прежнему не работал, действительно, сгенерированные файлы с правами были пустыми.

Это было вызвано (по-видимому) тем, что PRODUCT_NAME проекта был довольно длинным и содержал пробелы и буквы «ä» и «ö». После изменения его на короткую версию с буквами только на английском языке исправление Wei работало правильно.

FrankByte.com
источник
1

Мне потребовалось некоторое время, чтобы понять, что вызывает ошибку допуска к действительной среде aps. Проблема заключалась в том, что в проекте XCode было два файла .entitlements. Один из них - права на платформу / ios //., А другой - на платформу / ios // Resources / .entitlements, и соответствующие права присутствуют в первом файле только тогда, когда XCode настроен на использование второго. Я обновил последний файл вручную, и все заработало. Другой способ исправить это - изменить, какие .entitlements используются XCode. Это можно сделать в параметрах конфигурации Build Settings -> Signing -> Code Signing Entitlements.

Я не уверен, почему в XCode есть два файла .entitlements. Может быть, плагин Cordova push создал второй (я разрабатываю гибридное мобильное приложение Cordova)? И как правильно разместить файл .entitlements?

Алексей Рыльцов
источник
-1

Я столкнулся с этой проблемой и решил ее первым решением.

Однако однажды я потерпел неудачу, потому что у меня было две учетные записи Apple. После удаления одного все стало работать.

Desen GUO
источник