Czy w czasie wykonywania można wykryć, że aplikacja została zainstalowana za pośrednictwem TestFlight Beta (przesłana za pośrednictwem iTunes Connect) w porównaniu z App Store? Możesz przesłać jeden pakiet aplikacji i udostępnić go w obu. Czy istnieje interfejs API, który może wykryć, w jaki sposób został zainstalowany? A może pokwitowanie zawiera informacje, które pozwalają to ustalić?
ios
testflight
kombinatoryczny
źródło
źródło
Odpowiedzi:
W przypadku aplikacji zainstalowanej za pośrednictwem TestFlight Beta plik z potwierdzeniem ma nazwę zamiast
StoreKit\sandboxReceipt
zwykłejStoreKit\receipt
. Używając[NSBundle appStoreReceiptURL]
możesz poszukać sandboxReceipt na końcu adresu URL.Zauważ, że
sandboxReceipt
jest to również nazwa pliku potwierdzenia, gdy kompilacje są uruchamiane lokalnie i kompilacje uruchamiane w symulatorze.źródło
[[[[NSBundle mainBundle] appStoreReceiptURL] lastPathComponent] isEqualToString:@"sandboxReceipt"]
(prawda, jeśli uruchomiono rozproszony plik binarny TestFlight) przez Supertop / HaddadStoreKit/sandboxReceipt
instalacją jako kompilacja debugowania za pośrednictwem Xcode na urządzeniu lub w symulatorze. Może to więc nie odróżniać dokładnie wersji testowych od wszystkich innych kompilacji.Na podstawie odpowiedzi kombinatorycznej utworzyłem następującą klasę pomocniczą SWIFT. Za pomocą tej klasy możesz określić, czy jest to kompilacja debugowania, lotu testowego czy sklepu z aplikacjami.
W naszym projekcie używamy tych metod, aby dostarczyć różne identyfikatory śledzenia lub parametry połączenia dla każdego środowiska:
LUB:
AKTUALIZACJA 05-02-2016: Warunkiem wstępnym użycia makra preprocesora, takiego jak #if DEBUG, jest ustawienie niektórych niestandardowych flag Swift Compiler. Więcej informacji w tej odpowiedzi: https://stackoverflow.com/a/24112024/639227
źródło
-D DEBUG
flagę. Więcej informacji można znaleźć tutaj .#if targetEnvironment(simulator)
możesz określić, czy korzystasz z symulatora. Więc mam opcje Simulator / TestFlight / AppStore (co jest w moim przypadku preferowaneDebug
) :-)Nowoczesna wersja Swift, która uwzględnia Symulatory (na podstawie zaakceptowanej odpowiedzi):
źródło
isTestFlight()
Aktualizacja
To już nie działa. Użyj innej metody.
Oryginalna odpowiedź
Działa to również:
Znalezione w Wykryj, czy aplikacja iOS jest pobrana z Apple's Testflight
źródło
Używam rozszerzenia
Bundle+isProduction
w Swift 5.2:Następnie:
źródło
Jest jeden sposób, w jaki używam go w moich projektach. Oto kroki.
W Xcode przejdź do ustawień projektu (projekt, a nie cel) i dodaj konfigurację „beta” do listy:
Następnie należy stworzyć nowy schemat, który będzie uruchamiał projekt w konfiguracji „beta”. Aby utworzyć schemat, przejdź tutaj:
Nazwij ten schemat, jak chcesz. Należy edytować ustawienia tego schematu. Aby to zrobić, dotknij tutaj:
Wybierz kartę Archiwum, w której możesz wybrać
Build configuration
Następnie musisz dodać klucz
Config
z wartością$(CONFIGURATION)
listy właściwości informacji o projektach w następujący sposób:W takim razie chodzi tylko o to, czego potrzebujesz w kodzie, aby zrobić coś specyficznego dla kompilacji beta:
źródło