TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | MIT |
ReleasedLast Release | Dec 2014 |
Maintained by .
SecureUDID is an open-source sandboxed device identifier solution aimed at solving the main privacy issues that caused Apple to deprecate UDIDs.
SecureUDIDs have the following attributes:
Developers can still differentiate between devices as if they were still using a UDID, but only within apps they control.
User privacy is protected since developers are fundamentally prevented from accessing the same UDID as another developer. This greatly limits the scope of any potential leaks.
End-users can globally opt-out of SecureUDID collection across all applications and services that use it.
#import "SecureUDID.h"
NSString *domain = @"com.example.myapp"
NSString *key = @"difficult-to-guess-key"
NSString *identifier = [SecureUDID UDIDForDomain:domain usingKey:key];
// The returned identifier is a 36 character (128 byte + 4 dashes) string that is unique for that domain, key, and device tuple.
The team at Crashlytics needed to address the UDID situation while still adhering to privacy concerns. Crashlytics wanted to contribute this back to the community.
SecureUDID has two properties that you should know about before you use it. First, as indicated above, the identifier is not derived from hardware attributes. Second, the persistence of an identifier cannot be guaranteed in all situations. This means that, while unlikely, it is technically possible for two distinct devices to report the same identifier, and for the same device to report different identifiers. Consider this carefully in your application. Here is a list of situations where this identifier will not exhibit the uniqueness/persistence of a traditional UDID.
AppsFire unveiled OpenUDID back in September as one of the initial responses to Apple's deprecation of UDIDs and our very own Sam Robbins was its second contributor. Since then, we've spent time outlining what would make a more secure UDID, and the changes required turned out to be significant. Establishing a single identifier per device is fundamentally no different than a MAC address or Apple's UDID - the privacy concerns are the same.
Yes, SecureUDID does not conflict with any other UDID implementation or framework.
We chose to initially implement SecureUDID on iOS, but the concepts can be applied equally to Android, Windows Phone, and other platforms. We welcome contributions!
Fork the crashlytics/secureudid project on GitHub, file issues, implement fixes, and submit pull requests!
March 30, 2012 - 1.1
March 27, 2012 - 1.0
March 26, 2012 - 0.9