Keychain Services and Device identifierForVendor

Hi,


I would like to ask few questions related to Keychain Services behaviour from iOS perspective, and the UIDevice's identifierForVendor.


Basically, my scenario is following:

  • Multiple applications under the same developer account sharing some credentials, such as tokens, through Share Keychin Services
  • I'm trying to delete all credentials upon uninstallation of the application in the keychain services


From my understnaing, despite the fact that it was never officially documented or stated by Apple, any items or data in keychain services will remain on the device even after uninstalling the applications. I understand Eskimo replied to this concern stating that this can change at any point, but since it was like this from the day one, and there is no official communication from Apple on this, I'm supposed to rely and expect this is the way it is working.


As per Eskimo suggested, I should be able to accomplish the auto delete all items in the keychain upon re-installation by storing the secret key on the device's disk. Although the data will still remain on the device until the application is re-installed, I'm fine with this solution.


However, the problem is that I am sharing some credentials and information across multiple applications which will not be possible for me to store the key or flag on the device's disk and expecting the key/flag will be accessible from other applications. I understand that there is a feature called, App Group, but I'm trying to figure out the soultions with minial configuration for the developers using my product as I'm building SDKs.


Is there any way that I can properly accomplish what I would like to do?


Also, another question is that for UIDevice's identifierForVendor, according to Apple's official documentation, the vendor id should change upon uninstallation and re-installation of the application if there no other applications on the device with the same bundle ID structure.


However, I do see (weirdly, from time to time) that my actual iOS device is generating the same vendor id for my application even after reinstallation. Is there any logic other than stated in the document for generating this vendor id and causing same vendor id over the period?


As always, I sincerely appreciated your effort and help in these questions.


Thanks,

Replies

Is there any way that I can properly accomplish what I would like to do?

It would help if you outlined your specific requirements. Reading through your text I see a lot of “I know this” and “I have this problem” but it’s hard to reconstruct specific requirements from that.

Is there any logic other than stated in the document … ?

Are you asking about this because you think because this identifier will help you solve your keychain problem?

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"