2016-05-07 4 views
1

У меня есть приложение для Android, которое работает с веб-браузером Android, и я подумал добавить в него аналитику google.Android-приложение и Google Analytics

Я следил за официальными инструкциями от here. Приложение продолжает работать исправно, но я не принимаю никакого ответа на сайте Google Analytics.

Ниже я покажу вам свой код, чтобы узнать, допустили ли я ошибки.

* В MainActivity вы можете видеть только те части кода, которые я изменяю для Google Analytics.

Импорт для Google Analytics

import com.google.android.gms.analytics.GoogleAnalytics; 
import com.google.android.gms.analytics.HitBuilders; 
import com.google.android.gms.analytics.Tracker; 

MainActivity.java

private WebView myWebView; 
    private Tracker mTracker; 
    private String name = new String("MyApp Main Screen"); 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.activity_main); 
     setVolumeControlStream(AudioManager.STREAM_MUSIC); 
     myWebView = (WebView) this.findViewById(R.id.webView1); 
     WebSettings settings = myWebView.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     myWebView.loadUrl("file:///android_asset/www/index.html"); 
     myWebView.setVerticalScrollBarEnabled(false); 
     myWebView.setHorizontalScrollBarEnabled(false); 
     settings.setDomStorageEnabled(true); 
     settings.setDatabaseEnabled(true); 
     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { 
      settings.setDatabasePath("/data/data/" + myWebView.getContext().getPackageName() + "/databases/"); 
     } 
     myWebView.addJavascriptInterface(new AudioInterface(this), "AndAud"); 
     myWebView.addJavascriptInterface(new InternetInteface(this), "AndInChk"); 
     myWebView.setWebChromeClient(new WebChromeClient() { 
      @Override 
      public void onExceededDatabaseQuota(String url, 
               String databaseIdentifier, 
               long currentQuota, 
               long estimatedSize, 
               long totalUsedQuota, 
               WebStorage.QuotaUpdater quotaUpdater) { 
       quotaUpdater.updateQuota(estimatedSize * 2); 
      } 
     }); 


     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 


     // Obtain the shared Tracker instance. 
     AnalyticsApplication application = (AnalyticsApplication) getApplication(); 
     mTracker = application.getDefaultTracker(); 


    } 




    @Override 
    protected void onResume() { 
/* myWebView.onResume(); */ 
     myWebView.resumeTimers(); 
     super.onResume(); 


     mTracker.setScreenName(name); 
     mTracker.send(new HitBuilders.ScreenViewBuilder().build()); 


    } 

В предыдущем коде части для аналитика являются следующие

private Tracker mTracker; 
private String name = new String("MyApp Main Screen"); 

//in onCreate class 
// Obtain the shared Tracker instance. 
AnalyticsApplication application = (AnalyticsApplication) getApplication(); 
mTracker = application.getDefaultTracker(); 



//in onResume class 
mTracker.setScreenName(name); 
mTracker.send(new HitBuilders.ScreenViewBuilder().build()); 

AnalyticsApplication.java

package com.r.movie.quiz; 

import android.app.Application; 

import com.google.android.gms.analytics.GoogleAnalytics; 
import com.google.android.gms.analytics.Tracker; 


public class AnalyticsApplication extends Application { 

    private Tracker mTracker; 

    synchronized public Tracker getDefaultTracker() { 
     if (mTracker == null) { 
      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 

      mTracker = analytics.newTracker(R.xml.global_tracker); 
     } 
      return mTracker; 
    } 

} 

build.gradle -> уровень App

apply plugin: 'com.android.application' 


android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "com.r.movie.quiz" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 28 
     versionName "1.1.6" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.3.0' 
    compile 'com.google.android.gms:play-services-analytics:8.4.0' 

} 

apply plugin: 'com.google.gms.google-services' 

build.gradle -> уровень проекта

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.1.0' 
     classpath 'com.google.gms:google-services:2.0.0-alpha6' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.r.movie.quiz" 
     android:versionCode="28" 
     android:versionName="1.1.6"> 



     <uses-sdk 
      android:minSdkVersion="11" 
      android:targetSdkVersion="23" /> 

     <application 
      android:name=".AnalyticsApplication" 
      android:allowBackup="true" 
      android:icon="@mipmap/ic_launcher" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme"> 


      <activity 
       android:name="com.r.movie.quiz.MainActivity" 
       android:configChanges="orientation" 
       android:label="@string/app_name" 
       android:screenOrientation="portrait" 
       android:theme="@style/Theme.AppCompat.NoActionBar"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 

        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 

     </application> 

     <uses-permission android:name="android.permission.INTERNET" /> 
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
     <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

    </manifest> 

Activity_Main.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.r.movie.quiz.MainActivity" 
    tools:ignore="MergeRootFrame" > 

    <WebView 
     android:id="@+id/webView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 

ответ

0

Это работает!

Я заново создаю учетную запись для приложения, и я использую новый файл json с новым USER-ID.

Также я удалить следующие строки MainActivity кода

//in onResume class 
mTracker.setScreenName(name); 
mTracker.send(new HitBuilders.ScreenViewBuilder().build()); 

и Ι создать функцию о том, что и я называю это sendScreenName()

private void sendScreenName() { 
    String name = "MainActivity"; 

    // [START screen_view_hit] 
    mTracker.setScreenName(name); 
    mTracker.send(new HitBuilders.ScreenViewBuilder().build()); 
    // [END screen_view_hit] 
} 

Для конца, я добавил следующую строку в конце onCreate:

sendScreenName(); 

В конце концов, когда я открываю приложение, я видел магнит ic "1" в отчетах analytics.google.com (в режиме реального времени)!

0

Использование EasyTracker является альтернативой. EasyTracker - это просто альтернатива Tracker. Если Tracker не работает, вы можете попробовать EasyTracker.

Пример:

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.os.PowerManager; 
import android.os.PowerManager.WakeLock; 


import com.google.analytics.tracking.android.EasyTracker; 
import com.google.analytics.tracking.android.MapBuilder; 

public class Example extends Activity { 

    @Override 
    protected void onCreate(Bundle sis){ 
     super.onCreate(sis); 

     et = EasyTracker.getInstance(Contact.this); 
     et.send(MapBuilder.createEvent(TrackEventNameHandler.CLASS_CONTACT, TrackEventNameHandler.TRACK_EVENT_OK, TrackEventNameHandler.EVENT_TRACK, null).build()); 


    } 

    EasyTracker et; 
    @Override 
    public void onStart(){ 
     super.onStart(); 
     EasyTracker.getInstance(this).activityStart(this); 
    } 
    @Override 
    public void onStop() { 
     super.onStop(); 
     EasyTracker.getInstance(this).activityStop(this); 
    } 

} 
+0

Да, но я использую v4 Google Analytics, а EasyTracker создан для v3. Вы используете это: import com.google.analytics.tracking.android.EasyTracker; Но я импортировал Tracker вот так: import com.google.android.gms.analytics.Tracker; - это другой путь. –

+0

Поддерживаются обе версии. Если новая версия не работает, используйте более раннюю версию. – Zoe

+0

Спасибо моему другу, но если вы видите, я решил проблему! :) –