Идентификатор пакета и нажмите сертификат... aps-environment

Я прочитал Где xcode принимает идентификатор приложения из?, Форматирование идентификатора пакета XCode из {PRODUCT_NAME} и загружает больше, но...

Я пытаюсь получить push-уведомления и получать страшные

"Ошибка домена = NSCocoaErrorDomain Code = 3000" no valid 'aps-environment' строка права доступа для приложения "UserInfo = 0x15b200 {NSLocalizedDescription = нет допустимой строки права доступа aps-environment найденный для приложения}".

Я уверен, что правильно выполнил все шаги, в том числе:

  • сделал сертификат push заблаговременно перед сертификатом обеспечения
  • сделал 'Entitlements.plist'
  • добавил get-task-allow boolean и установил его в true (ad-hoc release).

Единственное, что я не могу понять, это идентификатор Bundle

Сертификат push для

XXXXXXXXXX.com.julianbaker.pwcnewsuk

Отступы Bundle в PwCNewUK-Info.plist предназначены для

com.julianbaker.${PRODUCT_NAME:rfc1034identifier}

Если я вручную изменю его на

com.julianbaker.pwcnewsuk

Я получаю ошибку несоответствия UDID, поскольку приложение рассматривается как PwCNewsUK

Когда я нахожусь в Googled, кажется, что есть какая-то путаница в этом вопросе, но похоже, что они должны совпадать?

Вопрос:

Что должен сделать Indendifer Bundle для соответствия сертификату push XXXXXXXXXX.com.julianbaker.pwcnewsuk?

Вопрос:

Нужно ли добавлять права доступа "aps-environment" к профилю обеспечения, и если да, то где и как? (См. http://www.airplaysdk.com/node/3174 среди других)

Любящая разработка iPhone, но она может быть время от времени!

Ответ 1

Я нашел этот вопрос, когда я переходил из среды разработки в производственную версию приложения, над которым я работаю. Этот процесс включал создание нового профиля, нового идентификатора приложения и т.д. Я создал идентификатор приложения и профиль, но агенту команды пришлось настраивать push-уведомления. Я столкнулся с проблемой "допустимой строки прав доступа aps-environment", найденной для приложения ", когда я попытался возобновить тестирование с новым профилем (после того, как приложение было настроено для push-уведомлений). Затем я вспомнил, что прочитал небольшую оговорку в документации:

"Вам нужно каким-то образом изменить профиль (например, переключить опцию), чтобы портал создал новый профиль обеспечения. Если профиль не так" загрязнен ", вам предоставляется профиль без нажимать права".

Источник: Руководство по программированию локальных и push-уведомлений

Для меня "загрязнение" профиля обеспечения и его переустановка - это все, что необходимо для устранения проблемы. В документации это требовалось, потому что профиль обеспечения был создан до того, как приложение было настроено для push-уведомлений. Это может или не поможет никому, но это, вероятно, объясняет (и устраняет) необходимость вручную добавлять что-либо в профиль подготовки.

Ответ 2

Я столкнулся с той же "недействительной" версией права доступа aps-environment, найденной для приложения, но приведенные выше решения не сработали для меня.

Я не мог найти очень хорошую документацию об этой ошибке или даже просто "aps-environment".

После некоторого возиться, вот что решило проблему для меня:

Откройте сертификат разработки, "Appname.mobileprovision" с помощью текстового редактора, найдите ключ "Права доступа", затем добавьте все значения, найденные здесь, в файл "Права", на который ссылается ваша настройка "Подписи кодовых подписей".

Вот пример того, какие ключи/значения вы найдете внутри:

<key>application-identifier</key>
<string>xyz.com.xyz.xyz</string>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.ubiquity-container-identifiers</key>
<array>
<string>xyz.*</string>
</array>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>xyz.*</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>xyz.*</string>
</array>

После добавления всех этих значений в мой файл Entitlements мое приложение успешно завершается, и я могу, наконец, вернуться к работе с Push-уведомлениями.

Я не уверен, что эти значения должны быть автоматически добавлены в ваш файл прав XCode, но они, конечно, не были созданы для меня в моем проекте.

Ответ 3

Настройка:

Mac OS X 10.8 + Xcode 4.4

Мое простое решение:

  • Переиздайте профиль своего специального профиля после того, как вы настроите push-уведомления для своего идентификатора приложения и импортируете их в Xcode.
  • Загляните в свою папку .xcodeproj(щелкните правой кнопкой мыши → Показать содержимое пакета) и удалите папку xcuserdata.
  • Что это;)

Некоторые подсказки по этой проблеме:

После активации Push-уведомлений для моего приложения я внезапно не смог создать специальные рекламные файлы. Я столкнулся с ошибками в моем журнале консоли на моем iPhone, пытаясь установить мое приложение, например:

Apr  1 20:56:10 unknown installd[384] <Error>: entitlement 'keychain-access-groups' has value not permitted by a provisioning profile
Apr  1 20:56:10 unknown installd[384] <Error>: entitlement 'get-task-allow' has value not permitted by a provisioning profile
Apr  1 20:56:10 unknown installd[384] <Error>: entitlement 'application-identifier' has value not permitted by a provisioning profile
Apr  1 20:56:10 unknown installd[384] <Error>: 2ff66000 verify_signer_identity: Could not copy validate signature: -402620394
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.44jV0O/foo_extracted/Payload/PersonalTrainer-Tester-iPhone.app
Apr  1 20:56:11 unknown com.apple.itunesstored[392] <Notice>: MobileInstallationInstall: failed with -1
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 install_application: Could not preflight application install
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 handle_install: API failed
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_message: failed to send mach message of 71 bytes: 10000003
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_error: Could not send error response to client

Существует техническая заметка , в которой рекомендуется использовать codesign -d --entitlements - <YourAppName>.app, чтобы проверить, правильно ли подписано ваше приложение для уведомлений Apple Push. В случае, если на выходе команды codeign нет установки aps-environment для производства или разработки, есть что-то подозрительное!

Насколько я знал до сих пор, мои приложения, подписанные с профилем обеспечения adhoc, всегда имеют embedded.mobileprovision внутри папки <YourAppName>.app с определенной частью в них, например:

<key>Entitlements</key>
<dict>
    <key>application-identifier</key>
    <string>ABCDEFGH.com.myappname.tester</string>
    <key>aps-environment</key>
    <string>production</string>
    <key>get-task-allow</key>
    <false/>
    <key>keychain-access-groups</key>
    <array>
        <string>ABCDEFGH.*</string>
    </array>
</dict>

После использования codeign я понял, что в фактическом двоичном файле в <YourAppName>.app также был включен XML файл, в котором говорилось что-то очень отличное от моего файла embedded.mobileprovision:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>ABCDEFGH.com.myappname.tester</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>ABCDEFGH.com.myappname.tester</string>
    </array>
</dict>
</plist>

Я предполагаю, что это причина для сообщения об ошибке, которое мы все испытываем. (хотя эта ошибка может иметь несколько разных корней, а также другие сообщения в представлении stackoverflow)

The executable was signed with invalid entitlements.
The entitlements specified in your application Code Signing Entitlements
file do not match those specified in your provisioning profile. (0xE8008016).

Моя догадка заключается в том, что в Xcode есть некоторая ошибка, которая сохраняет настройки в вашем plist от обновления в ваших схемах, которые затем заставляют ваше приложение подписываться с неправильным профилем подготовки в конце. Поэтому, удалив папку xcuserdata, вы удалите все схемы. Поэтому Xcode заново воссоздает их в следующий раз с правильными настройками, и вы снова будете счастливы.

Ответ 4

По сути, ответ та же самая неопределенная, что все остальные говорят

  • Удостоверьтесь, что у вас добавлен "Entitlements.plist" ( "Новый подписи/права на файл/код" )
  • Добавить "get-task-allow" (Boolean Off) в Entitlements.plist
  • Добавить парную "aps-environment" "aps-environment" в Entitlements.plist - Этот последний шаг может оказаться ненужным, но это был один из шагов, которые я сделал перед тем, как он работал.
  • Удалить старые файлы мобильного доступа с iPhone/iPod (в настройках/Общие),
  • Удалить старые файлы мобильных приложений из XCode Organizer
  • Удалить приложение с iPhone/iPod
  • Выйти из XCode
  • Загрузите новую копию сертификата Provisioning
  • Проверить для "aps-environment" "производственную" пару в сертификате с помощью текстового редактора
  • Запустить XCode
  • Добавить новый файл mobileprovision, перетащив его на значок XCode Doc
  • Убедитесь, что вы переназначили/присвоили правильный сертификат в целевой информации: Подпись кода: идентификация подписи кода
  • Двойная проверка, чтобы результаты сборки отображали ее с использованием правильного профиля и правильно подписались.

Повторяйте эти шаги спокойно до тех пор, пока это не сработает, взял меня около пяти разных комбинаций. Я также переключился с разработки на Ad-hoc, который, по-видимому, не нужен, но гарантировал новый файл mobileprovision.

Ответ 5

Используя XCode4 и получив ту же самую "не действительную" строку прав доступа aps-environment, найденную для приложения "Мне пришлось сделать следующее:

  • Удалить старые профили подготовки из панелей Library + Device в Organizer
  • Регенерировать новый профиль с помощью APN dev с сайта портала разработчиков.
  • Убедитесь, что новый профиль добавлен на панели "Библиотека" + "Устройство" в "Органайзер"
  • Вручную удалите приложение с моего устройства (удерживая его до щелчка и нажав X)
  • CMD + OPT + SHIFT + K (очистить папку сборки) и CMD + SHIFT + K (очистить)
  • Установите подходящий профиль в разделе "Проект" > "Настройки сборки" > "Подпись кода"
  • Убедитесь, что "Использовать права" не отмечен в разделе "Цели" > "Сводка"

Ответ 6

В разделе "Проект" → "Настройки сборки" → "Подписание кода", убедитесь, что вы выбрали правильный профиль Provisioning (один с нажатием кнопки).

Это все, что мне нужно было изменить, чтобы заставить его работать.

Ответ 7

Ни одно из вышеперечисленных не работало для меня!

  • Удалить все профили Provisioning в Xcode Organizer
  • Удалить все Сертификаты разработчиков в Брелок
  • Удалить все Профили Provisioning в устройстве iPhone
  • В IOS Provisioning Portal удалите профиль Provisioning Profile, который автоматически создается Xcode
  • Создайте новый профиль Provisioning Profile, назначив правильную комбинацию (сертификат/приложение/устройство)
  • Загрузите новый профиль Provisioning Profile
  • Импортировать новый профиль Provisioning Profile в Организатор Xcode
  • CMD + Option + Shift + K
  • CMD + Shift + K
  • CMD + R
  • Ура:)

Ответ 8

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

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

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

Ответ 9

решение для 10.8 Xcode 4.4 является для открытия файла appname.entitlements

и если ключ DataProtectionClass имеет значение NSFileProtectionComplete, удалите его!

Удаление этого ключа позволяет мне тестировать приложения с Xcode на устройствах (это не повлияло на моделирование).

Ответ 10

У меня была та же проблема. Для меня это было так:

  • Удалены и перезагружены профили подготовки из организатора.
  • Выбранный мой профиль профилей в настройках проекта → подписание кода. Каким-то образом он хотел использовать идентификатор blabla. *.

Профиль подстановочного знака ([префикс]. *) не будет выполняться при попытке запустить приложение с поддержкой APN, вам необходимо указать профиль с поддержкой APN.

Ответ 11

Я только что понял это через несколько часов, поэтому в дополнение к тому, что сказал ДжулианБ,

  • убедитесь, что у вас есть значок приложения. У вас, вероятно, есть один, но мне удалось добавить толчок, когда мы были между версиями значков. Я пробовал выделять разные вещи, и в конце концов это было все, что требовалось, поэтому это может быть даже не проблема с сертификатом или подписью.
  • Я также прочитал поврежденный файл изображения, также может быть причиной
  • Я не добавлял/не видел ключ aps-environment в my rights.plist
  • очистить все объекты до сборки.

Ответ 12

Для меня это сработало после смены идентификатора связки на что-то случайное. Убедитесь, что ошибка подписания действительно отображается (удалите все профили обеспечения из организатора и устройства и выполните чистую сборку CMD + OPT + SHFT + K, затем CMS + SHFT + K, а затем CMD + R), а затем смените идентификатор пакета на соответствующий.

Ответ 13

Мое решение состояло в том, чтобы удалить и снова создать Профиль разработки Provisioning Profile. Он был указан как "Недопустимый" - не истек, а также не удалось обновить (Xcode 4.3.2 и iOS 5.1)

Ответ 14

Убедитесь, что вы выбрали правильный. Профиль подготовки. Я обнаружил, что пытался с профилем Team Provisioning (для идентификатора приложения: *). Далее в списке было правильно для приложения.

Ответ 15

Моя проблема была в этом. Я создал приложение, которое настроило push-уведомления, а в делегате приложения я регистрировался для push-уведомлений с помощью:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

Но перед выпуском приложения мне пришлось создать новый профиль создания на другом портале разработчика. Я создал новый идентификатор приложения, новое обеспечение для разработки и распространения, загрузил новое обеспечение, в целевой программе я установил правильную настройку. Также я изменил идентификатор пакета. Но я получал эту ошибку.

Проблема заключалась в том, что новый AppId не настроен для push-уведомлений, но вызывает

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

создавала ошибку. Когда я настроил push notifications, ошибка не отображалась снова.

Ответ 16

У меня была эта проблема, сценарий был:

Я установил идентификатор приложения без поддержки push-уведомлений. Я использую Xcode 5.1 + iOS 7.1

Позднее был изменен идентификатор приложения для добавления push-уведомлений в процессе разработки и производства.

Создал сертификаты APN для обоих.

Когда вы тестируете PN, используя ваше устройство, подключенное к Xcode, все работает нормально. Проблема возникает, когда вы отпустите приложение для производства, вы продолжаете получать:

"Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string
 found for application" UserInfo=0x15b200 {NSLocalizedDescription=no valid     
'apsenvironment' entitlement string found for application}" error.

Решение, которое сработало для меня, было:

  • Удалить профили подготовки для разработки и распространения (портал Xcode и Developer).
  • Удалите свой идентификатор приложения (портал разработчика).
  • Создайте новый идентификатор приложения с поддержкой Push Notation для разработки и производства.
  • Создайте новые профили подготовки, используя новый идентификатор приложения.
  • Установите их на Xcode.
  • Тест по выпуску разработки и распространения.

Ответ 17

enter image description here

Сделайте профиль правильным, и эта работа для меня. Надеемся на эту помощь.

Ответ 18

В моем случае решение этой ошибки оказалось простым после нескольких часов обработки сертификатов...

На вкладке Capabilities конфигурации проекта мне пришлось включить флаг Push Notification, чтобы файлы среды были сгенерированы.

macOS Sierra 10.12 - Xcode 8.1

введите описание изображения здесь

Ответ 19

Фактически ваш предварительный профиль удален с сайта разработчика Apple. & вы получите ошибку для