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";