【數據標識】iOS App下載渠道的統計需求

需求概述

咱們如今有一個需求,某一個活動須要拉新所謂的拉新通常是推App下載,這個用戶經過這個活動下載了App後,咱們須要作到【在數據庫中記錄這個用戶下載這個App是經過那個二維碼渠道的,從效果上說,咱們指望:html

① 每一個活動(渠道)在數據表中有一條記錄,而一旦有通過該渠道下載的App被打開後,該渠道的下載量會+1,算KPI的(單獨一條記錄,帶有時間戳)前端

② App首次打開時,若是檢測到了渠道上報後,還應該爲該App打上一個全局的渠道標誌,後續的全部請求都應該將此參數帶上,爲後續產生訂單以及流水作準備ios

好比以前咱們爲H5與Server的Ajax請求約定的是這樣的:web

1 var param = {
2     //公共參數
3     common: {
4         us: '渠道',
5         version: '1.0.0'
6     },
7     other: '' // 業務參數
8 };

每次請求就一定會帶上業務參數,而us就是native須要帶的渠道參數,固然native的公共參數比前端多的多,需求明確後,咱們清理下iOS引導至App Store的通常流程。數據庫

這邊的通常流程是,咱們一個App活動,或者咱們一次推廣,通常來講都會用微信打開這個網址,這個是前提一:瀏覽器

① 咱們的一次下載來源於一次活動(推廣或者固定的下載地址),而微信是主要的打開設備微信

而後,咱們要引導至App Store,通常來講會訪問一個H5頁面(在微信中會引導在Safari瀏覽器中打開),而後由H5下載落地頁跳到App Store完成下載,這個是第二個前提:cookie

② 咱們每次是由一個統一的帶渠道因子的H5頁面,引導至App Store的app

在上述基礎上,咱們指望:有一個惟一的H5引導下載落地頁(這裏基本會拋棄微信應用寶引導下載了)dom

這裏初步的實現方案是:

打開H5落地頁時候,將此次活動的渠道號以及ip+ua+時間戳傳給server端記錄,若是在必定時間內,機型和ip成功匹配,則認爲此次下載來源與此次渠道號

這裏須要:

① Server端,提供一個接口,記錄當前渠道+ip+ua+時間戳+屏幕信息(全部能記錄的都記錄),提供一個渠道匹配判斷標誌

② H5訪問落地頁的時候上報相關信息

③ Native首次打開的時候,調用native提供的判斷接口,給該次App打標誌

這裏提出了三個要素:

① H5落地頁

② server上報接口

② server檢查接口

而這種方案是不精確的,H5若是能拿到設備號這類惟一標識的話,便能大大提升準確性,而後不管微信jsdk或者Safari都是作不到的,而網上搜索的方案,提到了一個SFSafariViewController,彷佛能達到共享cookie的做用,因而進行了一番探索。

SFSafariViewController

咱們調研下來,在咱們的場景下,大概是這麼一個狀況:

① 咱們使用Safari打開一個頁面,而且操做cookie

② 在咱們的App中,SFSafariViewController這個庫能打開一個咱們給予的Url,而且這個網頁若是和上面是一個域名cookie是共享的

這個就頗有意思了,咱們就徹底能夠這樣作了:

① 訪問H5下載落地頁訪問接口上報時,Server往cookie種入惟一標識然後引導至App Store

② App首次打開時,以隱藏狀態打開上報頁面,由於同域名,會將Safari的cookie帶上,這裏也會帶上IP等標識

③ Server打標籤,若是判斷有cookie或者ip匹配則返回相關渠道

④ H5檢查頁,使用Hybrid交互,告訴native給該App打上標識

 

 

let vc = SFSafariViewController(url: URL(string: "http://domain.com/landing.html")!)

這裏方案肯定,而後開始落地實施試試狀況,後續在數據展現一塊以友好的方式展現出來,即是大數據的一環

參考文章:https://www.sensorsdata.cn/blog/analyze-distribution-channel-of-ios-app/

相關文章
相關標籤/搜索