簡體   English   中英

Google Analytics Android 應用程序集成

[英]Google Analytics Android App Integration

這是我第一次將 Google Analytics 與 Android 應用程序集成,我在遵循這些指示時遇到了麻煩https://developers.google.com/analytics/devguides/collection/android/v4/

看起來將這部分代碼添加到 MainActivity.java 時它不起作用,所以我無法編譯應用程序。

// 獲取共享的Tracker實例。

AnalyticsApplication application = (AnalyticsApplication) getApplication();
mTracker = application.getDefaultTracker();

我的代碼:

build.gradle(應用程序)

      apply plugin: 'com.android.application'

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"

        defaultConfig {
            applicationId "com.developername.myapp"

            manifestPlaceholders = [manifestApplicationId: "${applicationId}",
                                    onesignal_app_id: "XXX",
                                    onesignal_google_project_number: "XXX"]

            minSdkVersion 15
            targetSdkVersion 23
            versionCode 6
            versionName "2.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.2.0'
        compile 'com.google.android.gms:play-services-ads:9.0.2'
        compile 'com.android.support:gridlayout-v7:23.2.0'
        compile 'com.onesignal:OneSignal:2.+@aar'
        compile 'com.google.android.gms:play-services-gcm:9.0.2'
        compile 'com.google.android.gms:play-services-analytics:9.0.2'
    }
    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:3.0.0'

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

應用程序.java

    package com.developername.myapp;

import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import android.util.Log;

import org.json.JSONObject;
import com.onesignal.OneSignal;


public class Radio 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;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        OneSignal.startInit(this)
                .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
                .setAutoPromptLocation(true)
                .init();
    }



    private class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
        /**
         * Callback to implement in your app to handle when a notification is opened from the Android status bar or
         * a new one comes in while the app is running.
         * This method is located in this Application class as an example, you may have any class you wish implement NotificationOpenedHandler and define this method.
         *
         * @param message        The message string the user seen/should see in the Android status bar.
         * @param additionalData The additionalData key value pair section you entered in on onesignal.com.
         * @param isActive       Was the app in the foreground when the notification was received.
         */
        @Override
        public void notificationOpened(String message, JSONObject additionalData, boolean isActive) {
            String additionalMessage = "";

            try {
                if (additionalData != null) {
                    if (additionalData.has("actionSelected"))
                        additionalMessage += "Pressed ButtonID: " + additionalData.getString("actionSelected");

                    additionalMessage = message + "\nFull additionalData:\n" + additionalData.toString();
                }

                Log.d("OneSignalExample", "message:\n" + message + "\nadditionalMessage:\n" + additionalMessage);
            } catch (Throwable t) {
                t.printStackTrace();
            }
        }


    }
}

主活動.java

package com.developername.myapp.activity;

import android.content.Intent;
import android.os.Bundle;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.developername.myapp.R;
import com.developername.myapp.Radio;
import com.developername.myapp.fragment.MainFragment;



public class MainActivity extends BaseActivity{
        AdView mAdView;
    private static boolean activityStarted;

    Radio application = (Radio) getApplication();
    mTracker = application.getDefaultTracker();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        if (activityStarted
                && getIntent() != null
                && (getIntent().getFlags() & Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) != 0) {
            finish();
            return;
        }

        activityStarted = true;

        mAdView = (AdView) findViewById(R.id.ad_view);


        // Create an ad request. Check your logcat output for the hashed device ID to
        // get test ads on a physical device. e.g.
        // "Use AdRequest.Builder.addTestDevice("ABCDEF012345") to get test ads on this device."
        AdRequest adRequest = new AdRequest.Builder().build();


        // Start loading the ad in the background.
        mAdView.loadAd(adRequest);

        addFragment(new MainFragment(), true);

    }
}

Android Studio 似乎在以下位置發現錯誤

Radio application = (Radio) getApplication();
mTracker = application.getDefaultTracker();

我做錯了什么?

請幫忙。

謝謝

您只需要將您的應用程序文件添加到應用程序級別的清單文件中。 像這樣。

  <application
    android:name=".Application"
    android:allowBackup="false"
    android:icon="@mipmap/app_logo"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/app_logo"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:replace="android:allowBackup">

同時定義網絡和網絡狀態優先級。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM