AnalyticsService n'est pas inscrit dans le manifeste de l'application - erreur

85

J'essaie de mettre en œuvre le service Google Analytics sur l'application Android à l'aide de la documentation suivante fournie dans sdk:

https://developers.google.com/analytics/devguides/collection/android/v4/

Je ne vois aucune information sur le site d'administration des analyses.

Pendant que l'application est en cours d'exécution, je vois le message de débogage suivant

"AnalyticsService n'est pas enregistré dans le manifeste de l'application. Il se peut que les appels ne soient pas diffusés de manière fiable. Consultez https://developers.google.com/analytics/devguides/collection/android/v4/ pour obtenir des instructions."

Pouvez-vous me suggérer comment enregistrer ce service?

CreativeManix
la source
Vérifiez si vous avez initialisé les analyses dans la classe d'application ou l'activité principale d'atterrissage également. Je recommande de supprimer le code de suivi global (XML).
Manan Sharma le

Réponses:

178

Je ne sais pas si le fait de donner suite à cet avertissement résoudra le problème que vous rencontrez (c'est-à-dire que vous ne voyez aucune information sur le site d'administration d'Analytics).

Quoi qu'il en soit, voici ce que vous devez ajouter à AndroidManifest.xml à l'intérieur de la balise d'application si vous souhaitez vous débarrasser de cet avertissement:

 <!-- Optionally, register AnalyticsReceiver and AnalyticsService to support background
      dispatching on non-Google Play devices -->
 <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"/>

 <!-- Optionally, register CampaignTrackingReceiver and CampaignTrackingService to enable
      installation campaign reporting -->
 <receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
     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" />

Vous n'êtes pas obligé d'ajouter tout cela, ajoutez simplement ce dont vous avez besoin. Dans votre cas, il vous suffit apparemment d'ajouter le AnalyticsServiceservice.

Source: https://developer.android.com/reference/com/google/android/gms/analytics/GoogleAnalytics.html

Karim
la source
9
J'ai résolu cela grâce à cette méthode. Cependant, une chose à noter pour les débutants est que ces codes devront peut-être être ajoutés à l'intérieur de la balise "application" =)
yi2ng2
57
La vraie question est de savoir pourquoi ceux-ci ne sont pas présents ici: developer.google.com/analytics/devguides/collection/android/v4 ?
Buddy
6
@EnesBattal peut-être parce que ceux-ci ne sont requis que sur les appareils ne disposant pas de services Google Play. Mais je pense aussi qu'il devrait être mentionné dans ces documents.
aandis
2
Je les ai ajoutés à mon manifeste et maintenant je ne reçois plus l'avertissement dans LogCat, mais lorsque j'active le débogage pour GoogleAnalytics, je les reçois toujours dans le terminal? Les commandes que j'ai utilisées pour activer le débogage dans le terminal: "adb shell setprop log.tag.GAv4 DEBUG" et "adb logcat -s GAv4"
Mehlyfication
@zack, si l'application va sur le Play Store, cela signifie que vous ne savez pas sur quel appareil l'application sera installée, par conséquent, cela implique que ces services et récepteurs doivent être ajoutés au manifeste. Certes, dans mon cas, j'ai plusieurs appareils sur lesquels les services Play sont déjà installés, et c'était le seul moyen de se débarrasser des avertissements dans LogCat
Phileo99
26

ajouter ceci sur le manifeste

 <service android:name="com.google.android.gms.analytics.AnalyticsService"
 android:enabled="true"
 android:exported="false"/>
Steve Lai
la source
quel résultat dans la console doit être affiché pour être sûr que cela fonctionne?
deadfish
0

J'ai eu un problème assez similaire: le message sur AnalyticsService semble que votre appareil ne dispose pas des services Google, mais ce n'était pas le cas pour moi. Cependant, j'ai réalisé que je ne pouvais pas être sûr que ce journal avait été appelé à partir de mon application - le journal ressemblait à ça:, 10173-10192/? V/GAV4donc le nom du package était masqué.

Pour afficher les journaux de Google Analytics, vous devez modifier le niveau de journalisation en détaillé:

GoogleAnalytics.getInstance(this).getLogger().setLogLevel(Logger.LogLevel.VERBOSE);

Cela vous aidera à analyser quelle est la cause de vos problèmes.

Krzysztof Skrzynecki
la source
4
GoogleAnalytics.getInstance (this) .getLogger (). SetLogLevel (Logger.LogLevel.VERBOSE); est obsolète. Utilisez plutôt "adb shell setprop log.tag.GAv4 DEBUG; adb logcat -s GAv4" à la place
aselims
Vous utilisez des méthodes obsolètes.
IgorGanapolsky
5
@IgorGanapolsky il n'était pas obsolète en juin 15
Krzysztof Skrzynecki