问题
I need to implement a custom logging in my app.
To do this i need to detect if the current version of the app has been installed from the app store or is running from xcode or is a TestFlight version.
There is something different in the app depending from the installation source?
I don't want to have something different in the development environment.
回答1:
You can get part of the way there by reading in the embedded.mobileprovision file from the application bundle:
NSString *provisionPath = [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"];
If that does not exist, you are in an app store build.
If it does exist, you need to figure out some difference between your debug and ad-hoc provisioning profiles, and look for that to determine which build you are in.
Because XCode automatically sets up applications with a "DEBUG" flag in the Debug config, that is not set in Release (which is used by default for AdHoc builds), you may be better off disabling logging in an app store build and determining the level of logging based on the DEBUG macro flag.
回答2:
You could use build configurations that define a macro to let you know that you've built for testflight.
For example, we have debug builds set a macro USE_TESTFLIGHT, and in our code we do:
#ifdef USE_TESTFLIGHT
//do something test-flight specific
[TestFlight takeOff:kTestFlightAppToken];
#endif
You could create new build configs that setup different macros depending on how you are compiling/distributing the app, and use ifdef's to perform different tasks based on those.
来源:https://stackoverflow.com/questions/16087779/detect-appstore-installation-of-ios-app