Currently I am facing a very doubtful scenario regarding VENDOR ID. I am getting VENDOR ID by using the code :
UIDevice.currentDevice().identifierForVendor!.UUIDString
So I want to know whether it will create different vendor id if I installed an .ipa file with version 1.2.23 and without deleting it if I installed another .ipa by just changing the version number from 1.2.23 to 1.2.24? I know vendor id changes if we reinstall but is the above mentioned scenario reinstallation or an update ?
If I install an ipa file over another existing ipa file will it be regarded as update or reinstallation? Because currently my Vendor ID changes if I install ipa over the another existing ipa. Any idea will be helpful for me
2
Answers
Adding to the accepted answer , below are the additional points
if my AppStore app is updated automatically or from AppStore itself the VENDOR ID remains same
if I overwrite my dev .ipa of different version with another dev .ipa by changing version number thé VENDOR ID will be same
if I overwrite my adhoc.ipa of different version with another adhoc .ipa by changing version thé VENDOR ID will be same
if I overwrite a dev .ipa of different version with another adhoc .ipa by changing version thé VENDOR ID will change and similarly vice versa if I overwrite adhoc.ipa with dev.ipa it will change the Vendor Id
similarly if I overwrite my dev/adhoc build with TestFlight builds or AppStore app the vendor id will change
According to my experience the UUIDString is stable if you use the same installation method.
Apple provides several installation methods:
As long as you keep the the same way to install the app, the UUIDString will be the same..
Example:
If you start building the app in xCode and do the tests by installing the app on your physical devices by xCode the UUID will be stable.
If you than switch to adHoc installations to provide the group of testers with that version, the UUID per device will be stable on that devices.
BUT: If one of the testers will install the app by AppStore, the UUID will change to another UUID and will be stable again as long as the tester will install the new versions by the App Store.
BUT: if he again starts to get new versions by AddHoc, the UUID will change again to a new one and will be stable as long as he gets his new version by AdHoc installations ..
it will change again to a new different one, if he starts to get new versions by the appStore … and so on
You can overcome this, by using different targets. I usually use three development targets: One for alpha tests, one for the group of beta testers and the third one for the final release for the App Store.
The advantage is, that this are three independent versions of your app (same source, but three target versions). Within these target versions the UUID will stay stable as the different targets will be installed as different apps.
So it would be possible to have an alpha (by xCode), a beta (by AdHoc) and a final version (by AppStore) of your app in parallel on the same device.
It’s a little tricky to set it up, but after that it is very easy to use.
This is a description you might find helpful to get a first feeling. The concept of targets is very powerful and this article shows the basics to get started:
https://medium.com/@andersongusmao/xcode-targets-with-multiples-build-configuration-90a575ddc687