作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在我的应用中加入了谷歌分析。但是当我创建一个 Tracker
的对象时,跟踪器不起作用
我的一个 Activity 中的代码
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
try{
tracker=((GoogleAnalyticsConfig)this.getApplication()).getTracker(GoogleAnalyticsConfig.TrackerName.APP_TRACKER);
tracker.setScreenName("HomeActivity");
tracker.send(new HitBuilders.AppViewBuilder().build());
}catch(Exception ex)
{
ex.printStackTrace();
}
}
现在有了这段代码,我在实时跟踪中看不到该应用程序但是如果我用这个改变上面的代码
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
try{
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
analytics.reportActivityStart(this);
}catch(Exception ex)
{
ex.printStackTrace();
}
}
我可以看到一个用户在 Realtime 中处于 Activity 状态
GoogleAnalyticsConfig
的代码
public enum TrackerName {
APP_TRACKER, // Tracker used only in this app.
GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
}
HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
// The following line should be changed to include the correct property id.
private static final String PROPERTY_ID ="UA-XXXXXXXX-1";
public synchronized Tracker getTracker(TrackerName trackerId) {
if (!mTrackers.containsKey(trackerId)) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
Tracker t = analytics.newTracker(PROPERTY_ID);
t.enableAutoActivityTracking(true);
mTrackers.put(trackerId, t);
}
return mTrackers.get(trackerId);
}
谁能告诉我为什么跟踪器不起作用?不仅是实时的,而且在我包含跟踪器的所有屏幕中,即使在 48 小时后,它也没有显示在 Google Analytics 的“应用程序概述”部分中。
最佳答案
在 res 文件夹中创建 xml 文件夹,其中包含以下三个 xml 文件
app_tracker.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Replace placeholder ID with your tracking ID -->
<string name="ga_trackingId">XX-XXXXXXXX-X</string>
<bool name="ga_autoActivityTracking">true</bool>
<bool name="ga_reportUncaughtExceptions">true</bool>
<string name="ga_appName">Serivce</string>
<string name="ga_appVersion">1.1.3</string>
<bool name="ga_debug">true</bool>
<item name="ga_dispatchPeriod" format="integer" type="integer">120</item>
<string name="ga_sampleFrequency">90</string>
<bool name="ga_anonymizeIp">true</bool>
<bool name="ga_dryRun">false</bool>
<!-- Percentage of events to include in reports -->
<string name="ga_sampleFrequency">100.0</string>
<!-- How long a session exists before giving up -->
<integer name="ga_sessionTimeout">-1</integer>
<string name="com.example.ui.MainActivity">MainActivity</string>
ecommerce_tracker.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="ga_sessionTimeout">60</integer>
<!-- The following value should be replaced with correct property id. -->
<string name="ga_trackingId">XX-XXXXXXX-1</string>
</resources>
global_tracker.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- The following value should be replaced with correct property id. -->
<string name="ga_trackingId">XX-XXXXXXX-1</string>
<integer name="ga_sessionTimeout">300</integer>
<bool name="ga_autoActivityTracking">true</bool>
<!-- the Local LogLevel for Analytics -->
<string name="ga_logLevel">verbose</string>
<!-- how often the dispatcher should fire -->
<integer name="ga_dispatchPeriod">30</integer>
<!-- Treat events as test events and don't send to google -->
<bool name="ga_dryRun">false</bool>
<screenName name="com.example.ui.MainActivity">MainActivity</screenName>
创建java文件AnalyticsSampleApp.java 并在 menifest 中注册此文件,就像在带有 android:name="com.example.ui.AnalyticsSampleApp"的应用程序标签中一样
public class AnalyticsSampleApp extends Application {
// The following line should be changed to include the correct property id.
private static final String PROPERTY_ID = "XX-XXXXXX-1";
public static int GENERAL_TRACKER = 0;
public enum TrackerName {
APP_TRACKER, // Tracker used only in this app.
GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
}
public HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
public AnalyticsSampleApp() {
super();
}
public synchronized Tracker getTracker(TrackerName trackerId) {
if (!mTrackers.containsKey(trackerId)) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID): (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker): analytics.newTracker(R.xml.ecommerce_tracker);
mTrackers.put(trackerId, t);
}
return mTrackers.get(trackerId);
}
}
在MainActivity的onCreate中放在下面
Tracker t = ((AnalyticsSampleApp)this.getApplication()).getTracker(TrackerName.APP_TRACKER);
t.setScreenName(TAG);
t.send(new HitBuilders.AppViewBuilder().build());
关于android - Google Analytics Tracker 不适用于 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25658269/
我是一名优秀的程序员,十分优秀!