iOS未安裝APP獲取Safari瀏覽器數(shù)據(jù)(可用來(lái)記錄下載渠道及推廣源)

原文鏈接:http://www.hudongdong.com/ios/373.html

本篇文章的目的就是要達(dá)成未安裝的app在安裝app之后恩静,去獲取安裝app之前Safari所瀏覽的數(shù)據(jù)月幌,比如說(shuō)用戶(hù)在未安裝手機(jī)百度時(shí)亲铡,已經(jīng)在Safari瀏覽器中登錄了百度帳號(hào)国觉,當(dāng)安裝手機(jī)百度之后称开,打開(kāi)該APP可以自動(dòng)登錄這個(gè)Safari瀏覽器中所登錄的百度帳號(hào)八毯。

當(dāng)然也可以達(dá)成那種效果皮获,比如打開(kāi)某個(gè)帶有邀請(qǐng)碼的網(wǎng)頁(yè)推薦用戶(hù)去下載app焙蚓,當(dāng)通過(guò)appstore下載完app之后,打開(kāi)該app洒宝,可以知道該邀請(qǐng)碼是多少购公,網(wǎng)頁(yè)和下載app之間隔了一層appstore,不能從網(wǎng)頁(yè)直接傳值到app雁歌,所以如果未安裝該app的話(huà)宏浩,就需要網(wǎng)頁(yè)和app去讀取一個(gè)相同的值去標(biāo)記,但是對(duì)于ios系統(tǒng)來(lái)說(shuō)将宪,idfa等唯一標(biāo)識(shí)符只能app獲取绘闷,網(wǎng)頁(yè)獲取不到橡庞,所以一般無(wú)法通信

比如上面這個(gè)圖,A用戶(hù)從web網(wǎng)頁(yè)跳轉(zhuǎn)到appstore印蔗,再?gòu)腶ppstore下載app扒最,但是這個(gè)過(guò)程中,也許用戶(hù)A华嘹、B吧趣、C都在下載該軟件,web網(wǎng)頁(yè)是無(wú)法直接像app傳送任何數(shù)據(jù)的耙厚,所以就需要確認(rèn)到底哪個(gè)是從web網(wǎng)頁(yè)推薦過(guò)來(lái)下載的强挫,哪些是自己去appstore下載的。

一薛躬、判斷唯一用戶(hù)

1俯渤、通過(guò)idfa等標(biāo)識(shí)判斷

idfa等唯一標(biāo)識(shí)只有oc能獲取,但是網(wǎng)頁(yè)一般獲取不到ios的idfa型宝,uuid等硬件的唯一標(biāo)識(shí)符(除非使用蘋(píng)果配置文件八匠,這個(gè)用戶(hù)需要安裝,無(wú)法做到無(wú)痕趴酣,而且使用起來(lái)比較麻煩梨树,有興趣的可以去看看)

2、通過(guò)多重可獲取的信息綜合判斷

由于無(wú)法準(zhǔn)確的獲得idfa等信息岖寞,所以可以多記錄幾個(gè)網(wǎng)頁(yè)和app都能獲取的數(shù)據(jù)抡四,比如網(wǎng)絡(luò)模式、IP仗谆、時(shí)間指巡、機(jī)型、位置等胸私,通過(guò)多重判斷來(lái)看是不是同一個(gè)人厌处,但是這種方式是存在誤差的,比如一個(gè)公司用的同一個(gè)網(wǎng)絡(luò)同一個(gè)機(jī)型的兩個(gè)人就會(huì)判斷有錯(cuò)誤岁疼。

3阔涉、通過(guò)cookies判斷

之前是不可以的,因?yàn)閕os應(yīng)用是沙盒運(yùn)行捷绒,app之間創(chuàng)建的webview之間的cookies都是沙盒狀態(tài)的瑰排,但是ios9之后,終于增加了一個(gè)全新的類(lèi)SFSafariViewController暖侨,這個(gè)相當(dāng)于在app內(nèi)部創(chuàng)建了一個(gè)safari瀏覽器椭住,用的和safari瀏覽器共同的cookies,所以可以用SFSafariViewController來(lái)獲取cookies

二字逗、使用SFSafariViewController

這個(gè)SFSafariViewController很簡(jiǎn)單京郑,導(dǎo)入頭文件#import <SafariServices/SafariServices.h>就可以像其他普通的viewcontroller一樣創(chuàng)建

SFSafariViewController一般使用這兩個(gè)代理函數(shù)

使用之后就可以打開(kāi)指定的url宅广,并且使用的是safari的cookies,打開(kāi)的頁(yè)面樣子像下面這樣

下面的工具欄在代理中也可以設(shè)置些举,但是一般不自己再設(shè)置了

三跟狱、網(wǎng)頁(yè)和app共用cookies

使用SFSafariViewController訪(fǎng)問(wèn)域名之后,用的就是用safari打開(kāi)的頁(yè)面的cookies户魏,比如我在手機(jī)的safari頁(yè)面打開(kāi)的網(wǎng)址是:www.hudongdong.com/uid/20驶臊,產(chǎn)生了一個(gè)cookies:20,然后我在app中打開(kāi)網(wǎng)址www.hudongdong.com的時(shí)候叼丑,就可以用到同一個(gè)cookies:20关翎,,而別人如果沒(méi)有用safari頁(yè)面事先打開(kāi)這個(gè)網(wǎng)址的話(huà)鸠信,cookies:20是不會(huì)有的纵寝,這樣就知道是我打開(kāi)的,然后我在app中給服務(wù)器單獨(dú)傳值即可星立。

現(xiàn)在cookies雖然知道了店雅,但是還有一點(diǎn)就是在SFSafariViewController中是獲取不到cookies的,因?yàn)檫@個(gè)cookies存在safari系統(tǒng)中贞铣,那么怎么得到對(duì)應(yīng)的值呢,那就需要服務(wù)端做一個(gè)對(duì)于你軟件的scheme跳轉(zhuǎn)了沮明。

因?yàn)楫?dāng)你訪(fǎng)問(wèn)網(wǎng)頁(yè)的時(shí)候辕坝,網(wǎng)頁(yè)可以獲取到你的cookies,你無(wú)需手動(dòng)獲得cookies荐健,需要做的就是使用這個(gè)cookies去登錄app中需要打開(kāi)的那個(gè)網(wǎng)站酱畅,而在網(wǎng)頁(yè)返回?cái)?shù)據(jù)中調(diào)用你軟件的scheme,同時(shí)在調(diào)用的時(shí)候把定義的cookies或者其他值傳進(jìn)來(lái)江场,比如我軟件的scheme是comjdnetkuaifa纺酸,那么可以通過(guò)js調(diào)用:location.href = "comjdnetkuaifa://uid/" + uid;,這樣就可以把用戶(hù)的uid標(biāo)識(shí)直接傳過(guò)來(lái)了址否,然后在app中的代理方法

獲取scheme傳過(guò)來(lái)的值餐蔬,比如像我們做的一樣把uid傳過(guò)來(lái)。

cookies的作用僅僅是登錄同一個(gè)網(wǎng)站讓網(wǎng)頁(yè)端去判斷之前是哪個(gè)用戶(hù)登錄的佑附,然后網(wǎng)頁(yè)返回對(duì)應(yīng)的需要的值即可樊诺。

四、細(xì)節(jié)優(yōu)化

因?yàn)橐龅綗o(wú)痕音同,就是在用戶(hù)不知不覺(jué)間登錄词爬,所以需要調(diào)整SFSafariViewController的樣式,因?yàn)槿绻褂胮resentViewController的方案权均,在viewcontroller之間跳轉(zhuǎn)的話(huà)顿膨,肯定會(huì)影響用戶(hù)的體驗(yàn)锅锨,而網(wǎng)上流傳的方案

設(shè)置透明度為透明和隱藏的話(huà),蘋(píng)果現(xiàn)在官方是不允許的

SafariViewContoller must be used to visibly present information to users; the controller may not be hidden or obscured by other views or layers. Additionally, an app may not use SafariViewController to track users without their knowledge and consent.

并且現(xiàn)在透明度最低設(shè)置為0.05恋沃,所以這個(gè)方案是會(huì)被拒的必搞。

網(wǎng)上提供了一種思路,可以考慮吧safariView加到現(xiàn)在的Viewcontroller中芽唇,

當(dāng)使用完畢之后顾画,再移除即可

但在實(shí)際運(yùn)行中,發(fā)現(xiàn)如果這樣處理的話(huà)的確隱藏了匆笤,但是卻并沒(méi)有調(diào)用訪(fǎng)問(wèn)研侣。

所以就用了一種解決方案是使用presentViewController切換界面

在初始化完成的時(shí)候,切換過(guò)來(lái)即可

五炮捧、其他獲取cookies的方法

如果使用webview的話(huà)庶诡,可以在webview的代理函數(shù)中,去獲取cookies咆课。

但是這個(gè)cookies是沙盒中的cookies末誓,就是軟件自己的cookies,不是safari的cookies

六书蚪、demo下載

Github下載地址:https://github.com/DamonHu/cookiessssss

GitOSC下載地址:http://git.oschina.net/DamonHoo/cookiessssss

當(dāng)然還有另外一個(gè)別人寫(xiě)好可以測(cè)試網(wǎng)頁(yè)的demo

github下載地址:https://github.com/mackuba/SafariAutoLoginTest

七喇澡、參考文章

iOS app與瀏覽器 跨域互通

iOS10 SFSafariViewController not working when alpha is set to 0

如何獲取一個(gè)uiwebview中的請(qǐng)求的cookie

iOS9-WKWebView+SFSafariViewController

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市殊校,隨后出現(xiàn)的幾起案子晴玖,更是在濱河造成了極大的恐慌,老刑警劉巖为流,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呕屎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡敬察,警方通過(guò)查閱死者的電腦和手機(jī)秀睛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)莲祸,“玉大人蹂安,你說(shuō)我怎么就攤上這事∪裰模” “怎么了藤抡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)抹估。 經(jīng)常有香客問(wèn)我缠黍,道長(zhǎng),這世上最難降的妖魔是什么药蜻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任瓷式,我火速辦了婚禮替饿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贸典。我一直安慰自己视卢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布廊驼。 她就那樣靜靜地躺著据过,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妒挎。 梳的紋絲不亂的頭發(fā)上绳锅,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音酝掩,去河邊找鬼鳞芙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛期虾,可吹牛的內(nèi)容都是我干的原朝。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼镶苞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼喳坠!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起茂蚓,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤丙笋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后煌贴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锥忿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年牛郑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敬鬓。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淹朋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钉答,到底是詐尸還是另有隱情础芍,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布数尿,位于F島的核電站仑性,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏右蹦。R本人自食惡果不足惜诊杆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一歼捐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晨汹,春花似錦豹储、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至铝穷,卻和暖如春钠怯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氧骤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工呻疹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筹陵。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓刽锤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親朦佩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子并思,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 文章已在 2017年04月26日14:00 更新 例如: 分享一個(gè)頁(yè)面,然后用戶(hù)通過(guò)這個(gè)頁(yè)面去下載app语稠,完成...
    雨聲不吃魚(yú)閱讀 5,576評(píng)論 4 13
  • 1宋彼、通過(guò)CocoaPods安裝項(xiàng)目名稱(chēng)項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_x閱讀 15,968評(píng)論 3 119
  • 未來(lái)大方向:服務(wù)業(yè) 制造業(yè)陸續(xù)從一線(xiàn)城市撤出,方向:高端制造業(yè)-理工科 城市:16個(gè)人口超過(guò)500w的大城市(消費(fèi)...
    城艾子閱讀 277評(píng)論 0 0
  • 通過(guò)練習(xí) 培訓(xùn) 以及最重要的——方法 來(lái)設(shè)法增加自己的注意力 提高記憶力自己判斷力 讓自己切實(shí)比以前更聰明
    lubiaook閱讀 598評(píng)論 0 0
  • 我把時(shí)間安放在角落 聽(tīng)它陳述過(guò)往的曲折 有甜蜜也有苦澀 你只是一個(gè)普通過(guò)客 從我的世界輕輕路過(guò) 我把記憶幻化成煙火...
    思念potato閱讀 160評(píng)論 1 0