11

Android 紹介追跡を機能させようとしています。ここで見つけた唯一のドキュメントに従っていますhttp://code.google.com/mobile/analytics/docs/android/#referrals Androidマニフェストファイルに次のものがあります

<receiver  
android:name="com.google.android.apps.analytics.AnalyticsReceiver"  
android:exported="true">  
    <intent-filter>  
                <action android:name="com.android.vending.INSTALL_REFERRER" />  
        </intent-filter>  
</receiver>  
<receiver android:name="com.package.Receiver" android:exported="true">  
        <intent-filter>  
                <action android:name="com.android.vending.INSTALL_REFERRER" />  
        </intent-filter>  
</receiver>  
<uses-sdk android:minSdkVersion="4"/>  

com.package.Receiver は次で始まります。

public void onReceive(Context paramContext, Intent paramIntent) {  
        String str1 = paramIntent.getStringExtra("referrer");  
        Log.i("myapp", "action: '" + paramIntent.getAction() + "'  
referrer string: '" + str1 + "'"); 

また、少し逆コンパイルすると、com.google.android.apps.analytics.AnalyticsReceiver には次のコードが含まれます。

public void onReceive(Context ctx, Intent intent)  
/*     */   {  
/*  24 */     String referrer = intent.getStringExtra("referrer");  
/*     */  
/*  26 */     if ((!  
("com.android.vending.INSTALL_REFERRER".equals(intent.getAction())))  
|| (referrer == null))  
/*     */     {  
/*  28 */       return;  
/*     */     }  
/*     */ 
/*  31 */     String formattedReferrer = formatReferrer(referrer);  
/*     */  
/*  33 */     if (formattedReferrer != null) {  
/*  34 */       PersistentEventStore store = new  
PersistentEventStore(ctx);  
/*  35 */       store.setReferrer(formattedReferrer);  
/*  36 */       Log.d("googleanalytics", new  
StringBuilder().append("Stored   
referrer:").append(formattedReferrer).toString());  
/*     */     } else {  
/*  38 */       Log.w("googleanalytics", "Badly formatted referrer, ignored");  
/*     */     }  
/*     */   }  

「googleanalytics」をログに記録する 36 行目と 38 行目の 2 行に注意してください。上記のアプリを市場に出して、Nexus One にダウンロードしようとしました (以前のバージョンのアプリをアンインストールした後)。この投稿の冒頭でリンクした Google ページを使用してリンクを生成しました

http://www.google.com/url?sa=D&q=http://market.android.com/search%3Fq%3Dpname:com.package.app%26referrer%3Dutm_source%253Dgoogle%2526utm_medium%253Dcpc%2526utm_term%253Drunning%25252Bshoes%2526utm_content%253Dcontent1%2526utm_campaign%253Dslogan&usg=AFQjCNFctwqk1WgWl0bhiIBNVqy3U4OPRw

そのリンクからアプリをダウンロードしているときに、logcat を Nexus One に接続しましたが、「googleanalytics」または「myapp」からのログが表示されません。Google アナリティクス ライブラリの残りの部分は、私のアプリで機能します。IE ページのヒット数などに関する Google アナリティクスの記録が表示されます。ただし、すべてのトラフィック ソースは「直接トラフィック」です。何が起こっているのか途方に暮れています。私が間違っているかもしれないことについて誰かが洞察を持っていますか?

4

3 に答える 3

11

よくあることですが、私は自分の答えを見つけました。私の問題は AndroidManifest.xml にありました

マニフェストには次のものがありました。

<manifest>
    <application>
    </application>
    <receiver>
    </receiver>
    <uses-sd/>
 </manifest>    

レシーバータグが間違った場所にありました。このように見えるはずです

<manifest>
    <application>
        <receiver>
        </receiver>
    </application>
    <uses-sd/>
 </manifest>  

アプリのインストール時に期待するログが表示されるようになりました。数時間後には、Google アナリティクスにもデータが表示されることを願っています。

于 2011-01-23T00:18:04.793 に答える
9

私は、アンドロイド用の分析を備えた紹介トラッカーをかなり調べました。ブロードキャスト インテントを送信するだけで、アプリを市場に出す必要はありません。

Intent i = new Intent("com.android.vending.INSTALL_REFERRER");
i.setPackage(com.package.yourapp)
//referrer is a composition of the parameter of the campaing
i.putExtra("referrer", referrer);
sendBroadcast(i);
于 2011-07-30T11:01:07.060 に答える
0

1 つのアクションに対して指定できる BroadcastReceiver は 1 つだけです。AndroidManifest.xml には、2 つのリッスンがありcom.android.vending.INSTALL_REFERRERます。

レシーバーと Google Analytics レシーバーの両方でインテントを処理する場合は、次のように、レシーバーを AnalyticsReceiver のサブクラスにします。

import com.google.android.apps.analytics.AnalyticsReceiver;

class Receiver extends AnalyticsReceiver {
    @Override
    void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);

        // Add your custom handling here
    }
}

次に、あなたが AndroidManifest.xml で唯一の受信者であることを確認します。

<receiver android:name="com.package.Receiver" android:exported="true">
  <intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>  
于 2012-12-14T22:48:15.573 に答える