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.
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"/>
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.
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.
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.
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 () );