web-dev-qa-db-fra.com

CampaignTrackingReceiver n'est pas enregistré - Google Analytics v4

J'utilise Google Analytics v4 dans mon application Android. Le suivi de l'installation fonctionnait bien pendant quelques jours et tout à coup, mon récepteur de radiodiffusion n'est pas enregistré.

Logcat dit: CampaignTrackingReceiver n'est pas enregistré, n'est pas exporté ou est désactivé. Le suivi de la campagne d'installation n'est pas possible. Voir http://goo.gl/8Rd3yj pour des instructions.

Voici ce que j'ai fait dans mon tag d'application Manifest:

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

Et mon récepteur de suivi de campagne personnalisé ressemble à ceci:

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

  }
}

Je ne suis pas capable de comprendre où les choses vont hors de contrôle. J'utilise un seul filtre INSTALL_REFERRER dans mon manifeste. 

13
pixelscreen

Je suppose que vous n'avez pas implémenté AnalyticsService et AnalyticsReceiver? Voici ce que j'ai fait pour que ça marche

    <!-- 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"/>
14
Nicholas Ng

J'ai été dérouté par toutes les réponses. Mais découvrez ce que c'était en déboguant et en vous connectant.

Fondamentalement: Cet avertissement est effectué au démarrage de Google Analytics. Il vous avertit simplement que vous n'avez pas enregistré CampaignTrackingReceiver dans votre manifeste. Mais c'est bien! Puisque vous avez votre propre récepteur de suivi. Testez simplement votre récepteur en procédant de la sorte, tout en déboguant votre application:

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

Pour vérifier si cela fonctionne vraiment, vous pouvez consulter les journaux de Google Analytics:

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

Ce que j'ai vu est le suivant:

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

Alors qu'il se plaint encore. Il le suit toujours.

5
TjerkW

Vous pouvez ignorer l'avertissement et vous n'avez pas besoin d'ajouter AnalyticsReceiver et AnalyticsService si vous ciblez uniquement des périphériques activés pour le service de lecture. Consultez https://developers.google.com/analytics/devguides/collection/Android/v4/dispatch#manual pour plus de détails.

2
Sam Lu

Tant que nous ajoutons

implementation 'com.google.Android.gms:play-services-analytics:15.0.1

et récupérer l'instance d'analyse pour définir un suivi tel que:

analytics = GoogleAnalytics.getInstance(this);
Tracker t = analytics.newTracker("UA-AnalyticsContainerID");

il suffit de définir CampaignTrackingReceiver dans le manifeste:

<receiver
    Android:name="com.google.Android.gms.analytics.CampaignTrackingReceiver"
    Android:enabled="true"
    Android:permission="Android.permission.INSTALL_PACKAGES">
    <intent-filter>
        <action Android:name="com.Android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

Le CampaignTrackingService est obsolète et ne doit pas être utilisé. Enfin, vous pouvez essayer de tester votre option pour envoyer un message à diffusion générale à partir de adb comme suggéré dans la documentation pour les développeurs Android - si vous voyez un événement touché dans les journaux, il devrait également être visible dans le Web analytique après quelques minutes.

0
mathew11

En effet, vous utilisez un récepteur de suivi de campagne personnalisé, comme indiqué dans votre fichier manifeste. Cependant, vous l'avez redirigé vers CampaignTrackingReceiver en appelant 

new CampaignTrackingReceiver (). onReceive (contexte, intention);

sur votre onReceive.

Vous devrez peut-être aussi envoyer () les données de la campagne.

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

0
JoM