Конфигурация и пользовательские настройки в 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()
}()

Мой демо-источник доступен на Гитхаб.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *