Конфигурация и пользовательские настройки в iOS
Я столкнулся с проблемой: поддерживать разные страны с разными названиями приложений, значками, но одинаковым кодом. «Зеленое» приложение — это исходное приложение, необходимо преобразовать исходное «зеленое» приложение в другое приложение с другими свойствами, которое в демоверсии известно как «красное» приложение.
Клонирование в разные проекты — не мое решение. Провел некоторое исследование и, наконец, я сделал это решение. Используйте разные настройки сборки и схемы для рынков. Вот как я сделал.
- Доступ к настройкам/информации о проекте. Переименовать конфигурацию Отлаживать а также Выпускать к Debug_Red а также Release_Red
- Дублируйте эти 2 конфигурации и измените имя на Отладка_Зеленый а также Release_Green
- Выберите текущую схему и Изменить схему…
Выбирать Дублировать схему, управлять схемами…
Выберите схему и нажмите клавишу возврата, чтобы переименовать.
Дважды щелкните по красной схеме и проверьте настройку левой стороны.
Убедитесь, что отладка, тестирование, анализ Debug_Red конфигурация и профиль, выпуск Release_Red. Чтобы изменить конфигурацию, выберите Информация и изменение в Конфигурация сборки.
Красный и зеленый имеют разные имена, идентификаторы пакетов, версии, номера сборки. Я должен добавить некоторые пользовательские настройки
- Выберите параметр проекта/редактор/добавить параметр сборки/добавить пользовательский
Добавьте некоторые настройки:
app_name
,bundle_id
,version
,build_number
Добавьте ценность новым настройкам
- Вкладка
Build Setting
поискProduct Bundle Identifier
и введите значение$(bundle_id)
- Выберите вкладку
General
- Войти
$(app_name)
кDisplay Name
,$(version)
кVersion
,$(build_number)
кBuild
Результат
appNameLabel.text = Bundle.main.object(forInfoDictionaryKey: “CFBundleDisplayName”) as? String
versionLabel.text = Bundle.main.infoDictionary?[“CFBundleShortVersionString”] as? String
buildLabel.text = Bundle.main.infoDictionary?[“CFBundleVersion”] as? String
bundleIdLabel.text = Bundle.main.bundleIdentifier
Мы можем применить это решение к экрану запуска, значку приложения, добавив 2 экрана запуска, 2 значка приложения с одинаковым именем, но с другим суффиксом.
Мы можем установить Экран запуска то же самое Показать имя но Значок приложения необходимо настроить так же, как Идентификатор набора продуктов
Кроме того, нам нужно изменить семейство шрифтов, цвет темы, цвет текста в зависимости от приложения. Вот как сделать.
protocol Configuration {
var themeColor: UIColor { get set }
var textColor: UIColor { get set }
}
struct RedConfiguration: Configuration {
var themeColor = UIColor.red
var textColor = UIColor.white
}
struct GreenConfiguration: Configuration {
var themeColor: UIColor = UIColor.green
var textColor = UIColor.blue
}
let config: Configuration = {
if let app = Bundle.main.object(forInfoDictionaryKey: “CFBundleDisplayName”) as? String {
if app == “Red” {
return RedConfiguration()
}
else {
return GreenConfiguration()
}
}
return RedConfiguration()
}()
Мой демо-источник доступен на Гитхаб.