相比海外Google Play的一統(tǒng)天下,國內(nèi)的安卓市場顯得非常碎片化。不同的應用商店各霸一方,都希望能夠提高自己的下載量,導致“劫持”的情況非常流行。那么,應用商店“劫持”會對廣告投放與歸因造成什么影響呢?要回答這個問題,我們需要一些背景知識鋪墊。
首先,我們需要理解廣告主會進行“分包”。通常來講,廣告主如果在應用市場A,應用市場B同時上架自己的App,就會打成兩個渠道(應用商店)包:APK-A與APK-B,這樣可以追蹤不同渠道的下載量。另外可能的原因則是應用市場A與B都擁有自己的效果類廣告平臺,在這些廣告平臺進行投放時,下載必須指向?qū)淖杂猩痰辍?/span>
其次,我們來簡要地回顧一下歸因邏輯。以AppsFlyer為例,歸因的起點是用戶激活了嵌有AppsFlyer SDK的App。此時SDK將向服務器發(fā)送一條請求,詢問有沒有見過對應App,對應設備的廣告點擊數(shù)據(jù)。另外一方面,AppsFlyer之前已經(jīng)接收到廣告渠道回傳的點擊數(shù)據(jù),從而可以完成歸因動作(將激活歸因給某個點擊)。
現(xiàn)在回到文章開始的問題,應用商店劫持是如何影響歸因的呢?有了對“分包”和歸因邏輯的理解,我們就可以從整個流程中發(fā)現(xiàn)問題了:
用戶點擊廣告,目標效果是下載APK-A(點擊鏈接中包含APK-A的包名信息)。
用戶準備下載時,本地應用商店發(fā)生“劫持”,用戶其實下載了APK-B。
用戶激活App,AppsFlyer SDK詢問服務器:有見過包名是APK-B的,在這個用戶設備上發(fā)生的點擊嗎?
服務器回答沒有(因為點擊信息是指向包名APK-A的)。
這個下載激活被歸因成自然量(沒有廣告互動),廣告平臺錯誤地被認為沒有任何貢獻。
細心的讀者可能已經(jīng)發(fā)現(xiàn)問題的關鍵了:有沒有辦法使APK-A和APK-B的包名一致?這樣App激活和點擊就可以打通了。但是,APK-A和APK-B的下載量還能同時區(qū)分出來嗎?
AppsFlyer給出的答案是有辦法,能區(qū)分!我們提供獨特的字段“AF_STORE”可以保證不同渠道包APK-A與APK-B的包名一致,但是同時可以區(qū)分他們的下載。
具體的實現(xiàn)方法可以分為兩種,選擇一種操作即可:
技術人員在Manifest里面寫入不同的“AF_STORE”值:
APK-A:<meta-data android:name=”AF_STORE” android:value=”A” />;
APK-B:<meta-data android:name=”AF_STORE” android:value=”B” />;
技術人員在代碼層級利用API寫入“AF_STORE”值:
APK-A:AppsFlyerLib.getInstance().setOutOfStore(“A”);
APK-B:AppsFlyerLib.getInstance().setOutOfStore(“B”);
現(xiàn)在我們帶著解決方案再回顧一下整個流程:
首先,APK-A與B包名一致,但是AF_STORE的值分別是A和B。
用戶點擊廣告,目標是下載APK-A(點擊鏈接中包含APK-A的包名信息)。
用戶準備下載時,本地應用商店發(fā)生劫持,用戶其實下載了APK-B。
用戶激活App,AppsFlyer SDK詢問服務器:有見過包名是APK-B的,在這個用戶設備上發(fā)生的點擊嗎?
服務器回答有(點擊信息是指向包名APK-A的,但此時APK-A=APK-B)。
這個下載激活被歸因成非自然量,廣告平臺被正確歸因。同時,AF_STORE=B。目前,這個字段會展示在原始數(shù)據(jù)報告里。
流程中“劫持”的展現(xiàn)(用戶本來是要在應用商店A下載,卻被劫持到B)可以參考點擊鏈接信息與廣告平臺的設置:用戶下載的應用商店是B,但是在廣告平臺上廣告主設置的卻是A。
通過AppsFlyer提供的“防劫持”方案,廣告主可以準確地了解用戶獲取的真實渠道,同時廣告平臺的價值也能被正確地體現(xiàn)。