Как решить, "право" keychain-access-groups "имеет значение, не разрешенное профилем обеспечения" - PullRequest
10 голосов
/ 29 ноября 2011

Я использую связку ключей в своем приложении, и я получаю эту ошибку, когда запускаю приложение как AdHoc.Он не появляется, когда я запускаю его с отладчиком (с профилем обеспечения разработчика).Если приложение уже установлено на устройстве, и я устанавливаю его поверх него из XCode, то я замечаю, что приложение не имеет доступа к связке ключей.Это происходит, конечно, из-за этих ошибок.

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

Может кто-нибудь помочь мне решить это?

Ответы [ 5 ]

6 голосов
/ 23 мая 2012

Здесь довольно старый пост здесь вам нужны права, чтобы сказать, под каким Идентификатором пакета у вас находится Bundle семя приложения, поскольку именно так KeyChain позволяет вашему приложению получить к нему доступ.

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

Так что, если приложение A имеет общий идентификатор пакета: com.yourcompany.AAAAAA И приложение B в качестве общего идентификатора пакета com.yourcompany.BBBBBB

И если у них обоих есть файл прав в .ipa (plist, содержащий массив с ключом "keychain-access-groups" со строкой ".com.yourcompany.AAAAA" и .com.yourcompany.BBBBB ")

Они могут делиться доступом к KeyChain ..

  • Относительно вашей проблемы отладки / AdHoc. в настройках проекта проверьте в разделе «Подписывание кода» -> «Права подписи кода», что оба они пусты ..
4 голосов
/ 09 июля 2013

Я нашел решение. Кажется, префикс appID для профилей adHoc и Debug различен.

Предположим, у нас есть следующие идентификаторы приложений:

  • a.com.mycompany.A
  • б. *

Второй идентификатор был создан xcode, и его префикс используется для подписи отладочной версии приложения. Первый идентификатор используется для подписи AdHoc-версии приложения.

Если вы сейчас попытаетесь использовать связку ключей с группой доступа a.com.mycompany, вы получите доступ к связке ключей для версии AdHoc. Если вы используете accessgroup b.com.mycompany, вы получаете доступ в отладочной версии. Ни один из них не работает для обоих.

Я решил проблему, создав новый подстановочный идентификатор: a. * И использовав его для «профиля обеспечения iOS Team: *». Кажется, что этот профиль обеспечения каким-то образом используется для подписи отладочной сборки приложения. Я действительно думал, что он использует профили обеспечения разработки для подписи?!

Однако с этими изменениями я могу получить доступ к цепочке для ключей в режиме отладки и adHoc с одной и той же группой доступа.

Похоже, что новые зарегистрированные пользователи не сталкиваются с этой проблемой, теперь xCode автоматически создает идентификатор с правильным префиксом.

1 голос
/ 18 ноября 2015

In столкнулся с этой же проблемой и несколькими ее изменениями (ошибка ITMS-90164, среди прочих). После нескольких часов работы с различными настройками, но безрезультатно, наконец, я неохотно последовал за Техническими вопросами и ответами Apple QA1814: Настройка XCode для автоматического управления вашими профилями . Шаги очень простые и понятные, со скриншотами и очень важным примечанием по переработке Xcode после того, как вы внесете изменения. Самое главное, что это решило мои проблемы и позволило мне наконец загрузить свой архив в App Store.

0 голосов
/ 13 июля 2017

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

Идентификатор моей организации изменился (может быть связан с принятием последнего обновления соглашения на developer.apple.com), поэтому префикс моего приложения изменился.Итак, если раньше это было, возможно, ABCCYZ0U812.com.whatever.app, то теперь это было 90210SUXX11.com.whatever.app

Когда я пошел, чтобы отправить, вы получили экран с надписью «Отправляет (имя приложения) в Apple», и есть список под названием «Бинарный»and Entitlements ", когда я расширил бы список в своем приложении (дважды, так как я предполагаю, что Xcode имеет ошибку в первый раз), я увидел бы что-то вроде

AppName.app (5 entitlements)          (provisioning profile) (arrow)

application-identifier
90210SUXX11.com.whatever.app

...

keychain-access-groups
ABCCYZ0U812.com.whatever.app

com.apple.developer.team-identifier
90210SUXX11

Так что по некоторым причинам он все еще использовалстарый идентификатор команды для бита keychain-access-groups, но теперь он не совпадает с новым идентификатором команды

Я сделал следующее

  1. Нажмите стрелку рядом с профилем обеспечения, чтобы открыть Finderк месту, где хранятся профили
  2. Удалил все файлы .mobileprovision в этом каталоге
  3. Закрыто из диалога отправки
  4. В Xcode нажмите Xcode -> Preferences ->Учетные записи и моя учетная запись повторно загрузили профили инициализации
  5. Попытался снова отправить архив

Теперь все совпало и все заработало

AppName.app (5 entitlements)          (provisioning profile) (arrow)

application-identifier
90210SUXX11.com.whatever.app

...

keychain-access-groups
90210SUXX11.com.whatever.app

com.apple.developer.team-identifier
90210SUXX11

TherЭто может быть более тонкий способ исправить это, не удаляя все, но это должно поставить вас на правильный путь.

0 голосов
/ 04 ноября 2014

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

У меня была эта проблема в XCode 6. У меня было две цели в моем проекте, и одна из них всегда была построена снеправильный профиль, независимо от того, что я сделал (включая изменение настройки профиля обеспечения в настройках сборки).

После нескольких часов игры с ним я заметил следующее:

  1. Хорошей целью было использование профиля обеспечения с именем "XC: com.mycompanyname.mytargetname1"
  2. Сломанной целью был использование профиля с именем "XC:".Этот профиль является профилем «Xcode: Wildcard AppID ()».

Я не знаю, откуда взялся один из них, но что я сделал, чтобы решить мою проблему, это:

  1. Войдите в developers.apple.com
  2. Перейдите в раздел Сертификаты, идентификаторы и профили
  3. Нажмите «Все» в разделе «Профили обеспечения» на левой панели
  4. Нажмитеon "+"
  5. Создан новый профиль с именем "XC: com.mycompanyname.mytargetname2" (ПРИМЕЧАНИЕ. Параметры будут зависеть от вас. Имя com.mycompanyname.mytargetname2 должно быть заменено идентификатором пакета вашего приложения.

После этого все заработало.

...