iOS7時代咱們用什麼來追蹤和識別用戶?

要識別用戶,首先就是要選擇一個標識符,經過這個標識符來識別這個用戶的設備(而不是用戶),這個標識符要可以保證一個設備上返回的值是同樣的,而且在其餘設備上不會出現相同的值。app

在iOS7以前,曾經有過不少方法來識別用戶的設備,從最原始的設備udid、mac地址,到被各廣告統計平臺普遍使用的開源方案OpenUDID。ide

但隨着AppStore開始拒絕接受使用udid的應用,到mac地址在iOS7上全部設備上都返回相同的值,再到iOS7上對剪貼板的限制,致使OpenUDID沒法被不一樣應用共享相同的值,註定了上面提到的這些id們不得不退出歷史的舞臺。spa

隨着iOS7快速佔據了半壁江山,設備id的控制權終於完全回到了Apple手中,同時也讓用戶可以把控本身的隱私,充分代表了是蘋果對用戶隱私保護的決心。code

好了,其實就一個問題:iOS7時代咱們用什麼來追蹤和識別用戶?xml


 

先給結論

  • idfa: 適用於對外:例如廣告推廣,換量等跨應用的用戶追蹤等
  • idfv: 適用於對內:例如分析用戶在應用內的行爲等

PS:塵埃落定,跟着Apple走,你們不用再猶豫了。開發


 

再給解釋

idfa

  • 全名:advertisingIdentifier
  • 代碼:io

    #import <AdSupport/AdSupport.h>
    
      NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
  • 來源:iOS6.0及之後import

  • 說明:直譯就是廣告id, 在同一個設備上的全部App都會取到相同的值,是蘋果專門給各廣告提供商用來追蹤用戶而設的,用戶能夠在 設置|隱私|廣告追蹤 裏重置此id的值,或限制此id的使用,故此id有可能會取不到值,但好在Apple默認是容許追蹤的,並且通常用戶都不知道有這麼個設置,因此基本上用來監測推廣效果,是戳戳有餘了。
  • 注意:因爲idfa會出現取不到的狀況,故毫不能夠做爲業務分析的主id,來識別用戶。

idfv

  • 全名:identifierForVendor
  • 代碼:coding

    NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
  • 來源:iOS6.0及之後方法

  • 說明:顧名思義,是給Vendor標識用戶用的,每一個設備在所屬同一個Vender的應用裏,都有相同的值。其中的Vender是指應用提供商,但準確點說,是經過BundleID的DNS反轉的前兩部分進行匹配,若是相同就是同一個Vender,例如對於com.somecompany.appone,com.somecompany.apptwo 這兩個BundleID來講,就屬於同一個Vender,共享同一個idfv的值。和idfa不一樣的是,idfv的值是必定能取到的,因此很是適合於做爲內部用戶行爲分析的主id,來標識用戶,替代OpenUDID。
  • 注意:若是用戶將屬於此Vender的全部App卸載,則idfv的值會被重置,即再重裝此Vender的App,idfv的值和以前不一樣。

 

歷史上的英雄們

UDID

設備惟一標識符(Unique Device Identifier)以前被各類國內外統計平臺,應用開發商普遍使用,後Apple從2013年05月01日起拒絕接受使用UDID的應用後,立斃!

Mac地址

每個網卡都有一個惟一的標識,即Mac地址,顯然用來標識一個手機是綽綽有餘的了,也有一些開源的方案也用到了它,國內UMTrack等也用它做爲過主id,隨着iOS7返回一樣的值後,不得不退隱江湖。

OpenUDID

在Apple拒絕UDID後,OpenUDID做爲獨立於Apple的開源方案,被廣大的開發者所接受,各大統計廣告平臺都從UDID等方案切換到OpenUDID的方案(看來你們都不想徹底被Apple束縛啊),但不幸的事,一樣因爲iOS7對剪貼板的限制,致使同一個設備上應用間,沒法再共享一個OpenUDID,即OpenUDID做爲設備惟一標識的能力被大大削弱。也能夠看到隨着iOS7的來臨,各廣告平臺都迅速更新本身的SDK,來切換到蘋果的idfa的方案上來。

其餘

CFUUID、NSUUID等本身生成,本身存儲管理的就不細說啦。

DeviceToken

這是推送用的令牌,用戶若是沒開推送,或者拒絕了,這個就沒有了!

相關文章
相關標籤/搜索