AnalyticsService nie jest zarejestrowana w manifeście aplikacji - błąd

85

Próbuję zaimplementować usługę Google Analytics do aplikacji na Androida, korzystając z następującej dokumentacji dostarczonej w SDK:

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

Nie widzę żadnych informacji w witrynie administratora Analytics.

Gdy aplikacja jest uruchomiona, widzę następujący komunikat debugowania

„Usługa Analytics nie została zarejestrowana w pliku manifestu aplikacji. Trafienia mogą nie być dostarczane rzetelnie. Instrukcje można znaleźć na stronie https://developers.google.com/analytics/devguides/collection/android/v4/ ”.

Czy możesz mi zasugerować, jak zarejestrować tę usługę?

CreativeManix
źródło
Sprawdź, czy zainicjowałeś analitykę w klasie aplikacji, czy też w podstawowej aktywności lądowania. Zalecam usunięcie kodu globalnego śledzenia (XML).
Manan Sharma

Odpowiedzi:

178

Nie jestem pewien, czy działanie w związku z tym ostrzeżeniem rozwiąże Twój problem (tj. Brak informacji w witrynie administratora Analytics).

W każdym razie, oto, co powinieneś dodać do AndroidManifest.xml wewnątrz tagu aplikacji, jeśli chcesz pozbyć się tego ostrzeżenia:

 <!-- 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" />

Nie musisz dodawać tego wszystkiego, po prostu dodaj to, czego potrzebujesz. W twoim przypadku najwyraźniej wystarczy dodać AnalyticsServiceusługę.

Źródło: https://developer.android.com/reference/com/google/android/gms/analytics/GoogleAnalytics.html

Karim
źródło
9
Rozwiązałem to za pomocą tej metody. Jednak jedną rzeczą, na którą należy zwrócić uwagę początkującym, jest to, że te kody mogą wymagać dodania w tagu „application” =)
yi2ng2
57
Prawdziwe pytanie brzmi: dlaczego ich tu nie ma: developers.google.com/analytics/devguides/collection/android/v4 ?
Buddy,
6
@EnesBattal może dlatego, że są one wymagane tylko na urządzeniach bez usług Google Play. Ale ja też czuję, że to powinno być wspomniane w tych dokumentach.
aandis
2
Dodałem je do mojego manifestu i teraz nie widzę już ostrzeżenia w LogCat, ale kiedy włączam debugowanie dla GoogleAnalytics, nadal widzę je w terminalu? Polecenia, których użyłem do włączenia debugowania w Terminalu: „adb shell setprop log.tag.GAv4 DEBUG” i „adb logcat -s GAv4”
Mehlyfication
@zack, jeśli aplikacja przechodzi do Sklepu Play, oznacza to, że nie wiesz, na jakim urządzeniu aplikacja zostanie zainstalowana, dlatego sugeruje się, że te usługi i odbiorniki muszą zostać dodane do manifestu. Z pewnością w moim przypadku mam kilka urządzeń, na których są już zainstalowane usługi Play i był to jedyny sposób na pozbycie się ostrzeżeń w LogCat
Phileo99
26

dodaj to do manifestu

 <service android:name="com.google.android.gms.analytics.AnalyticsService"
 android:enabled="true"
 android:exported="false"/>
Steve Lai
źródło
jaki wynik powinien zostać wyświetlony w konsoli, aby upewnić się, że działa?
martwa ryba
0

Miałem dość podobny problem - komunikat o AnalyticsService wygląda na to, że Twoje urządzenie nie ma usług Google, ale to nie była prawda. Jednak zdałem sobie sprawę, że nie mogę być pewien, że ten dziennik został wywołany z mojej aplikacji - dziennik wyglądał tak:, 10173-10192/? V/GAV4więc nazwa pakietu została ukryta.

Aby wyświetlić dzienniki z Google Analytics, należy zmienić poziom dziennika na szczegółowy:

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

Pomoże ci to przeanalizować, co jest przyczyną twoich problemów.

Krzysztof Skrzynecki
źródło
4
GoogleAnalytics.getInstance (this) .getLogger (). SetLogLevel (Logger.LogLevel.VERBOSE); jest przestarzałe. Zamiast tego użyj polecenia „adb shell setprop log.tag.GAv4 DEBUG; adb logcat -s GAv4”
aselims
Używasz przestarzałych metod.
IgorGanapolsky
5
@IgorGanapolsky nie został uznany za przestarzały w czerwcu '15
Krzysztof Skrzynecki