— iOS, Swift, TestFlight — 1 min read
Sometimes you might want to have a way to check if an app has been downloaded for TestFlight or not. A good example use case for this is if you want to only show test ads in a TestFlight version of your app.
I have shipped a few apps for iOS over the years but didn't actually realise this was possible until a few months ago. Basically all you need to do is make some checks against the app's App Store receipt to see if it contains "sandboxReceipt".
You can make a quick extension for this on Bundle, here's what the code looks like:
1extension Bundle {2 ...3 var isProduction: Bool {4 #if DEBUG5 return false6 #else7 guard let path = self.appStoreReceiptURL?.path else {8 return true9 }10 return !path.contains("sandboxReceipt")11 #endif12 }13}
First of all, you check if the app is a debug version or not. Then you check if there is a path for the store receipt or not. Then the last step is to check if that path contains "sandboxReceipt".
So to summarize, this will return false if:
I opted to call this computed value 'isProduction' but you could make some tweaks to the code and change this to what suits you. So far it's working pretty well for my use case of only showing test ads in TestFlight builds.