Как получить доступ к версии хост-приложения из фреймворка в iOS?

У меня есть одно хост-приложение MyApp и одна связанная платформа MyFramework в одной рабочей области для большого проекта iOS. Допустим, MyFramework по каким-то причинам требует знать версию выпуска MyApp (или текущий номер сборки). Как я могу справиться с этой ситуацией? Может ли фреймворк каким-либо образом получить доступ к хост-приложениям .plist? или есть лучший дизайн?


person Sazzad Hissain Khan    schedule 31.12.2019    source источник


Ответы (1)


Отвечать:

Доступ к содержимому Info.plist возможен, если вы можете создать правильный объект Bundle ИЛИ NSBundle хост-приложения. Затем вы можете получить доступ к свойству infoDictionary для доступа к полному содержимому.

Теперь главный вопрос: как создать объект Bundle хост-приложения? Есть четыре инициализатора Bundle. Я предпочитаю использовать init?(identifier:), так как другие берут имя класса или путь из MyApp в качестве параметра, эта информация может быть недоступна в вашем MyFramework

введите здесь описание изображения

Итак, чтобы получить доступ к Info.plist MyApp, используйте следующий код.

if let hostInfoDic = Bundle(identifier: "com.company.MyApp")?.infoDictionary {
      print("CFBundleShortVersionString: \(hostInfoDic["CFBundleShortVersionString"])")
      print("CFBundleVersion: \(hostInfoDic["CFBundleVersion"])")
} else {
  // Log error
  // ... Fallback handler 
}

В вызове конфигурации вашей платформы вы можете запросить идентификатор пакета хост-приложения в качестве дополнительного параметра.

Примечание:

Вы не можете напрямую использовать Bundle.main.infoDictionary, так как это даст вам информацию о пакете из текущего исполняемого каталога, который может быть вашим фреймворком.

Из Документация Apple

Обсуждение

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

person Sauvik Dolui    schedule 22.10.2020