Kann zur Laufzeit festgestellt werden, dass eine Anwendung über TestFlight Beta (über iTunes Connect eingereicht) im Vergleich zum App Store installiert wurde? Sie können ein einzelnes App-Bundle einreichen und über beide verfügbar machen. Gibt es eine API, die erkennen kann, auf welche Weise sie installiert wurde? Oder enthält die Quittung Informationen, anhand derer dies festgestellt werden kann?
ios
testflight
kombinatorisch
quelle
quelle
Antworten:
Für eine über TestFlight Beta installierte Anwendung wird die Belegdatei im Vergleich
StoreKit\sandboxReceipt
zur üblichen benanntStoreKit\receipt
. Mit[NSBundle appStoreReceiptURL]
können Sie am Ende der URL nach sandboxReceipt suchen.Beachten Sie, dass dies
sandboxReceipt
auch der Name der Belegdatei ist, wenn Builds lokal ausgeführt werden und wenn Builds im Simulator ausgeführt werden.quelle
[[[[NSBundle mainBundle] appStoreReceiptURL] lastPathComponent] isEqualToString:@"sandboxReceipt"]
(True, wenn TestFlight Distributed Binary ausgeführt wird) über Supertop / HaddadStoreKit/sandboxReceipt
bei der Installation als Debug-Build über Xcode auf einem Gerät oder Simulator angezeigt. Dies unterscheidet Testflight- Builds möglicherweise nicht genau von allen anderen Builds.Basierend auf der Antwort von combinatorial habe ich die folgende SWIFT-Hilfsklasse erstellt. Mit dieser Klasse können Sie feststellen, ob es sich um einen Debug-, Testflight- oder Appstore-Build handelt.
Wir verwenden diese Methoden in unserem Projekt, um pro Umgebung unterschiedliche Tracking-IDs oder Verbindungszeichenfolgen bereitzustellen :
ODER:
UPDATE 05-02-2016: Voraussetzung für die Verwendung eines Präprozessor-Makros wie #if DEBUG ist das Festlegen einiger benutzerdefinierter Swift Compiler-Flags. Weitere Informationen in dieser Antwort: https://stackoverflow.com/a/24112024/639227
quelle
-D DEBUG
Flag setzen. Weitere Informationen finden Sie hier .#if targetEnvironment(simulator)
ob Sie in einem Simulator arbeiten. Also habe ich die Optionen Simulator / TestFlight / AppStore (was in meinem Fall vorgezogen wirdDebug
) :-)Moderne Swift-Version, die Simulatoren berücksichtigt (basierend auf der akzeptierten Antwort):
quelle
isTestFlight()
Aktualisieren
Das funktioniert nicht mehr. Verwenden Sie eine andere Methode.
Ursprüngliche Antwort
Dies funktioniert auch:
Gefunden in Erkennen, wenn die iOS-App von Apples Testflight heruntergeladen wurde
quelle
Ich benutze die Erweiterung
Bundle+isProduction
auf Swift 5.2:Dann:
quelle
Es gibt eine Möglichkeit, wie ich es für meine Projekte verwenden kann. Hier sind die Schritte.
Gehen Sie in Xcode zu den Projekteinstellungen (Projekt, nicht Ziel) und fügen Sie der Liste die Beta-Konfiguration hinzu:
Dann müssen Sie ein neues Schema erstellen, das das Projekt in der "Beta" -Konfiguration ausführt. Um ein Schema zu erstellen, gehen Sie hier:
Nennen Sie dieses Schema, wie Sie wollen. Sie sollten die Einstellungen für dieses Schema bearbeiten. Tippen Sie dazu hier:
Wählen Sie die Registerkarte Archiv, auf der Sie auswählen können
Build configuration
Dann müssen Sie einen Schlüssel
Config
mit dem Wert$(CONFIGURATION)
der Projektinfo-Eigenschaftsliste wie folgt hinzufügen :Dann ist es genau das, was Sie im Code benötigen, um etwas Spezielles für den Beta-Build zu tun:
quelle