Xcode 8 возможности push-уведомления и настройки файлов прав

при использовании xcode 8, выполняющего настройку push-уведомления, в отличие от xcode 7, xcode 8 необходимо, чтобы разработчик включил возможности push-уведомлений (расположен в TARGETS -> AppName -> Capabilities как следующий рис.), Push-уведомления

то он будет генерировать файл AppName.entitlements следующим образом

//AppName.entitlements
<key>aps-environment</key>
<string>development</string>

но для производственной версии App, если мы изменим строку на

//AppName.entitlements
<key>aps-environment</key>
<string>production</string>

то возможности показывают предупреждение

Предупреждение о возможностях

и кажется, что независимо от того, какое строковое значение указано в aps-environment, мы все равно можем получить токен устройства push на application:didRegisterForRemoteNotificationsWithDeviceToken:

Итак, какова правильная настройка прав на push-уведомление? спасибо

Ответ 1

Я боролся с этим сегодня в Xcode 8 GM. После отключения этого параметра, удалив профиль подготовки портала разработчика и восстановив его и включив параметр снова, я смог устранить предупреждение в Xcode. Имейте в виду, что я не играл в файл прав. Я оставил его в среде разработки и после архивации получил правильную настройку aps-environment (production).

Похоже, что Xcode является слишком сильным, даже в GM

Ответ 2

Моя проблема заключалась в том, что мой клиент-толкатель устарел и будет только успешно отлаживать токены. Другая проблема, над которой я все еще работаю, - это то, что я могу экспортировать приложение через тренажерный зал с включенным legacy-api, это не означает, что apns-environment будет "производством" и оставит его "разработкой" в ' embedded-mobile.provision '. Однако я смог успешно разместить приложение через организатор xcode для работы с apns (prod).

Ответ 3

Я думаю, что лучшим решением является открытый пакет проекта и откройте project.pbxproj

измените CODE_SIGN_ENTITLEMENTS

CODE_SIGN_ENTITLEMENTS = "your-app/production.entitlements";