Est-il possible de détecter à l'exécution qu'une application a été installée via TestFlight Beta (soumis via iTunes Connect) par rapport à l'App Store? Vous pouvez soumettre un seul ensemble d'applications et le rendre disponible via les deux. Existe-t-il une API capable de détecter de quelle manière elle a été installée? Ou le reçu contient-il des informations permettant de le déterminer?
ios
testflight
combinatoire
la source
la source
Réponses:
Pour une application installée via TestFlight Beta, le fichier de reçu est nommé par
StoreKit\sandboxReceipt
rapport à l'habituelStoreKit\receipt
. En utilisant,[NSBundle appStoreReceiptURL]
vous pouvez rechercher sandboxReceipt à la fin de l'URL.Notez que
sandboxReceipt
c'est également le nom du fichier de reçu lors de l'exécution des builds localement et pour les builds exécutés dans le simulateur.la source
[[[[NSBundle mainBundle] appStoreReceiptURL] lastPathComponent] isEqualToString:@"sandboxReceipt"]
(Vrai si vous exécutez le binaire distribué TestFlight) via Supertop / HaddadStoreKit/sandboxReceipt
lorsqu'ils sont installés en tant que build de débogage via Xcode sur l'appareil ou le simulateur. Cela peut donc ne pas distinguer avec précision les builds de vol de test de toutes les autres builds.Sur la base de la réponse combinatoire, j'ai créé la classe d'assistance SWIFT suivante. Avec cette classe, vous pouvez déterminer s'il s'agit d'une version de débogage, de vol de test ou d'appstore.
Nous utilisons ces méthodes dans notre projet pour fournir différents identifiants de suivi ou chaîne de connexion par environnement:
OU:
MISE À JOUR 05-02-2016: Une condition préalable à l'utilisation d'une macro de préprocesseur comme #if DEBUG est de définir des indicateurs personnalisés du compilateur Swift. Plus d'informations dans cette réponse: https://stackoverflow.com/a/24112024/639227
la source
-D DEBUG
drapeau. Plus d'informations peuvent être trouvées ici .#if targetEnvironment(simulator)
vous déterminez si vous utilisez un simulateur. J'ai donc les options Simulator / TestFlight / AppStore (qui est dans mon cas préféré àDebug
) :-)Version Swift moderne, qui tient compte des simulateurs (en fonction de la réponse acceptée):
la source
isTestFlight()
Mettre à jour
Cela ne fonctionne plus. Utilisez une autre méthode.
Réponse originale
Cela fonctionne également:
Trouvé dans Détecter si l'application iOS est téléchargée à partir de Testflight d'Apple
la source
J'utilise l'extension
Bundle+isProduction
sur Swift 5.2:Ensuite:
la source
Il y a une façon dont je l'utilise pour mes projets. Voici les étapes.
Dans Xcode, allez dans les paramètres du projet (projet, pas cible) et ajoutez la configuration "beta" à la liste:
Ensuite, vous devez créer un nouveau schéma qui exécutera le projet en configuration "bêta". Pour créer un schéma, allez ici:
Nommez ce schéma comme vous le souhaitez. Vous devez modifier les paramètres de ce schéma. Pour ce faire, appuyez ici:
Sélectionnez l'onglet Archive où vous pouvez sélectionner
Build configuration
Ensuite, vous devez ajouter une clé
Config
avec une valeur dans$(CONFIGURATION)
la liste des propriétés d'informations du projet comme ceci:Ensuite, c'est juste ce dont vous avez besoin dans le code pour faire quelque chose de spécifique à la version bêta:
la source