So konfigurieren Sie unabhängige Sätze von Laufzeiteinstellungen in XCode

Meine iPhone-Anwendung verbindet sich mit drei verschiedenen Servern, zum Beispiel:Produktion, Inszenierung undtesten. Es gibt eine Reihe von Konfigurationswerten, die die Anwendung verwendet, abhängig davon, mit welchem ​​Server sie eine Verbindung herstellt, z. Facebook-App-ID, TestFlight-Teamschlüssel usw.

Ich möchte alle Einstellungen in GIT haben und nur die Konfiguration auswählen, die die Anwendung beim Kompilieren oder Freigeben verwenden soll. Zum Beispiel, wenntesten ist ausgewählt,Produkt -> Ausführen In XCode wird die Debug-Version der App ausgeführt, mit der eine Verbindung hergestellt wirdtesten, undProdukt -> Archiv Erstellt die IPA-Datei mit der Release-Version, mit der auch eine Verbindung hergestellt wirdtesten.

Ich möchte nicht mehr Build-Konfigurationen als Debug- und Release-Konfigurationen erstellen (da dies 6 verschiedene Kombinationen von Build-Konfigurationen / Laufzeitkonfigurationen bedeuten würde). Die ideale Lösung, wie ich es sehe, wäre, dass ich drei Schemata habe:Produktion, testen undInszenierungund jedes Schema wählt eine von drei Info.plist-Dateien zur Verwendung mit der Anwendung aus. Auf diese Weise könnte ich nicht nur verschiedene Laufzeiteinstellungen definieren, sondern auch verschiedene Anwendungsversionen oder Paket-IDs, je nach Back-End-Server. Es sieht jedoch nicht so aus, als ob ich die Aktion "Archivieren" auf andere Weise konfigurieren kann, abgesehen von der Auswahl einer anderen Build-Konfiguration. Irgendwelche Ideen, ob das auf irgendeine Weise erreicht werden könnte?

Bearbeiten: Um es ein bisschen klarer zu machen,Produktion / Inszenierung / Prüfung ist der Back-End-Server, nicht die Version der iOS-Anwendung. Die iOS-App gibt es in zwei Versionen:Debug / Release. Mit anderen Worten, ich möchte vielleicht einedebuggen Version der Anwendung, die eine Verbindung zum Internet herstelltProduktion Server, um beispielsweise einen Absturz zu debuggen, der durch JSON verursacht wurde, das von diesem Server zurückgegeben wurde. Ich hätte die Server der Übersichtlichkeit halber als A, B und C bezeichnen können.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage