Переключение между тестовым и реальным URL с помощью условного оператора в swift - PullRequest
0 голосов
/ 22 марта 2020

Я хочу использовать локальные URL для тестирования. Как мне переключиться между тестовым и реальным URL во время компиляции?

Мне известны условия активной компиляции, но я не хочу использовать это в качестве средства отладки / выпуска. Я хочу переключаться между тестовыми и реальными URL-адресами всякий раз, когда я буду sh на этапе разработки и тестирования. Для этого я хочу иметь флаг, который я могу изменить перед компиляцией.

Вот чего я хочу добиться, это псевдокод.

#define TEST=TRUE (or FALSE)

#if TEST
static let URL = "http://127.0.0.1/api/"
//... other code
#else
static let URL = "https:// domain.com/api/"
//... other code
#endif

1 Ответ

1 голос
/ 22 марта 2020

Хорошо, тогда, если вы хотите иметь возможность изменять URL-адрес во время разработки без создания новой сборки, у вас есть разные варианты, но быстрый - всегда скрытое всплывающее окно конфигурации или меню, к которому вы обращаетесь с первого экрана перед входом в систему. или что-то еще.

Где появляется скрытое меню : это то, что вы хотите решить, но, возможно, где-то в стартовом ViewController, во входе в систему или при входе в систему, вы хотите добавить Gesture Recognizer для Например, чтобы показать ваше скрытое меню, скажем, двойное касание в любом месте вашего ViewController.view, которое будет представлять скрытое предупреждение о конфигурации только в сборке отладки, а не в выпуске, непосредственно перед входом в систему или любым соответствующим вызовом API:

#if DEBUG
    let tap = UITapGestureRecognizer(target: self, action: #selector(presentHiddenConfigurationAlert))
    tap.numberOfTapsRequired = 2
    view.addGestureRecognizer(tap)
#endif

Как скрытое меню выглядит и действует как : теперь и в том же ViewController (как, например, в моем примере, LoginV C или что вы будете sh) вы ' При двойном нажатии метод селектора должен быть таким, как этот, например, чтобы показать предупреждение, которое может позволить вам изменить ваш текущий URL (как всегда это может происходить только в отладочной сборке):

#if DEBUG
@objc func presentHiddenConfigurationAlert() {
    let currentURL = UserDefaults.string(forKey: "current_url")

    let alertView = UIAlertController(title: "Hidden Configuration", message: "You are using \(currentURL)", preferredStyle: .alert)

    // add a textview to let developer input the url he wants to use as an action

    // or add some actions as buttons to choose between a Test URL button action and Dev URL button action

    // store the URL as of "current_url" so you can retrieve it in an instance used across the app and here in the message

    self.present(alert, animated: true, completion: nil)
}
#endif

И в общем случае, в моем примере:

  • вы устанавливаете приложение и находитесь в отладочной сборке
  • контроллер представления входа в систему - это первое, что показывается (например)
  • вы или другой разработчик, использующий эту сборку, дважды нажмите где-нибудь в этом контроллере представления
  • скрытая конфигурация оповещения меню показано, где вы можете изменить текущий URL-адрес, используемый в приложении
  • вы сохраняете этот URL-адрес по умолчанию или где вам больше всего нравится
  • сейчас, где бы вы ни обращались к переменной URL-адреса, вы хотите, чтобы в отладке вы используете одно из пользовательских значений по умолчанию, а в выпуске вы используете один выпуск
#if DEBUG
var API_URL = getURLFromUserDefaults()
#else
var API_URL = "https://www.release-product-url.com"
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...