3

私は Appbrain SDK と Inmobi SDK をテストしました。そして、この共通のレシーバーを見つけました。そしてカスタムレシーバーを作りました。Googleマーケットでアプリをダウンロードすると、Googleマーケットが「リファラー」値をアプリに送信すると思いました。しかし、私は何も受け取っていません。問題は何ですか?

//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>
</receiver>


//This is Inmobi's receiver
<receiver android:name="com.inmobi.adtracker.androidsdk.IMAdTrackerInstallRefererReciever" android:exported="true"  >
   <intent-filter>
      <action android:name="com.android.vending.INSTALL_REFERRER" />
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
   </intent-filter>
</receiver>


//This is My Custom receiver
<receiver android:name="com.xgame.adproject2.TestReceiver" android:exported="true" >
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

// source
public class TestReceiver extends BroadcastReceiver{

    public static final String TAG = "TEST";

    String referrerString = "";

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

        Log.e(TAG, "11111111");

        if(intent.getAction().equals("com.android.vending.INSTALL_REFERRER")) {
           Bundle extras = intent.getExtras();
           referrerString = extras.getString("referrer");

           Log.e(TAG, "REFERRER: " + referrerString);
        }
    }
}

アプリをダウンすると、Android WebブラウザーにこのURLが入力されました。しかし、アプリをダウンロードした後、リファラー値を受け取っていません。

https://play.google.com/store/apps/details?id=com.xgame.adproject2&referrer=utm_source%3Dcom.xgame.adproject2%26utm_medium%3Dgoogle%26utm_term%3Dbanner%26utm_campaign%3Dxgame

4

2 に答える 2

4

注意すべき重要な点の1つは、Androidマーケット/ Google Playは、マニフェストで定義した最初のレシーバーにのみインストールリファラーを送信することです。したがって、この場合、AppLiftレシーバーのみがそれを取得します。

JavaDocで説明されているように、AppLiftレシーバーからイベントを「転送」する方法があります。http://swisscodemonkeys.github.com/appbrain-sdk/javadoc/reference/com/appbrain/ReferrerReceiver.html

あなたの場合、マニフェストは次のようになります。

//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>

// Keep the execution of InMobi on connectivity change
<receiver android:name="com.inmobi.adtracker.androidsdk.IMAdTrackerInstallRefererReciever" android:exported="true" >
   <intent-filter>
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
   </intent-filter>
</receiver>

スターを付ける価値があるかもしれないAndroidの問題追跡システムの関連するバグはこれであることに注意してください:http ://code.google.com/p/android/issues/detail?id = 24119 (それは有機的なアプリの発見からリファラー文字列を取り戻すことについてです、そしてうまくいけば、Play Webサイトからインストールが行われるときに、リファラー文字列も追加されます)。

于 2012-10-01T10:25:47.453 に答える
3

ずっと前に、Androidマーケットは、インストールにつながったマーケットページのリファラー文字列を渡していました。ある時点で、Googleはこれを止めました。これに関するスレッドはhttp://productforums.google.com/forum/#!topic/android-market/F5TO9uE3WSAで見ることができます。

これで、リファラー文字列を取得するのは、マーケットアプリを開いたときにisを明示的に渡した場合のみです。たとえば、アプリAにアプリBをインストールするボタンがある場合、リファラー文字列market:// details?id = B&referrer=Aを渡すことができます。これは主に、アプリの広告の効果を測定したい広告ネットワークに役立ちます

于 2012-09-29T05:05:51.443 に答える