Получить идентификатор Bundle из другой целевой страницы

В моем проекте Xcode у меня есть 4 разных схемы (prod, dev, staging, staging2), который изменяет идентификатор пакета приложения, которое устанавливается на телефон. Таким образом, я могу установить все 4 версии рядом друг с другом, подобно этот метод.

Теперь я создаю Today Extension для iOS 8. Это новый Target, требующий свой собственный идентификатор пакета.

Идентификатор расширенного пакета должен иметь префикс с идентификатором пакета родительского приложения или выдается предупреждение:

error: Embedded binary bundle identifier is not prefixed with the parent app bundle identifier.

    Embedded Binary Bundle Identifier:  com.company.app.TodayExtension
    Parent App Bundle Identifier:       com.company.app.staging

В этом случае идентификатор встроенного двоичного связывания должен быть com.company.app.staging.TodayExtension.

Есть ли способ настроить my Today Extension для установки идентификатора своего пакета, сначала посмотрев на идентификатор целевого пакета Parent? Возможно, через пользовательский запуск Script Фаза сборки?

Ответы

Ответ 1

Параметры сборки целевых объектов недоступны для других целей. Однако доступны настройки сборки PROJECT.

Таким образом, вы можете добавить пользовательский параметр сборки в свой проект и вызвать его PARENT_APP_BUNDLE_IDENTIFIER и установить правильный идентификатор пакета для всех ваших схем.

Затем на вкладке "Информация" целевого расширения приложения установите идентификатор пакета

$(PARENT_APP_BUNDLE_IDENTIFIER).$(PRODUCT_NAME:rfc1034identifier)

Это сработало отлично для меня.