iOS app與瀏覽器 跨域互通
本文主要介紹,app跨域訪問app外部的瀏覽器的數據的方案,包括外部safari,或者QQ,微信,手百等外部app內的瀏覽器。
主要使用場景就是:
用戶在別的wap網頁上,產生了用戶行為,用戶數據,但是還沒下載app,當用戶下載app后,打算直接在app內延續之前在wap上的行為和數據的時候,就需要運用到跨越瀏覽器與app鴻溝的,互通方案。
簡單舉個例子就是:
用戶在微信瀏覽器里,訪問某個頁面,感興趣并且登陸了,然后引導下載了app,等用戶下載完app后第一次打開,希望能自動就完成登陸,甚至同步下來一些剛才用戶在wap頁面上操作的數據
如果能發生跨瀏覽器與app的互通,除了這個case之外,還可以有更多地自由發揮,設計出更加舒暢的用戶體驗
想要實現這樣目前看有2個方案,各自都有弊端,都不是完美的,本文會詳細說明這兩個方案
- 設備指紋唯一識別方案
- iOSSafariCookie互通方案
本文相關link
iOS9下SafariCookie與app互通
設備指紋唯一識別方案
如果用戶在wap頁面,能通過某種方式識別到唯一的設備標識,當用戶離開去下載app,下載完成第一次打開app的時候,app能識別到一樣的設備標識,那么就可以判斷第一次打開app的用戶,就是剛才瀏覽wap網頁的用戶,這樣服務就可以把剛才wap上操作的數據結果,通過網絡下發給app,從而讓app實現,還原剛才wap的操作場景
這個過程大致如下
- 用戶在wap網頁上產生了行為,產生了用戶個人數據
- wap網頁收集了一種能夠 唯一標識 設備的信息,并且發送給了服務器
- app安裝完畢后第一次運行,也去通過app嘗試收集 唯一標識 設備的信息,并且發給服務器
- 服務器經過對比,發現app的 唯一標識 與wap網頁發上來的 唯一標識 能夠匹配
- 服務器判斷,是同一個人操作,于是下發用戶個人數據
縱觀整個流程發現,一切的核心,一切的關鍵,就是那個 唯一標示
這個 唯一標識 要具備太多太多的條件,想找到其實很不容易
- 選擇當做 唯一標識 的內容,必須能讓app獲取的到
- 選擇當做 唯一標識 的內容,必須也能讓wap獲取的到
- 選擇當做 唯一標識 的內容,還必須有能力區分出不同的設備,如果選的 唯一標識 好幾個設備取出來的都一樣,那么就亂套了
那么我們看看遵循這幾個條件,我們能選擇啥?
- UDID,MAC地址啥的,別說wap了,app都不可能取到了
- JS有好幾套,通過網頁渲染canvas的方案獲取屏幕”指紋”,但這玩意app不可能拿到完全一致的東西,二者對不上,就沒任何意義
- IDFA,IDFV,這玩意app是能取到了,但是wap拿不到啊
上面說的幾個都是相對來說,如果能雙方都拿到,是可以比較精準的進行設備 唯一標識 的,但問題是,我們拿不到。。怎么辦?
看看下面幾個數據
- 設備屏幕尺寸(iOS設備如此的統一,一共就那么幾個屏幕尺寸,重復的還不一堆一堆的)
- 設備操作系統(iOS系統碎片化如此的低,大部分幾乎都升到較高級的系統版本,重復的依然一堆一堆)
- 設備IP(IP這玩意會變啊,離開WIFI進入3G,經常變,并且IP這玩意在同一WIFI下也重復的一堆一堆的啊)
- 訪問時間(時間這玩意更沒譜了,你們的用戶量越大,某一個確定的時間段內,發生第一次安裝,重復的就越多)
- 還有更多類似的數據
發現沒有,上面的數據最大的特點就是,有一定的描述設備體征的信息,但是如果只靠這一個描述信息,那結果就是重復的太多太多,根本沒法確定一個唯一性。
但是,如果我們把這么些描述信息做成一個合集,同一時間內滿足所有的條件,那么這個設備重復的概率一下就縮減了太多太多。
舉個例子,到app安裝完畢第一次打開的時候,所有訪問過wap的設備信息,把他們的信息全都收集起來,找到同樣的屏幕尺寸,同樣的操作系統版本,同樣的IP地址,訪問時間相差不超過10min(暫定)的設備,在如此多得限定條件下,我們近乎可以認定為,是具有唯一性的設備,是同一個人
可以看到這里面眾多的信息一起去過濾,比較強的過濾條件就是IP,但因為IP存在頻繁變化,所以追加了時間條件,IP也可能因為WIFI路由器的原因導致,IP也存在重復和誤傷,這時候,又輔助了簡單的設備信息進行二次過濾。
這樣我們就找到了一個并不完美的 唯一標識 ,有了這個唯一標識,就可以實現我們的跨瀏覽器和app的互通。
其實友盟的SDK就是這么做的
友盟通過這個方法,知道了用戶是從哪個網頁看到的app下載的廣告,然后發生的去appstore下載并運行的行為,從而有效的能核算廣告的收益
a.通過對應用appstore URL進行封裝,獲取分渠道點擊用戶的相關信息,包括:時間、IP、設備類型、操作系統版本;
b.通過在應用中集成代碼,獲取初次打開應用的用戶信息,包括:時間、IP、設備類型、操作系統版本;
c.實時對比不同渠道點擊用戶和應用激活用戶信息,區分不同渠道帶來的激活用戶;
d.此統計方式不用媒介提供統計數據,實時自動對比,會存在一定誤差,但可以基本衡量各渠道間及不同時期的渠道激活轉化數據。
他有什么弊端嗎?弊端還是挺明顯的,因為他是不完美的 唯一標識 ,所以就存在著誤傷。
什么是誤傷?用戶A瀏覽了WAP界面,用戶B恰巧用同一屏幕,同一操作系統版本,同一網段出口IP,在既定時間內,B用戶下載并運行了APP,這樣我們這套方案,會把B識別成A,等到A真的下載完APP后再來運行,數據可能已經失效了
這種誤傷是概率存在的,在現有的限定條件下,隨著app的用戶體量越來越大,這種誤傷將會越來越明顯。
來自: http://awhisper.github.io/2016/05/11/iOSBrowserDomainBridge/