Идентификатор пакета и push-сертификат ... aps-ошибка права среды
Я читал откуда xcode берет идентификатор приложения?,форматирование идентификатора пакета XCode из {PRODUCT_NAME} , и нагрузки больше, но...
Я пытаюсь получить push-уведомления идем и страшный
"Error Domain = Nscocoaerrordomain Code=3000 "нет допустимой' aps-среды'
строка права найдена для приложения " UserInfo=0x15b200
{NSLocalizedDescription=нет допустимой 'aps-среды' строки избранности
найдено для приложения} " ошибка.
Я совершенно уверен, что я правильно выполнил все шаги, в том числе:
- сделал push-сертификат задолго до сертификата подготовки
- сделал права в '.plist'
- добавил получить-задача-разрешить логическое и установить его в true (специальный выпуск)
единственное, что я не могу понять, это идентификатор пакета
В push сертификат предназначен для
XXXXXXXXXX.com.julianbaker.pwcnewsuk
идентификатор пакета в PwCNewUK-Info.plist-это для
com.julianbaker.${PRODUCT_NAME:rfc1034identifier}
Если я вручную изменить его на
com.julianbaker.pwcnewsuk
Я получаю ошибку несоответствия UDID, поскольку приложение рассматривается как PwCNewsUK
когда я погуглил это, кажется, есть некоторая путаница по этому вопросу, но, похоже, они должны соответствовать?
вопрос:
каким должен быть идентификатор пакета, чтобы соответствовать сертификату push из
ХХХХХХХХХХ.ком.julianbaker.pwcnewsuk ?
вопрос:
нужно ли добавить право "aps-environment" в профиль подготовки, и если да, то где и как? (См.http://www.airplaysdk.com/node/3174 среди прочих)
любящий развитие iPhone, но sheesh это может быть headbanger в разы!
19 ответов:
Я нашел этот вопрос, когда я переходил из среды разработки в производственную среду в приложении, над которым я работаю. Этот процесс включал создание нового профиля, нового идентификатора приложения и т. д. Я создал идентификатор приложения и профиль, но агент команды должен был настроить push-уведомления. Я столкнулся с проблемой "нет допустимой строки права "aps-environment", найденной для приложения" , когда я попытался возобновить тестирование с новым профилем (после того, как приложение было настроено для push-уведомления). Затем я вспомнил, что читал небольшое предостережение в документации:
" необходимо изменить профиль каким-либо образом (например, переключить параметр) для портала, чтобы создать новый профиль подготовки. Если профиль не настолько "загрязнен", вам предоставляется профиль без прав push."
источник: руководство по программированию локальных и Push-уведомлений
для меня, "загрязняя" профиль подготовки и переустановка его была все, что было необходимо, чтобы решить эту проблему. Согласно документации, это было необходимо, так как профиль подготовки был создан до того, как приложение было настроено для push-уведомлений. Это может помочь или не помочь никому, но это, вероятно, объясняет (и устраняет) необходимость вручную добавлять что-либо в профиль подготовки.
я столкнулся с той же проблемой" нет допустимой строки права "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>после добавления всех этих значений в мой файл прав мое приложение успешно строится, и я могу, наконец, вернуться к работе с Push-уведомлениями.
Я не уверен, что эти значения должны автоматически добавляться в ваш файл прав с помощью XCode, но они конечно, они не были созданы для меня в моем проекте.
Setup:
Mac OS X 10.8 + Xcode 4.4
Мое Простое Решение:
- Переиздайте свой специальный профиль подготовки после установки push-уведомлений для вашего идентификатора приложения и импортируйте их в Xcode.
- взгляните в свой .папка xcodeproj (щелкните правой кнопкой мыши - > показать содержимое пакета) и удалите .
- вот именно ;)
какие-то намеки по этому вопросу:
после активации 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. В случае, если выходные данные команды codesign не имеют значения 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>после использования codesign я понял, что фактический двоичный файл в
<YourAppName>.appбыли некоторые XML включены, а также, который сказал что-то очень отличается от моегоembedded.mobileprovisionfile:<!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's Code Signing Entitlements file do not match those specified in your provisioning profile. (0xE8008016).Я предполагаю, что в Xcode есть какая-то ошибка, которая удерживает настройки в вашем plist от обновления в ваших схемах, что затем приводит к тому, что ваше приложение будет подписано с неправильным профилем подготовки в конце концов. Поэтому, удалив папку xcuserdata, вы удаляете все схемы. Поэтому Xcode воссоздаст их в следующий раз с правильными настройками, и вы снова счастливы.
по существу ответ тот же самый расплывчатый, что и все остальные
- убедитесь, что у вас есть "права.plist " добавлено (новый файл / подпись кода / права)
- добавить "get-task-allow" (Boolean Off) к правам.файл plist
- добавить пару "aps-environment ""production"к правам.plist -- Этот последний шаг может быть ненужным, но это был один из шагов, которые я сделал перед тем, как он сработал
- удаление старых файлов mobileprovision с iPhone / iPod (In Настройки / Общие),
- удалить старые файлы mobileprovision из Xcode Organiser
- удалить приложение с iPhone / iPod
- Выйти Из XCode
- загрузите свежую копию сертификата инициализации
- проверьте наличие пары "aps-environment ""production" в сертификате с помощью текстового редактора
- Start XCode
- добавить свежий файл mobileprovision, перетащив на значок Xcode Doc
- убедитесь, что вы переназначили/назначено правильное сертификат в целевой информации: подпись кода: удостоверение подписи кода
- дважды проверьте, что результаты сборки, чтобы увидеть его он использует правильный профиль и подписан правильно
повторите эти шаги спокойно, пока он не работает, взял меня около пяти ходов различных комбинаций. Я также переключился с разработки на Ad-hoc, который, по-видимому, не нужен, но гарантировал новый файл mobileprovision.
используя XCode4 и получая ту же "нет допустимой строки права "aps-environment", найденной для приложения", я должен был сделать следующее:
- удалите старые профили подготовки из обеих панелей библиотека + устройство в органайзере
- регенерировать новый профиль с APN dev включен с веб-сайта портала разработчика
- убедитесь, что новый профиль добавлен в обе панели библиотеки + устройства в органайзере
- вручную удалить приложение с моего устройства (холдинг пока он не дрожит и не ударяет X)
- КМД+опт+шифт+к (папка чистую сборку) и Cmd+шифт+к (чистой)
- установите правильный профиль в разделе Проект > настройки сборки > подпись кода
- убедитесь, что "использовать права" не проверяется в разделе Цели > сводка
В Разделе "Проект" - > "Настройки Сборки" - > "Подпись Кода", убедитесь, что вы выбрали правильный профиль подготовки (с пуш включен).
Это было все, что мне нужно изменить, чтобы заставить его работать.
ни один из выше работал для меня!
- удалить Профиль Подготовки на Xcode Organizer
- удалить разработчики сертификатов на брелок
- удалить Профиль Подготовки на устройство iPhone
- на iOS Provisioning Portal, удалить Профиль Обеспечения Разработки, который был создан автоматически на Xcode
- создать новый Профиль Подготовки назначив правильную комбинацию (сертификат / AppID / устройство)
- скачать новые Профиль Подготовки
- импортировать новый Профиль Подготовки на Xcode Organizer
- CMD + Option + Shift + K
- CMD + Shift + K
- CMD + R
- Ура :)
убедитесь, что вы используете приложение правильно с профилем подготовки.
Я имею в виду, что если вы включили свое приложение для Push-уведомлений только для распространения, и вы пытаетесь заставить push-уведомления работать с помощью сборки с помощью XCode, это не сработает.
Я столкнулся с этой проблемой, и, включив push-уведомление для разработки для идентификатора приложения, а затем используя профиль подготовки к разработке, я больше не получал ошибку и правильный вид оповещения спросил, хочу ли я получать уведомления толчка.
решение для 10.8 в Xcode 4.4-это чтобы открыть
appname.entitlementsfileи если
DataProtectionClassключ имеет значениеNSFileProtectionComplete, удалите его!удаление этого ключа позволяет мне тестировать приложения из Xcode на устройствах (это не влияло на симуляцию).
У меня была та же проблема. Для меня исправление было так:
- удалены и перезагружены профили подготовки из организатора.
- выберите Мой именованный профиль подготовки в разделе параметры проекта- > подпись кода. Каким-то образом он хотел использовать blabla.* идентичность.
подстановочный профиль ([префикс].* ) не будет делать, когда вы пытаетесь запустить приложение с поддержкой APN, вам нужно указать профиль с поддержкой APN.
Я просто понял это через несколько часов, так что в дополнение к тому, что сказал Джулианб,
- убедитесь, что у вас есть значок приложения. У вас, вероятно, есть один, но я случайно добавил push, когда мы были между версиями значков. Я пробовал выделять разные вещи, и в конце концов это было все, что нужно, поэтому это может быть даже не проблема с сертификатом или подписанием.
- Я также читал поврежденный файл изображения также может быть причиной
- i не добавлял/не видел ключ aps-environment в моих правах.файл plist
- очистите все цели перед построением
для меня это сработало после изменения идентификатора пакета, чтобы что-то случайное. Убедитесь, что ошибка подписи действительно отображается (удалите все профили подготовки из организатора и устройства и выполните чистую сборку
CMD + OPT + SHFT + KзатемCMS + SHFT + Kа тоCMD + R), а затем изменить идентификатор пакета обратно в соответствующий.
мое решение было удалить и создать снова Профиль Обеспечения Разработки. Это было указан как "недопустимый" - не истек, а также обновить не удалось (Xcode 4.3.2 и iOS 5.1)
убедитесь, что вы выбрали правильный. Профиль Подготовки. Я обнаружил, что пытаюсь использовать профиль подготовки команды.(для идентификатора приложения: *) далее в списке, был правильный для приложения.
моя проблема была в этом. Я создал приложение, которое настроило push-уведомления, и в делегате приложения я регистрировался для push-уведомлений с помощью:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];но перед выпуском приложения мне пришлось создать новый профиль подготовки на другом портале разработчика. Я создал новый идентификатор приложения, новую подготовку для разработки и распространения, загрузил новую подготовку, в цели приложения я установил правильную подготовку. Также я изменил идентификатор пакета. Но я получал эту ошибку.
проблема заключалась в том, что новый AppId не был настроен для push-уведомлений, но вызывал
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];создает ошибку. Когда я настроил push-уведомления ошибка не отображается снова.
У меня была эта проблема, сценарий был:
Я установил идентификатор приложения без поддержки push-уведомлений. Я использую Xcode 5.1 + iOS 7.1
позже отредактировал идентификатор приложения, чтобы добавить уведомления толчка в разработке и производстве.
создал сертификаты APNs для обоих.
при тестировании 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 и портал разработчика).
- удалите идентификатор приложения (портал разработчика).
- создайте новый идентификатор приложения с поддержкой Push-уведомлений для разработки и производства.
- создание новых профилей подготовки с помощью новый идентификатор приложения.
- установить их на Xcode.
- тест на разработку и выпуск дистрибутива.
на самом деле ваш предварительный профиль удален с сайта разработчика apple.& вы получаете ошибку для


Comments