72

アプリがマーケットからインストールされた後に Android によって起動された「com.android.vending.INSTALL_REFERRER」インテントをキャッチするブロードキャスト レシーバーを登録しようとしています。

ここで詳細に従っています:http://code.google.com/mobile/analytics/docs/android/#referrals

ただし、Google アナリティクスを使用できないため、独自のソリューションを作成しました。マニフェスト ファイルに以下を追加しました。

<receiver android:name="com.test.Receiver" android:exported="true">
<intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

基本的な BroadcastReceiver クラスを作成しました。

public class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        Bundle extras = intent.getExtras();
        String referrerString = extras.getString("referrer");

        Log.w("TEST", "Referrer is: " + referrerString);
    }
}

ただし、アプリがインストールされている場合、レシーバーはインテントをキャッチしていないようで (インテントがブロードキャストされている場合でも?)、ログ出力が得られません。

どこかで間違っているのでしょうか、それともアプリのインストール時にマーケットがこれらのインテントを起動しなくなったのでしょうか?

4

10 に答える 10

56

私のように install_referrer を機能させられず、これらの機能に関する有用な情報がまったく見つからない人を助けたいと思います。

ノート:

  1. インテントcom.android.vending.INSTALL_REFERRERは、アプリケーションの初回起動時ではなく、インストール プロセス中にキャッチされます。
  2. リファラー ... extras.getString("referrer").. は固定されていますが、コンテンツは http get 構文を尊重する任意の文字列値にすることができます ...referrer=thatsthevalue&thisisnot=xxx

上記のコードは問題ありません。情報を完成させるためのいくつかの説明です。

  1. アンドロイド マニフェスト。タグはタグ<receiver>内にある必要があり <application>ます。
  2. 市場をリンクするための正しい URL は、SDK の有名な Google フォームの結果ではありません

しかし、これは

http://market.android.com/details?id=your.application.package.name&referrer=my_referrer_finally_works_fine

明らかに、モバイル デバイスからリンクをたどる必要があり、完全なテストを行う唯一の方法は、テスト アプリケーションを市場に公開することです。

そして最後に個人的なメモ。

これらの情報が完全に省略されている理由がわかりません。Google が詳細を明らかにしてくれることを願っています。

于 2010-12-14T13:16:36.860 に答える
22

これは少し遅れているかもしれませんが、Google Play を使用せずにインストール リファラーをテストできます。ADB を使用するだけです :)

これをadb.exeから実行します

adb shell

am broadcast -a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es "referrer" "test_referrer=test"

BroadcastReceiver にログの設定がある場合は、LogCat にポップアップが表示されます。

お役に立てれば!

于 2015-06-09T13:18:58.343 に答える
6

これらの回答は、Android 3.1 より前に書かれたに違いないと思います。

システムは、インストール時にアプリを休止状態としてマークするようになりました。ユーザーがアプリを実行 (またはウィジェットを配置) して明示的にアクティブ化するまで、INSTALL_REFERRER またはその他のブロードキャストを受信しません。

于 2012-09-13T15:57:45.753 に答える
5

さて、インテントが起動されなかった理由を見つけました。どうやらあなたはここに概説されているのと同じパラメータ名を使わなければなりません:http ://code.google.com/mobile/analytics/docs/android/#referrals

私がやっていたようにあなた自身のパラメータ名を使うことはできません:S

于 2010-11-04T01:43:15.567 に答える
2

Google のドキュメントが最善ではないことに同意します。ただし、実際にアプリをマーケットプレイスにアップロードしてからダウンロード/インストールすることによってのみ、意図を発火させることができました。インテントは、ダウンロード/インストールの直後に起動します。ユーザーはアプリを起動する必要はありません。これを使用して、バックグラウンド サービスも開始しています。

于 2011-03-28T21:26:43.740 に答える
2

これは最初の開始インテントではなく、google android マーケットに送信される android マーケット関連のインテントであることに注意してください。Android マーケットとは異なるリソースからアプリをインストールすると、起動しません。

そこに作成できるリンクを使用します: http://code.google.com/mobile/analytics/docs/android/#android-market-tracking インテントからリファラーを取得し、それを分解してさまざまなパラメーターを取得します

referrer = intent.getStringExtra("referrer");
Map<String, String> params = Toolbox.getQueryMap(referrer);

PS 一部のアプリのように、これを行うために deviceid/IMEI を読み取る必要はありません。ユーザーをスパイアウトしたくないはずです。

于 2011-06-15T18:53:09.433 に答える
1

実際には、 market://...http://market...のようなリンクがあれば、どちらも正常に機能します。また、リファラー フィールドにどのような種類のパラメーターが含まれるかは問題ではありません。そこにある任意のテキストで問題なく動作します。

このイベント タイプ「com.android.vending.INSTALL_REFERRER」がブロードキャストで送信されないことが主な問題です。このイベントは、インストールされたばかりのアプリケーションにのみ入ります。

UPD: そして、それをテストする方法は 1 つしかありません。アプリをマーケットにデプロイしてから、電話にインストールすることです。

于 2011-05-03T05:52:53.910 に答える