2015-05-24 31 views
9

Ich verwende Google Analytics v4 in meiner Android-App. Das Installations-Tracking funktionierte einige Tage lang einwandfrei und plötzlich wurde mein Rundfunkempfänger nicht registriert.CampaignTrackingReceiver ist nicht registriert - Google Analytics v4

Logcat sagt: CampaignTrackingReceiver ist nicht registriert, nicht exportiert oder ist deaktiviert. Die Verfolgung von Installationskampagnen ist nicht möglich. Anweisungen finden Sie unter http://goo.gl/8Rd3yj.

Dies ist, was ich in meinem Manifest Anwendung Tag getan habe:

Empfänger
<service android:name="com.google.android.gms.analytics.CampaignTrackingService" 
     android:enabled="true" 
    android:exported="false" /> 
    <receiver 
     android:name="my.package.CustomCampaignTrackingReceiver" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="com.android.vending.INSTALL_REFERRER" /> 
     </intent-filter> 
    </receiver> 

Und mein individuellen Kampagnen-Tracking wie folgt aussieht:

public class CustomCampaignTrackingReceiver extends BroadcastReceiver { 

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

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

     Log.v("ReferralReceiver", " " + intent.getAction()); 
     Log.v("ReferralReceiver", " " + intent.getDataString()); 
     Log.v("ReferralReceiver", " " + intent.toString()); 
     Log.v("ReferralReceiver", " " + intent.getStringExtra("referrer")); 

     //call to other referrers 

    } 
} 

Ich bin nicht in der Lage, um herauszufinden, wo die Dinge gehen außer Kontrolle. Ich verwende nur einen INSTALL_REFERRER-Filter in meinem Manifest.

+0

Warum registrieren Sie nicht einfach beide Empfänger (Ihren eigenen Empfänger und den von Google bereitgestellten)? Das Erstellen einer neuen Instanz eines BroadcastReceivers sollte nicht durchgeführt werden. – ianhanniballake

+1

Alles, was ich getan habe, ist auf Google folgen: https://developers.google.com/analytics/solutions/testing-play-campaigns (scrollen Sie unten, es gibt ein Beispiel). – pixelscreen

+2

Und außerdem "Es kann nur einen BroadcastReceiver für eine Aktion geben." Ist es nicht? @ianhanniballake – pixelscreen

Antwort

12

Ich vermute, Sie haben AnalyticsService und AnalyticsReceiver nicht implementiert? Das ist, was ich tat, um es

<!-- Google Analytics --> 
    <receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver" 
       android:enabled="true" 
       android:exported="true"> 
     <intent-filter> 
      <action android:name="com.android.vending.INSTALL_REFERRER" /> 
     </intent-filter> 
    </receiver> 
    <service android:name="com.google.android.gms.analytics.CampaignTrackingService" /> 
    <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" 
       android:enabled="true"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> 
     </intent-filter> 
    </receiver> 
    <service android:name="com.google.android.gms.analytics.AnalyticsService" 
      android:enabled="true" 
      android:exported="false"/> 
0

Dies liegt daran, dass Sie einen benutzerdefinierten Kampagnenverfolgungsempfänger verwenden, wie in Ihrer Manifestdatei angezeigt. Sie haben es jedoch an CampaignTrackingReceiver weitergeleitet, indem Sie

new CampaignTrackingReceiver() aufgerufen haben. onReceive (context, intent);

auf Ihrem onReceive.

Vielleicht haben Sie auch brauchen, um send() die Kampagnendaten

mTracker.send (neu HitBuilders.ScreenViewBuilder() .setCampaignParamsFromUrl (campaignData) .build() );

1

Ich war durch alle Antworten verwirrt. Aber herausgefunden, was es war, durch Debugging und Logging.

Grundsätzlich: Diese Warnung wird beim Start von Google Analytics vorgenommen. Sie warnen nur, dass Sie CampaignTrackingReceiver nicht in Ihrem Manifest registriert haben. Aber das ist in Ordnung! Da hast du deinen eigenen Tracking-Empfänger. testen Sie Ihre Empfänger von so etwas wie dies zu tun, während die App Debugging:

echo 'am broadcast \ 
-a com.android.vending.INSTALL_REFERRER \ 
-n "com.my.app/com.my.app.CustomInstallTrackerReceiver" \ 
--es "referrer" \ 
    "utm_source=promo_mail&utm_medium=emaeil&utm_term=test_term&utm_content=content&utm_campaign=derp"; \ 
exit' | adb shell 

Um zu überprüfen, ob die wirklich arbeiten, können Sie die Protokolle von Google Analytics überprüfen:

adb shell setprop log.tag.GAv4 DEBUG 
adb logcat -s GAv4 

Was ich sah, ist das Folgende:

12-07 11:32:54.678 6993 7011 W GAv4 : CampaignTrackingReceiver is not registered, not exported or is disabled. Installation campaign tracking is not possible. See http : // goo.gl/8Rd3yj for instructions. 
12-07 11:33:14.048 6748 6827 D GAv4 : Received installation campaign: content=content, keyword=test_term, medium=emaeil, name=derp, source=promo_mail 
12-07 11:33:14.048 6748 6827 D GAv4 : Sending installation campaign to: UA-SECRET, content=content, keyword=test_term, medium=emaeil, name=derp, source=promo_mail 
12-07 11:33:14.068 6748 6827 D GAv4 : Hit delivery requested: ht=1481106771894, _s=3, _v=ma9.4.52, adid=xxx, aid=com.my.app, an=Tiqets, ate=1, av=1.6.61.g785cc1e, cc=content, cid=xxx, ck=test_term, cm=emaeil, cn=derp, cs=promo_mail, ni=1, sr=1440x2560, t=data, tid=UA-SECRET, ul=nl-nl, v=1 
12-07 11:33:14.098 6748 6827 D GAv4 : Hit sent to the device AnalyticsService for delivery 

Während es noch meckert. Es verfolgt es immer noch.

Verwandte Themen