10

インストール時に市場リンクを介してアプリにパラメーターを渡すこと について、最初にこの質問をしました。

BroadcastListenerintent-filterアクションでを作れとみんな言ってるようですcom.android.vending.INSTALL_REFERRER。それに関するすべてのドキュメントは、これが Google Analytics の機能であることを暗示しているようです (ドキュメントは v1 にありますが、現時点では v2 SDK しかダウンロードできないため、私はそれを使用しています)。これらのリンクからデータを渡すことができません。完全なマニフェストとブロードキャスト リスナーがあります。必要な場合に備えて、Google アナリティクスを含めました。

まったく機能しません。ブロードキャスト リスナーが呼び出されることはなく、ログには何も出力されません。ヘルプ!

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.robotsidekick.webbrowser"
      android:versionCode="4"
      android:versionName="4.0">

<uses-sdk android:minSdkVersion="17"/>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher">

    <activity
        android:name="WebBrowser"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <receiver
        android:exported="true"
        android:name="com.robotsidekick.webbrowser.InstallReceiver">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>

</application>

</manifest>

ブロードキャスト リスナー

public class InstallReceiver extends BroadcastReceiver
{
    private static final String TAG = "InstallReceiver";

    public void onReceive(Context context, Intent intent)
    {
        Log.e(TAG, "Context: " + context);
        Bundle extras = intent.getExtras();
        if (extras != null)
        {
            Log.e(TAG, "Extras:");
            for (String keys : extras.keySet())
            {
                Log.e(TAG, keys + " -> " + extras.get(keys));
            }
        }
        else
        {
            Log.e(TAG, "Extras are null");
        }
    }
}
4

3 に答える 3

4

したがって、xbakesx は、彼のレシーバーが拡張されている場合に機能するように見えると言いますcom.google.analytics.tracking.android.AnalyticsReceiver

重要なのは、インテントに ...AnalyticsReceiver のアクセス許可があるため、それを拡張していない他のクラスがインテントを取得できないことだと思います。テスト ブロードキャストhttps://developers.google.com/analytics/solutions/testing-play-campaignsを見ると、そのクラスに固有のように見えます。

クラスが置換されるようにそのテストブロードキャストを変更すると、com.google.analytics.tracking.android.AnalyticsReceiverそれを受信できます。最大の問題は、彼らがベータ 4 または 5 でこのクラスをロックダウンしたように見えることです。誰かがベータ 3 へのリンクを持っていれば、これをテストできます。

アップデート:

バム!したがって、権限は問題ではありません。テスト プロジェクトを作成し、PlayStores アルファ テストを使用してリファラー リンクをテストしました。リファラー リンクはhttps://developers.google.com/analytics/devguides/collection/android/v2/campaignsで作成できます。

すばらしいことに、GA jar はまったく必要ありません。ここでテスト プロジェクトを確認してください: https://github.com/twotoasters/AnalyticsTest/このプロジェクトでは、リンクを解析して必要なすべての情報を取得する方法も示します。

于 2013-07-22T21:49:44.733 に答える