Android应用和谷歌分析

时间:2016-05-07 18:46:42

标签: android google-analytics

我有一个Android应用程序,它与android webview一起工作,我想要添加谷歌分析。

我按照here的官方指示进行操作。该应用程序继续正常运行,但我没有在谷歌分析网站上做任何回应。

下面我向您展示我的代码,看看我是否犯了一些错误。

*在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 - &gt;应用级别

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 - &gt;项目级别

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

2 个答案:

答案 0 :(得分: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);
    }

}

答案 1 :(得分:0)

有效!

我为应用程序重新创建帐户,并使用带有新USER-ID的新json文件。

此外,我删除了以下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();

毕竟,当我打开我的应用程序时,我在analytics.google.com报告上看到了神奇的“1”数字(实时)!

相关问题