国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Google Play以及發布廣告

2019-11-09 16:34:41
字體:
來源:轉載
供稿:網友

有這么一種需求,我們找廣告平臺來推銷我們的APP,我們想要知道這個廣告平臺的轉化率到底怎么樣。是否可以做到?如果APP是發布在Google Play的話,那么是可以做到的。

當用戶點擊一條廣告,并跳轉進了Google Play,Google Play可以獲取到廣告的鏈接,而這條鏈接里帶有referrer參數的話,referrer參數里的內容將在APP安裝完之后,就發給APP。如果APP有監聽這個廣播的對象的話,就能成功捕捉到安裝的來源信息。

Google Play Campaign Attribution介紹了一種解決方案,這種解決方案可以幫助開發者在Google Play的開發者控制臺(developer console)查看到相關信息。

一般的開發者也許讀完上面的教程就足矣,但若是沒搞懂安卓以及Google Play背后的機制,恐怕還有不少坑要踩,畢竟這個方案并不是很容易測試,只有發布到google play后才能真正的檢驗是否成功。(Testing Google Play Campaign Measurement介紹了一種并不完全可靠的方法。)

事實上,當用戶從Google Play安裝完APP后,Google Play作為一個APP本身,會觸發一個Intent實例,Intent實例的action"com.android.vending.INSTALL_REFERRER"。這個Intent實例并非簡單的發出,而是先通過queryBroadcastReceivers的方式先獲取一個接受的隊列,然后只會對隊列的第一個發出Intent實例!

如果一個APP中只有一個INSTALL_REFERRER監聽對象,那還不會觸碰雷區,然后作為開發者,往往更可能接觸到一個已經接入眾多SDK的安卓項目,有多個Receiver監聽INSTALL_REFERRER。對于這種情況,谷歌在文檔中已經說明了一種解決方案(只要一個receiver,其他的不要注冊,在代碼里顯示地(explicitly)整合進去,參考《Testing Google Play Campaign Measurement》一文最后的注意事項),但當某個SDK的Receiver又偏偏提供了另一種解決方案:

List<ResolveInfo> l=context.getPackageManager().queryBroadcastReceivers(intent, 0);// then send the content to each receiver

這個時候如果照著google提供的方案來實現的話,必然會導致一個死循環。(請自行思考原因)如果鄙棄谷歌的方案,而實現這種方案,也未嘗不可。appflyer正是這種方案的實現者之一,這種方案要實現的前提是,在AndroidManifest.xml中一定要注冊好所有的receiver,而不是像谷歌官方推薦的那種——只注冊一種。

官方文檔并沒有說明AndroidManifest.xml中書寫的前后順序是否會影響queryBroadcastReceivers的前后順序,目前只能樂觀地認為它會。通過這種方案,把作為gate的receiver放在第一個,就可以完成。

經測試,android:PRiority不能影響queryBroadcastReceivers的前后順序。

除了這種方案外,還有另一種方案,比較可靠,像Tapjoy等SDK采用這種方案:

以下代碼拷貝自Stackoverflow用戶Mathijs Vogelzang的回答

//This is Appbrain's receiver<receiver android:exported="true" android:name="com.appbrain.ReferrerReceiver" > <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> <meta-data android:name="forward.inmobi" android:value="com.inmobi.adtracker.androidsdk.IMAdTrackerInstallRefererReciever" /> <meta-data android:name="forward.custom" android:value="com.xgame.adproject2.TestReceiver" /></receiver>//個人補充:其他的不需要寫在Manifest, 除非要監聽其他的action。

就是通過meta-data的方式,引入其他幾個receiver。

其實了解到這里,就能知道,就算不接入GA,也一樣可以實現數據的統計,只不過可能不能使用Google的相關服務而已。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 远安县| 巨野县| 江达县| 呈贡县| 定南县| 南阳市| 孙吴县| 大足县| 丘北县| 天祝| 梁平县| 武隆县| 崇仁县| 监利县| 柘荣县| 洛阳市| 宣武区| 金沙县| 阿尔山市| 齐齐哈尔市| 红原县| 虎林市| 通江县| 汤阴县| 张家口市| 封开县| 阿尔山市| 英德市| 日照市| 湘阴县| 武胜县| 华阴市| 通江县| 隆昌县| 贵德县| 瓦房店市| 遂川县| 大兴区| 长泰县| 泌阳县| 惠来县|