AnalyticsService não registrado no manifesto do aplicativo - erro

85

Estou tentando implementar o serviço google analytics para o aplicativo Android usando a seguinte documentação fornecida no SDK:

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

Não consigo ver nenhuma informação no site de administração do Analytics.

Enquanto o aplicativo está em execução, vejo a seguinte mensagem de depuração

"AnalyticsService não registrado no manifesto do aplicativo. Os acessos podem não ser entregues de forma confiável. Consulte https://developers.google.com/analytics/devguides/collection/android/v4/ para obter instruções."

Você pode me sugerir como registrar este serviço?

CreativeManix
fonte
Verifique se você inicializou a análise na classe do aplicativo ou na atividade de aterrissagem primária também. Eu recomendo remover o código do rastreador global (XML).
Manan Sharma

Respostas:

178

Não tenho certeza se agir de acordo com este aviso resolverá o problema que você está enfrentando (ou seja, não estou vendo nenhuma informação no site de administração do Analytics).

De qualquer forma, aqui está o que você deve adicionar ao AndroidManifest.xml dentro da tag do aplicativo se quiser se livrar deste aviso:

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

Você não precisa adicionar tudo isso, apenas adicione o que você precisa. No seu caso, aparentemente você só precisa adicionar o AnalyticsServiceserviço.

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

Karim
fonte
9
Eu resolvi isso por meio deste método. No entanto, uma coisa a ser observada para o iniciante é que esses códigos podem precisar ser adicionados dentro da tag "aplicativo" =)
yi2ng2
57
A verdadeira questão é por que eles não estão presentes aqui: developers.google.com/analytics/devguides/collection/android/v4 ?
Buddy
6
@EnesBattal talvez porque eles sejam necessários apenas em dispositivos que não possuem os serviços do Google Play. Mas também acho que deve ser mencionado nesses documentos.
aandis
2
Eu adicionei isso ao meu manifesto e agora não recebo mais o aviso no LogCat, mas quando eu habilito a depuração para o GoogleAnalytics eu ainda os recebo no terminal? Os comandos que usei para habilitar a depuração no Terminal: "adb shell setprop log.tag.GAv4 DEBUG" e "adb logcat -s GAv4"
Mehlyfication
@zack, se o aplicativo está indo para a Play Store, isso significa que você não sabe em qual dispositivo o aplicativo será instalado, portanto, está implícito que esses serviços e receptores devem ser adicionados ao manifesto. Certamente no meu caso, tenho vários aparelhos que já possuem os serviços do Play instalados, e essa era a única forma de me livrar dos avisos no LogCat
Phileo99
26

adicione isso no manifesto

 <service android:name="com.google.android.gms.analytics.AnalyticsService"
 android:enabled="true"
 android:exported="false"/>
Steve Lai
fonte
qual resultado no console deve ser exibido para ter certeza de que funcionou?
deadfish
0

Eu tive um problema semelhante - a mensagem sobre AnalyticsService parece que seu dispositivo não tem serviços do Google, mas não era verdade para mim. No entanto, percebi que não podia ter certeza de que esse log foi invocado do meu aplicativo - o log era assim:, 10173-10192/? V/GAV4então o nome do pacote estava oculto.

Para ver os registros do Google Analytics, você deve alterar o nível do registro para detalhado:

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

Isso o ajudará a analisar qual é a causa de seus problemas.

Krzysztof Skrzynecki
fonte
4
GoogleAnalytics.getInstance (this) .getLogger (). SetLogLevel (Logger.LogLevel.VERBOSE); está obsoleto. Use "adb shell setprop log.tag.GAv4 DEBUG; adb logcat -s GAv4" em vez
aselims
Você está usando métodos obsoletos.
IgorGanapolsky de
5
@IgorGanapolsky não foi descontinuado em junho '15
Krzysztof Skrzynecki