問題描述:android
同一個apk安裝包下載地址,在被不一樣的推廣連接安裝到不一樣的手機後,自動區分安裝所屬的連接。chrome
詳細解釋:瀏覽器
有兩我的A和B要爲http://127.0.0.1/sample.apk進行推廣安裝服務器
A發送本身的推廣連接http://127.0.0.1/sample.apk?id=a到好友x的手機app
B發送本身的推廣連接http://127.0.0.1/sample.apk?id=b到好友y的手機測試
x和y兩我的的手機中安裝sample.apk後進行識別自身屬於A仍是B的推廣,從而對A和B進行推廣獎勵。spa
sample.apk運行時後程序內部並沒有異同參數進行識別。ip
————————————————字符串
環境所面臨的主要問題是,app在安裝後,並不能知道自身是從哪一個人的推廣ID下發下來的。產品
在360的某個產品中,有一個推廣送積分,分析後發現是一個瀏覽器指紋的方法,此方案在IOS系統中萬無一失,統計準確,由於瀏覽器默認都是打開safari,而android中,統計的是chrome瀏覽器以及android自帶瀏覽器,而且不能確認用戶是否用了其餘瀏覽器下載。即便統計所有瀏覽器指紋,由服務器去作比對分析,最後發現並不能使瀏覽器後臺訪問,此問題還須要時間去好好分析編寫一個demo測試。
最後研究APK包,發現能夠在zip文件的註釋作一下文章來區分。
在zip包的末尾標記塊的最後兩個字符,是文件註釋的長度,長度之後是明文字符串,可任意修改,不影響zip格式的解包,也不會影響apk的安裝,apk安裝後能夠來讀取這段數據來確認推廣人ID。
固然,方案到了最後其實已經不能算是同一apk安裝包的推廣細分了,不過問題已經簡化到比給每一個推廣用戶生成一個渠道包要方便的多。省去了二次打包和簽名的問題,固然還有一個最大的問題是存儲的問題,由於若是有一百萬人想要推廣的話,我不能生成一百萬份安裝包存儲在服務器中供用戶下載。
昨天還在研究指紋問題的時候,聯繫了下友盟的工做人員,畢竟別人專業作統計,以前告訴我說有在作android這個功能,不過今天他們告訴我說,項目已經砍掉了,問了下實現方案,使用的IP匹配,不過這個應該比瀏覽器指紋更不靠譜吧,對方說大概80%的準確率。
並無什麼技術含量,若是有朋友知道android下的瀏覽器後臺的具體細節,能夠分享下。