Идентификаторы группы приложений iOS/OSX, запустите их с помощью "группы". или "team-id."?

При создании идентификатора группы приложений в портале Provisioning Portal (или как бы там его не вызывается сейчас), он говорит: "Введите уникальный идентификатор для вашей группы приложений, начиная с строки" группа "и, похоже, принудительно соблюдайте это в записи поле. Кроме того, в большинстве примеров кода используются строки идентификаторов группы приложений, такие как" group.com.company.blah".

Тем не менее, окончательные разделы, которые я видел во всей документации, Руководство по проектированию приложений для песочницы > Встроенная песочницa > Контейнерные каталоги и доступ к файловой системе > Каталог контейнеров групп приложений и "Права доступа" > "Включение приложения" Песочница " > " Добавление приложения в группу приложений ", прямо противоречит этому, четко заявив, что" должно начинаться с вашего идентификатора команды разработки, за которым следует период".

Примеры, приведенные в этом разделе, похожи на "Z123456789.com.example.app-group" и "DG29478A379Q6483R9214.HolstFirstAppSuite" соответственно. (whah, это последний супер-странный идентификатор команды или что?)

Итак, с этой несогласованностью, что мне делать, чтобы получить идентификатор группы приложений? Должен ли я войти в Provisioning Portal "group.TEAM-ID.com.example.blah"? И я должен использовать эту же строку в строках исходного кода или опустить "группу". часть должна быть похожа на многие примеры кода? Или неправильная документация, и идентификатор команды никогда не нужен?

Контекст... Я пытаюсь обновить приложение для тестирования iOS cocoapod, чтобы я мог видеть связь с расширением ↔ в действии. После обновления идентификаторов и идентификаторов группы до одного в моем элементе управления и при использовании идентификатора группы, аналогичного исходному проекту, например "group.com.mycompany.thingie", я вижу, что containerURLForSecurityApplicationGroupIdentifier: ничего не делает, но возвращает nil и ничего больше не исправил его.

UPDATE: (добавлено это для ясности, видя, как SO сообщает мне, что этот Q получает много хитов). Оказывается, этот материал более прощает, чем я думал изначально, поскольку результат nil оказался (в основном? ) мое занятие. См. Ответ и его комментарий. Я еще не проверял, еще ли понятны документы и примеры.

Ответ 1

В https://developer.apple.com внутри "Сертификаты, идентификаторы и профили", когда вы переходите в раздел "Группы приложений" и сначала создаете свою группу приложений, все, что требуется, - это принудительное имя group.com.companyname.appname

Пока com.companyname.appname соответствует тому, что вы настроили в качестве идентификатора пакета для своей цели под общим, вы должны быть в состоянии перейти на вкладку "Возможности", включить "Группы приложений", щелкнуть символ обновления и группа, которую вы только что создали в Provisioning Portal, должна появиться там, как "group.com.companyname.appname", у вас будет возможность проверить ее, а затем будет иметься ошибка с правами. Нажатие кнопки "Исправить проблему" должно автоматически разрешить ее.

Теперь, если вы перейдете к файлу с правами, вы заметите, что "com.apple.security.applications-groups" будет иметь элемент, и он будет установлен на то же самое значение "group.com.companyname.appname".

Я тестировал на устройствах и проблем пока нет. Это не объясняет несогласованность документации, но я могу гарантировать, что это сработает.

Ответ 2

Я был укушен несоответствием в этом между iOS и macOS, отправив версию macOS Sierra для моего приложения.

group.better.fyi работает для представлений iOS, но приводит к следующей ошибке во время представления macOS (отлично работает в противном случае без предупреждений или ошибок):

ERROR ITMS-90286: "Invalid Code Signing Entitlements. Your application bundle signature contains code signing entitlements that are not supported on macOS. Specifically, value '[group.better.fyi]' for key 'com.apple.security.application-groups' in 'ind.ie.Better-Mac.pkg/Payload/Better.app/Contents/PlugIns/Blocker-Mac.appex/Contents/MacOS/Blocker-Mac' is not supported. This value should be a string or an array of strings, each starting with your TEAMID followed by a dot '.' ."

Заменив это с помощью $(TeamIdentifierPrefix)better.fyi на вкладке "Возможности" в разделе "Группы приложений", проблема была устранена.

Это, конечно, создает несогласованность между приложениями iOS и Mac.