                                                                                 
     _/_/                                  _/    _/  _/_/_/    _/_/_/  _/_/_/    
  _/    _/  _/_/_/      _/_/    _/_/_/    _/    _/  _/    _/    _/    _/    _/   
 _/    _/  _/    _/  _/_/_/_/  _/    _/  _/    _/  _/    _/    _/    _/    _/    
_/    _/  _/    _/  _/        _/    _/  _/    _/  _/    _/    _/    _/    _/     
 _/_/    _/_/_/      _/_/_/  _/    _/    _/_/    _/_/_/    _/_/_/  _/_/_/        
        _/                                                                       
       _/                                                                        

//  initiated by Yann Lechelle (cofounder Appsfire) on 8/28/11.
//  Copyright 2011 OpenUDID.org
//
//  Master Branches
//	iOS / MacOS code: https://github.com/ylechelle/OpenUDID
//	Android code: https://github.com/vieux/OpenUDID
//
//  Contributors:
//      https://github.com/ylechelle (initiator & iOS code)
//	https://github.com/kajinka13 (Obj-C ARC support)
//      https://github.com/vieux (Android version)
//      https://github.com/samrobbins (Mac OS port)

Synopsis: an open source project to provide a universal and persistent
          Unique Device IDentifier (UDID) solution for iOS and Android

Usage:
   #include "OpenUDID.h"
   NSString* openUDID = [OpenUDID value];

Needed:
    - equivalent OpenUDID systems on Windows Mobile 7, Blackberry, Windows .Net, etc...

Context:

If you’re not already familiar with UDID’s, it’s a critical tool for analytic or CRM purposes. A developer could use UDID’s as a means to track how much time a user spent in his free app before upgrading to the paid version. UDID’s are also helpful for tracking the source of a download when advertising on an ad network. This is a fairly universal need in a thriving ecosystem: developers need the traceability from clicks to downloads to ensure that they pay the right price for their promotion. Proper tracking and funnel conversion is what has made the web a better place, with healthy competition and quantifiable metrics.

In the wake of Apple’s decision, some ad networks have already introduced their own proprietary solutions. The main motivation here was to find a UDID replacement not owned by any single provider. It is easy to foresee a fragmented market where UDID management is operated by multiple providers with no cooperation between them. This open source initiative is to enable a better solution for thousands of other mobile app developers.

The agenda was as follows:
- Provide a reliable proxy and replacement for a universal unique device identifier. That is, persistent and sufficiently unique, on a per device basis.
- NOT use an obvious other sensitive unique identifier (like the MAC address) to avoid further deprecation and to protect device-level privacy concerns
- Enable OpenUDID to be accessed by any app
- Supply open-source code to generate and access the OpenUDID, for iOS and  Android
- Incorporate, from the beginning, a system that will enable user opt-out to match Apple’s initial intent

History:
- August 2011: launch of the initiative
- Sept. 9 2011: v1.0 of the code meeting all requirements
- March. 25 2012: removing all traces of the offending call on iOS