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

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

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

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

隨着iOS7快速佔據了半壁江山,設備id的控制權終於徹底回到了Apple手中,同時也讓用戶能夠把控自己的隱私,充分表明了是蘋果對用戶隱私保護的決心。

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


 

先給結論

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

PS:塵埃落定,跟着Apple走,大家不用再猶豫了。


 

再給解釋

idfa

  • 全名:advertisingIdentifier
  • 代碼:

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

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

idfv

  • 全名:identifierForVendor
  • 代碼:

      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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章