Apakah mungkin untuk mendeteksi pada waktu proses bahwa aplikasi telah diinstal melalui TestFlight Beta (dikirimkan melalui iTunes Connect) vs App Store? Anda dapat mengirimkan satu app bundle dan menyediakannya melalui keduanya. Apakah ada API yang dapat mendeteksi cara mana itu dipasang? Atau apakah tanda terima berisi informasi yang memungkinkan hal ini ditentukan?
ios
testflight
kombinatorial
sumber
sumber
Jawaban:
Untuk aplikasi yang diinstal melalui TestFlight Beta, file tanda terima dinamai
StoreKit\sandboxReceipt
vs biasaStoreKit\receipt
. Menggunakan[NSBundle appStoreReceiptURL]
Anda dapat mencari sandboxReceipt di akhir URL.Perhatikan bahwa
sandboxReceipt
itu juga merupakan nama file tanda terima saat menjalankan build secara lokal dan untuk build yang dijalankan di simulator.sumber
[[[[NSBundle mainBundle] appStoreReceiptURL] lastPathComponent] isEqualToString:@"sandboxReceipt"]
ringkas : (Benar jika menjalankan biner terdistribusi TestFlight) melalui Supertop / HaddadStoreKit/sandboxReceipt
ketika diinstal sebagai build debug melalui Xcode pada perangkat atau simulator. Jadi, ini mungkin tidak secara akurat membedakan build testflight dari semua build lainnya.Berdasarkan jawaban kombinatorial saya membuat kelas pembantu SWIFT berikut. Dengan kelas ini, Anda dapat menentukan apakah itu debug, testflight, atau build appstore.
Kami menggunakan metode ini dalam proyek kami untuk menyediakan ID pelacakan atau string koneksi yang berbeda per lingkungan:
ATAU:
UPDATE 05-02-2016: Prasyarat untuk menggunakan makro preprocessor seperti # jika DEBUG adalah menyetel beberapa Bendera Kustom Kompilator Swift. Informasi lebih lanjut dalam jawaban ini: https://stackoverflow.com/a/24112024/639227
sumber
-D DEBUG
bendera. Informasi lebih lanjut dapat ditemukan di sini .#if targetEnvironment(simulator)
Anda menentukan apakah Anda menjalankan dalam simulator. Jadi saya memiliki opsi Simulator / TestFlight / AppStore (yang dalam kasus saya lebih disukaiDebug
) :-)Versi Swift modern, yang memperhitungkan Simulator (berdasarkan jawaban yang diterima):
sumber
isTestFlight()
Memperbarui
Ini tidak berfungsi lagi. Gunakan metode lain.
Jawaban asli
Ini juga berfungsi:
Ditemukan di Detect jika Aplikasi iOS Diunduh dari Testflight Apple
sumber
Saya menggunakan ekstensi
Bundle+isProduction
di Swift 5.2:Kemudian:
sumber
Ada satu cara saya menggunakannya untuk proyek saya. Berikut langkah-langkahnya.
Di Xcode, buka setelan proyek (proyek, bukan target) dan tambahkan konfigurasi "beta" ke daftar:
Kemudian Anda perlu membuat skema baru yang akan menjalankan proyek dalam konfigurasi "beta". Untuk membuat skema, buka di sini:
Beri nama skema ini apa pun yang Anda inginkan. Anda harus mengedit pengaturan untuk skema ini. Untuk melakukan ini, ketuk di sini:
Pilih tab Arsip di mana Anda dapat memilih
Build configuration
Kemudian Anda perlu menambahkan kunci
Config
dengan nilai$(CONFIGURATION)
daftar properti info proyek seperti ini:Maka itu hanya masalah apa yang Anda butuhkan dalam kode untuk melakukan sesuatu yang spesifik untuk beta build:
sumber