Как обеспечить применение Прав для приложений OS X?

Я настроил Права в Xcode, но они не помещаются в скомпилированный пакет приложений. Мне нужно сделать какие-то дополнительные шаги?

Я пишу приложение, подписанное OS X "Developer ID" (не для AppStore), и чтобы иметь возможность реализовать расширение, которое разделяет настройки с родительским приложением, мне нужно поместить их в та же группа приложений.

Я настроил группы приложений в Xcode и вижу их в $Extension.entitlements и $ParentApp.entitlements plist.

Однако в созданном продукте $Extension.app/Contents/_CodeSignature/CodeEntitlements напоминает файл прав по умолчанию без группы, которую я настроил, а в родительском приложении этот файл вообще не существует.

Я даже попытался снова подписать приложение с помощью файла явных прав:

codesign --force --entitlements $ParentApp.entitlements -s "Developer ID" \
   Build/Products/Debug/$ParentApp.app

но опять же, он не добавляется к $ParentApp.app/Contents/_CodeSignature/CodeEntitlements.

Во время выполнения родительское приложение и расширение не находятся в одной группе приложений: они записывают свои предпочтения ([NSUserDefaults…initWithSuiteName:teamIdEtc]) в свои собственные подкаталоги в ~/Library/Containers, а не в общий каталог в ~/Library/Group Containers.


person Kornel    schedule 03.07.2015    source источник
comment
Оба приложения указаны под ключом <key>com.apple.security.application-groups</key>?   -  person l'L'l    schedule 04.07.2015
comment
@ l'L'l это не так. В документации указано, что группа приложений имеет формат TEAMID.someidentifier, так что я использовал именно его.   -  person Kornel    schedule 04.07.2015
comment
Вот что я имел в виду; Создается ли контейнер группы приложений? Для каждого приложения может быть нормальным записывать NSUserDefaults в свои собственные контейнеры, поскольку в описании контейнера группы приложений упоминается только следующее: Этот контейнер предназначен для содержимого, не предназначенного для пользователя, такого как общие кеши или базы данных, что, возможно, может объяснить поведение возможно.   -  person l'L'l    schedule 04.07.2015


Ответы (1)


Волшебным образом это заработало после:

  • Я заменил $(TeamIdentifierPrefix) фактическим идентификатором
  • Удалил DerivedData папки везде и все перестроил
person Kornel    schedule 05.07.2015