Shmoopi/iOS-System-Services

Uniqueness of UDID

Closed this issue · 2 comments

I'm not sure if my observations are correct (and I have currently no way of testing it), but: Can the UDID implementation really be a replacement for the (now deprecated and removed) device UDID? With iOS7 it always returns the same WIFI MAC for all devices. I'm not sure about the Cell MAC, but then some devices do not have a cell part. As far as I can see all other parts of the UDID replacement are not fully unique between devices.

Looking forward to your comments on this.

Excellent question!

We have done some testing with the UDID implementation and found that you are absolutely correct. The UDID replacement does NOT work for devices on iOS 7 (and presumably later).

However, on most pre-iOS 7 devices, the WiFi and Cell MAC address populate just fine and will serve, mostly, as a UDID replacement, although you may get some duplicates on devices with very similar MAC addresses, about 20-40 cases in every ~2000 devices (1-2%), according to our tests.

We are still looking at ways to determine device uniqueness, and may have a new solution in a future update. At the moment, we are not recommending using the UDID replacement on >= iOS 7 devices, or as a dependable solution for pre-iOS 7 users.

We will provide a warning in the next commit explaining the problem and 'hopefully' providing a new solution.

Thank you very much for bringing up this issue! If you have any recommendations or if you know any workarounds for a reliable WiFi and Cellular MAC address function, please let us know.

Thanks for the quick and detailed reply.

I've spend some time on a similar issue for identifying devices in the context of MDM. Unfortunately I don't think that it's feasible to search for another solution, as this is a privacy issue for consumers. Apple will most certainly remove all (non-private) API for uniquely identifying devices that you might be able to find. At least from a user/consumer standpoint that is what I would expect them to do. Furthermore I think that for 99,9% of the cases the UIDevice identifierForVendor should be all that is ever needed. When developers want to track individual users/devices there is always the possibility to ask the user to sign up with her email and then track her set of devices using your UDID implementation.