1

私は過去 2 日間、この問題の回避策を見つけようとしました。

紹介に応じてアプリを事前に構成する必要があります。Google Play はアプリのインストール時に Install Referrer インテントをブロードキャストしているため、このタスク用に独自のレシーバーを作成しました。マニフェスト宣言とレシーバーのコードは次のとおりです。

マニフェスト宣言:

    <receiver
        android:name="my.package.CustomReceiver"
        android:exported="true" >
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>

CustomReceiver の簡略化されたコード:

public class CustomReceiver extends BroadcastReceiver {

private static final String CAMPAIGN_SOURCE_PARAM = "utm_source";

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

    Log.d("debug", "waking receiver");
    Uri uri = intent.getData();
    getReferrerMapFromUri(uri);

    new CampaignTrackingReceiver().onReceive(context, intent);
}

void getReferrerMapFromUri(Uri uri) {

    MapBuilder paramMap = new MapBuilder();

    // If no URI, return an empty Map.
    if (uri == null) {
        Log.d("debug", "intent null");

        return;
    }

    if (uri.getQueryParameter(CAMPAIGN_SOURCE_PARAM) != null) {

        // MapBuilder.setCampaignParamsFromUrl parses Google Analytics
        // campaign
        // ("UTM") parameters from a string URL into a Map that can be set
        // on
        // the Tracker.
        paramMap.setCampaignParamsFromUrl(uri.toString());

        Log.d("debug", paramMap.get(Fields.CAMPAIGN_SOURCE));

        // If no source parameter, set authority to source and medium to
        // "referral".
    } else if (uri.getAuthority() != null) {

        paramMap.set(Fields.CAMPAIGN_MEDIUM, "referral");
        paramMap.set(Fields.CAMPAIGN_SOURCE, uri.getAuthority());

    }
}

}

それで全部です。adb shell コマンドでブロードキャスト インストール インテントを送信していますが、まったくアクティブになりません。Google アナリティクス v3 を使用しています。

前もって感謝します!

4

1 に答える 1

2

私はこの方法を試しました。そして、それはうまくいきます.(私はGoogle Analytics v3も使用しています)

まず、マニフェストで:

<!-- Used for Google Play Store Campaign Measurement-->;
<service android:name="com.google.analytics.tracking.android.CampaignTrackingService" />
<receiver android:name="com.google.analytics.tracking.android.CampaignTrackingReceiver" android:exported="true" >
   <intent-filter>
       <action android:name="com.android.vending.INSTALL_REFERRER" />
   </intent-filter>
</receiver>

次に、BroadcastReceiver を拡張する CustomReceiver を追加します (私の場合、開発者からすべてのコードをコピーして貼り付けるだけです)。

package com.example.testanalytics;

import com.google.analytics.tracking.android.CampaignTrackingReceiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class CustomReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
    // Pass the intent to other receivers.

    // When you're done, pass the intent to the Google Analytics receiver.
    new CampaignTrackingReceiver().onReceive(context, intent);
}
}

最後のステップ: 私のアクティビティ (Google アナリティクスにメッセージを送信したい) でインテントを作成し、次のように sendBroadcast( Intent ) を呼び出します。

Intent it = new Intent("com.android.vending.INSTALL_REFERRER");

it.setPackage("com.example.testanalytics");
it.putExtra("referrer", "utm_source%3Dyahoo%26utm_medium%3Dbanner+cpc%26utm_term%3Debook%26utm_content%3Dmy_content%26utm_campaign%3Dmy_campaign_name_2");

sendBroadcast(it);

そして、それを手に入れてください。これがお役に立てば幸いです。

于 2014-04-29T03:38:09.670 に答える