2015-12-02 126 views
-1

我正在尝试将Google Analytics(分析)广告系列跟踪功能应用到我的应用中。相关的代码是:Google Analytics广告系列跟踪:测试

MainActivity.java

package com.example.prakhar.myapplication; 

import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; 

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

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     Tracker t = ((AnalyticsApplication) getApplication()).getTracker(AnalyticsApplication.TrackerName.APP_TRACKER); 
     String campaignData = "http://examplepetstore.com/index.html?" + 
       "utm_source=email&utm_medium=email_marketing&utm_campaign=summer" + 
       "&utm_content=email_variation_1"; 

     Log.d("MainActivity", "Sending an event"); 
     t.send(new HitBuilders.ScreenViewBuilder() 
         .setCampaignParamsFromUrl(campaignData) 
         .build() 
     ); 
     Log.d("MainActivity", "Event sent"); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_SHORT) 
         .setAction("Action", null).show(); 
      } 
     }); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } } 

AnalyticsApplication.java

package com.example.prakhar.myapplication; 

import android.app.Application; 

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

import java.util.HashMap; 

/** 
* Created by prakhar on 2/12/15. 
*/ 
public class AnalyticsApplication extends Application{ 
    private Tracker mTracker; 

    // The following line should be changed to include the correct property id. 
    private static final String PROPERTY_ID = "UA-XXXX-XX"; 

    /** 
    * Enum used to identify the tracker that needs to be used for tracking. 
    * 
    * A single tracker is usually enough for most purposes. In case you do need multiple trackers, 
    * storing them all in Application object helps ensure that they are created only once per 
    * application instance. 
    */ 
    public enum TrackerName { 
     APP_TRACKER, 
     GLOBAL_TRACKER, 
    } 

    HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>(); 

    synchronized Tracker getTracker(TrackerName trackerId) { 
     if (!mTrackers.containsKey(trackerId)) { 

      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
      Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID) 
        : analytics.newTracker(R.xml.app_tracker); 
      mTrackers.put(trackerId, t); 

     } 
     return mTrackers.get(trackerId); 
    } 

    synchronized public Tracker getDefaultTracker() 
    { 
     if (mTracker == null) 
     { 
      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
      mTracker = analytics.newTracker(R.xml.global_tracker); 
     } 
     return mTracker; 
    } 
} 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.prakhar.myapplication" > 

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

    <application 
     android:name="com.example.prakhar.myapplication.AnalyticsApplication" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <!-- Used for Google Play Store Campaign Measurement--> 

     <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" /> 
    </application> 
</manifest> 

app_tracker.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer name="ga_sessionTimeout">300</integer> 
    <bool name="ga_autoActivityTracking">true</bool> 
    <string name="ga_trackingId">UA-XXXXXX </string> 
    <string name="ga_sampleFrequency">100.0</string> 
    <bool name="ga_reportUncaughtExceptions">true</bool> 
</resources> 

本质上,我应该尽快安装应用程序,但不会发生这种情况。我哪里错了?我以错误的方式测试它吗?

最初我得到ClassCastException,但我通过在android清单中包含名称来解决问题。

回答

1

我不确定,但在网页上,当您安装分析时,您必须等待大约半天才能开始工作。

+0

我昨天在应用程序上安装了它,我从早上9点开始工作,目前是4点,这还不够? –

+0

我真的不知道,等到明天。 –

+0

我在看这个,你没有app_traker.xml对不对? http://stackoverflow.com/questions/25658269/google-analytics-tracker-not-working-for-android-app –

相关问题