Android OからBackground execution limitsでほとんどの暗黙的Broadcastが動作しなくなりましたよねー
ドキュメントは以下。
ちなみに、以下のドキュメントに書いてあるActionなどは暗黙的Broadcastでもまだ動きます。
インストールリファラー(com.android.vending.INSTALL_REFERRER
)のBroadcast どうなるの??
さて、本題。
「おー、じゃインストールリファラーのcom.android.vending.INSTALL_REFERRER
とかどうなるんだ?動かないのか?」と思ったわけです。
Google Playからcom.android.vending.INSTALL_REFERRERで投げられるBroadcastのIntentの中身を確認してみた
Logactの出力結果が以下です。
10-03 18:19:15.740 D/InstallReferrerReceiver(28042): Intent { act=com.android.vending.INSTALL_REFERRER flg=0x10 pkg=com.os.operando.takosan cmp=com.os.operando.takosan/.InstallReferrerReceiver (has extras) }
10-03 18:19:15.740 D/InstallReferrerReceiver(28042): key : referrer
10-03 18:19:15.740 D/InstallReferrerReceiver(28042): value : referrer_test
10-03 18:19:15.740 D/InstallReferrerReceiver(28042): key : referrer_timestamp_seconds
10-03 18:19:15.740 D/InstallReferrerReceiver(28042): value : 1507022325
10-03 18:19:15.740 D/InstallReferrerReceiver(28042): com.android.vending.INSTALL_REFERRER
10-03 18:19:15.740 D/InstallReferrerReceiver(28042): com.os.operando.takosan
10-03 18:19:15.741 D/InstallReferrerReceiver(28042): referrer : referrer_test
Intent { act=com.android.vending.INSTALL_REFERRER flg=0x10 pkg=com.os.operando.takosan cmp=com.os.operando.takosan/.InstallReferrerReceiver (has extras) }
ってなってるのを見ると、Intentは明示的に投げられてるっぽいっすね。
Manifestの中身見て、該当するBroadcastを探して投げてくれてるのかな?内部実装はわからん...
結論
- Android Oでもインストールリファラー(
com.android.vending.INSTALL_REFERRER
)のBroadcastは動く - なぜなら、明示的Intentで実行されてるから
確認方法
- 以下のQRはGoogle Playで公開してる🐙アプリへのURL + リファラー付き
- QRを読み込んで、Google Playでアプリをインストールする
- アプリを起動したタイミングで、LogcatにIntentの内容が出力される
- 実装したコードはこんな感じ
- https://github.com/operando/TakoSan/commit/6b2964660e5e7ee1b86929d45a76e4465a267868