如果您对asp.net–没有Javascript的GoogleAnalytics和没有javascriptresources感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解asp.net–没有J
如果您对asp.net – 没有Javascript的Google Analytics和没有javascriptresources感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解asp.net – 没有Javascript的Google Analytics的各种细节,并对没有javascriptresources进行深入的分析,此外还有关于2.5.3、Google Analytics高级应用——Google Sheet的应用、asp.net – Google协议缓冲区或.net / javascript类似的东西、asp.net-mvc – 基于Microsoft.AspNet.Identity角色的Google Analytics、com.google.android.gms.analytics.GoogleAnalytics的实例源码的实用技巧。
本文目录一览:- asp.net – 没有Javascript的Google Analytics(没有javascriptresources)
- 2.5.3、Google Analytics高级应用——Google Sheet的应用
- asp.net – Google协议缓冲区或.net / javascript类似的东西
- asp.net-mvc – 基于Microsoft.AspNet.Identity角色的Google Analytics
- com.google.android.gms.analytics.GoogleAnalytics的实例源码
asp.net – 没有Javascript的Google Analytics(没有javascriptresources)
我们有一些我们想要使用GA跟踪的RSS源,但出于显而易见的原因,我们不能不使用Javascript.
这是一个ASP.Net站点.
解决方法
Google Analytics for Mobile
2.5.3、Google Analytics高级应用——Google Sheet的应用
Google Sheet是Google于2006年推出的,是一个在线表格编辑工具。Google Sheet可让您随时随地创建、编辑和与他人协作处理表格,而且完全免费!利用Google Sheet还可以实现很多复杂功能,如代码编辑,管理第三方数据,定时任务等,在这里我主要讲解Google Sheet如何与GA结合,如何应用和提高分析效率。
通过Google Sheet里面的第三方插件GA,Google Sheet可以与GA打通,可以直接在Google Sheet上对数据做处理和分析,使用Google Sheet有以下几个好处:
- 能导出更多的数据记录GA里面最多是指可以导出5000条记录,在Google Sheet里面没有限制。
- 低门槛:完全基于表格操作,不需要代码基础。
- 自动:可以设置定时任务,让Google sheet自动跑数据。
- 可以多人协作,免费等。
接下来看看Google Sheet怎么用?
1.Google Sheet部署
1、进入Google Drive,可以看到如图2-78所示的界面:
图2-78 Google Drive界面
2、在Google Sheet中选择“新建”→“ Google Sheet表格”新建一个表格,会看到一个跟Excel基本一样的界面,如图2-79所示。
图2-79 Google Sheet界面
3、加载GA插件
在Google Sheet中选择“插件”→“获取插件”,然后输入Google Analytics,可以看如图2-80所示中第一个插件就是我们想要的,单击安装即可:
图2-80 获取Google Analytics插件
安装后单击插件,可以看到就有Google Analytics的选项了,如图2-81所示:
图2-81 验证插件是安装成功
这个就表明,Google Analytics插件在Google Sheet上安装成功了。
2.Google Sheet的使用
Google Sheet的使用是需要先做一些配置,然后才运行的模式,下面介绍如何对Google Sheet做配置。
1、单击Google Sheet中选择“插件”→“Google Analytics”,可以看到图2-82所示:
图2-82 Google Analytics插件的功能
Google Analytics插件的字段解析如下表2-20所列:
表2-20 插件功能解析
在这里我们选择Create new report,如果是首次使用会需要Google Sheet授权GA的访问权限。
2、选择“Create new report”看到右侧有如图2-83所示的界面:
图2-83 Google Sheet配置界面1
这个就是配置的主要仪表盘了,在这里只是简要的一个选项而已,但配置后还会可以有更多的设置选项,各个字段具体意义再下一步再做介绍。
3、单击“Create Report”后可以看到如图2-84所示,这个是一个详细的配置界面,主要的配置工作还是在这里进行的
图2-84 Google Sheet配置界面2
可以看到比上一步的仪表盘多了不少信息,如起止时间,过滤器,细分,排序,抽样等设置,基本上GA有的都可以再这里面设置了,各个字段具体意义如表2-21所列:
表2-21 Google Sheet各参数解析
在使用的过程中,最重要的是过滤器的用法,因为这个是我们筛选所需维度的数据有数据的方法。过滤的用法,维度对应的过滤条件运算符有六种,如表2-22所列,指标对应的过滤条件运算符也有六种,如表2-23所列。运算符必须经过网址编码,才能纳入网址查询字符串。
表2-22 指标过滤条件用法
表2-23 维度过滤条件用法
在使用过滤器的时候,有时候需要有多个条件,可能是或(OR)的关系,也可能是且(AND)的关系:OR 运算符使用英文逗号“,”,AND 运算符使用英文分号“;” 进行定义。而维度和指标里面有多个的时候用逗号隔开即可。
OR 运算符使用英文分号 (,) 进行定义
示例:(均须经过网址编码)
国家/地区为(“United States”或 [OR]“Canada”): ga:country==United%20States,ga:country==Canada
(“Windows”或 [OR]“Macintosh”)操作系统上的 Firefox 用户: ga:browser==Firefox;ga:operatingSystem==Windows,ga:operatingSystem==Macintosh
AND 运算符使用英文分号 (;) 进行定义
示例:(均须经过网址编码)
国家地区为“United States”并且 (AND) 浏览器为 Firefox: ga:country==United%20States;ga:browser==Firefox
国家/地区为“United States”并且 (AND) 语言不以“en”开头: ga:country==United%20States;ga:language!~^en.*
操作系统为(“Windows”或 [OR]“Macintosh”),并且 (AND) 浏览器为(“Firefox”或 [OR]“Chrome”): ga:operatingSystem==Windows,ga:operatingSystem==Macintosh;ga:browser==Firefox,ga:browser==Chrome
国家地区为“United States”并且 (AND) 会话数大于 5: ga:country==United%20States;ga:sesions>5
4、配置好后,单击“插件”→“Google Analytics”→“Run Reports”就可以跑出数据。
3.Google Sheet的综合应用
通过前面一节已经知道Google Sheet如何获取GA数据和计算的,如果要对复杂的情景做分析的话,这种方法效率是不高的,如果涉及比较多的原始数据的时候,通常采用的做法是将第一个的配置复制多个,对其多调整,这里需要注意,每个report Name都需要是不同的,如图2-85所示:
图2-85 多Report情况
这样一运行报告,所有的数据都出来了,如图2-86所示。
图2-86 多Report数据结果
接下来就是在Google Sheet上对数据做处理就,设计好模板就可以了,以后跑数据的时候就会自动填充,得到最后的数据结果。
4.导出超过10000条记录
如果按照前面配置的话,能导出来的最多只有10000条记录,要导出更多的数据的话,需要对配置做一些Start Index和Max Result做一些设置才行,默认的数是每个列,也就生成的每一个sheet最多的记录都是10000,可以分段导出即可,具体设置如图2-87所示,假设这次到导出的数据有20000行, 第一类是从0到10000,第二列是10001到20000,也是10000行,运行报告后就会生成两个sheet,分别以后10000行,在将两个合并,就是所有的数据。要导出更多的数据,以此类推就是。
图2-87导出超过10000条记录
asp.net – Google协议缓冲区或.net / javascript类似的东西
到目前为止,我们已经在运行服务器上运行时看到了最常见的.net版本 – “protobuf-net”.我们没有太多运气反序列化客户端.我们尝试使用似乎是唯一的javascript反序列化程序protobuf.js.我们发现它不容易使用,只有很少的示例或文档,它似乎不处理字符串和整数以外的数据类型.
在这一点上,似乎有一个经过验证的,定义明确的解决方案,用于.net和Web客户端之间的二进制数据序列化/反序列化.也许我们错过了一些明显的东西
我们的要求是来自客户端的Ajax调用,以及服务器上的.net Web服务方法(.asmx或WCF).
任何意见和建议表示赞赏.
解决方法
One problem with javascript and
protobuf is that you need a lot of
support code to parse the messages.
Unless you end up sending quite a lot
of stuff back and forth,making the
user download a JS protobuf codec
library may be a net loss. It may be
better to use JSON or XML because
browsers already have built-in
support for those.That said,I think
varIoUs people inside google have been
playing with javascript + protocol
buffers for awhile and if we end up
with anything that works well enough,
we’ll release it.
所以也许有希望在路上.现在我会坚持使用json deflate,或者如果您的场景允许,您可以使用嵌入客户端的Silverlight applet? protobuf-net将在Silverlight中运行.
asp.net-mvc – 基于Microsoft.AspNet.Identity角色的Google Analytics
我没有找到任何允许这样做的东西.
就像是:
if(User.IsInRole("public")) { <script> (function (i,s,o,g,r,a,m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () { (i[r].q = i[r].q || []).push(arguments) },i[r].l = 1 * new Date(); a = s.createElement(o),m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create','PUBLIC','auto'); ga('send','pageview'); </script> } else if (User.IsInRole("private")) { <script> (function (i,'PRIVATE','pageview'); </script> }
解决方法
你需要setup这个功能.然后你可以像这样开始跟踪:
ga('create','UA-XXXXXX-Y',{'userId': customUserId});
您可以检测到的匿名用户
User.Identity.IsAuthenticated
您希望向匿名用户发送您不具有0的用户标识.
com.google.android.gms.analytics.GoogleAnalytics的实例源码
/** * Initialize the analytics tracker in use by the application. This should only be called * once,when the TOS is signed. The {@code applicationContext} parameter MUST be the * application context or an object leak Could occur. */ private static synchronized void initializeAnalyticsTracker(Context applicationContext) { sAppContext = applicationContext; if (mTracker == null) { int useProfile; if (BuildConfig.DEBUG) { LOGD(TAG,"Analytics manager using DEBUG ANALYTICS PROFILE."); useProfile = R.xml.analytics_debug; } else { useProfile = R.xml.analytics_release; } try { mTracker = GoogleAnalytics.getInstance(applicationContext).newTracker(useProfile); } catch (Exception e) { // If anything goes wrong,force an opt-out of tracking. It's better to accidentally // protect privacy than accidentally collect data. setAnalyticsEnabled(false); } } }
/** * Allows to turn on/off sharing statistics ability. */ private void toggleShareStatistics() { if(mShareStatsCheckBox == null) { return; } boolean shareStatistics = mShareStatsCheckBox.isChecked(); if(shareStatistics) { GoogleAnalytics.getInstance(this).reportActivityStart(this); } else { GoogleAnalytics.getInstance(this).reportActivityStop(this); } mPrefs.edit().putBoolean(getString(R.string.prefs_share_stats_status),shareStatistics).apply(); logi("shareStatistics = " + shareStatistics); GoogleAnalyticsManager.getInstance().setShareStatistic(shareStatistics); GoogleAnalyticsManager.getInstance(). sendStatSharing(HomeActivity.class.getSimpleName(),shareStatistics); }
/** * Initialize the analytics tracker in use by the application. This should only be called * once,force an opt-out of tracking. It's better to accidentally // protect privacy than accidentally collect data. setAnalyticsEnabled(false); } } }
public static void initGATracker(DroidplannerApp app) { if (sAppTracker == null) { final Context context = app.getApplicationContext(); final GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); // Call is needed for Now to allow dispatching of auto activity // reports // (http://stackoverflow.com/a/23256722/1088814) analytics.enableAutoActivityReports(app); analytics.setAppOptOut(!new DroidplannerPrefs(context).isUsageStatisticsEnabled()); // If we're in debug mode,set log level to verbose. if (BuildConfig.DEBUG) { analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE); } sAppTracker = analytics.newTracker(R.xml.google_analytics_tracker); } }
private void initGoogleAnalytics() { analytics = GoogleAnalytics.getInstance(this); if(BuildConfig.DEBUG) { // true = for log output,it does not sent data to Google Analytics analytics.setDryRun(true); // To enable debug logging on a device run: // adb shell setprop log.tag.GAv4 DEBUG // adb logcat -s GAv4 // true = disable Google Analytics on the app // analytics.setAppOptOut(true); } tracker = analytics.newTracker(getString(R.string.ga_trackingId)); tracker.enableExceptionReporting(true); tracker.enableAdvertisingIdCollection(true); tracker.enableAutoActivityTracking(false); }
/** * Gets the Google Analytics tracker. * * @return the Google Analytics tracker. */ private Tracker getTracker() { if (mTracker == null) { int checkExistence = mContext.getResources().getIdentifier("global_tracker","xml",mContext.getPackageName()); if (checkExistence == 0) { Log.e(AnalyticsManager.class.getCanonicalName(),"Please check if you have global-services.json"); } else { mTracker = GoogleAnalytics.getInstance(mContext).newTracker(checkExistence); mTracker.enableAutoActivityTracking(false); mTracker.enableAdvertisingIdCollection(false); mTracker.enableExceptionReporting(false); } } return mTracker; }
public synchronized Tracker get(Target target) { if (!mTrackers.containsKey(target)) { Tracker tracker; switch (target) { case APP: tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker); tracker.enableAdvertisingIdCollection(true); break; default: throw new IllegalArgumentException("Unhandled analytics target " + target); } mTrackers.put(target,tracker); } return mTrackers.get(target); }
public static void initGATracker(DroidplannerApp app) { if (sAppTracker == null) { final Context context = app.getApplicationContext(); final GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); // Call is needed for Now to allow dispatching of auto activity reports // (http://stackoverflow.com/a/23256722/1088814) analytics.enableAutoActivityReports(app); analytics.setAppOptOut(!DroidplannerPrefs.getInstance(context).isUsageStatisticsEnabled()); // If we're in debug mode,set log level to verbose. if (BuildConfig.DEBUG) { analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE); } sAppTracker = analytics.newTracker(R.xml.google_analytics_tracker); } }
/** * Initialize the analytics tracker in use by the application. This should only be called * once,force an opt-out of tracking. It's better to accidentally // protect privacy than accidentally collect data. setAnalyticsEnabled(false); } } }
public static void initGATracker(DroidplannerApp app) { if (sAppTracker == null) { final Context context = app.getApplicationContext(); final GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); // Call is needed for Now to allow dispatching of auto activity reports // (http://stackoverflow.com/a/23256722/1088814) analytics.enableAutoActivityReports(app); analytics.setAppOptOut(!new DroidplannerPrefs(context).isUsageStatisticsEnabled()); // If we're in debug mode,set log level to verbose. if (BuildConfig.DEBUG) { analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE); } sAppTracker = analytics.newTracker(R.xml.google_analytics_tracker); } }
synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // Чтобы включить ведение журнала отладки,используйте adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker("global_tracker"); } return mTracker; }
public synchronized Tracker get(Target target) { if (!mTrackers.containsKey(target)) { Tracker tracker; switch (target) { case APP: tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker); break; default: throw new IllegalArgumentException("Unhandled analytics target " + target); } mTrackers.put(target,tracker); } return mTrackers.get(target); }
synchronized static Tracker getGATracker(Context context) { if (tracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); tracker = analytics.newTracker(R.xml.ga_app_tracker); } return tracker; }
public void init(final Context context){ if (tracker==null) { if (context==null){ throw new IllegalArgumentException("No context set."); } // Create new tracker final GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE); tracker = analytics.newTracker(R.xml.analytics); } }
synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.app_tracker); } return mTracker; }
synchronized private Tracker getDefaultTracker(Context context) { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); mTracker = analytics.newTracker(mGaConfigLocation); } return mTracker; }
public synchronized Tracker getTracker(TrackerName trackerId) { if (!mTrackers.containsKey(trackerId)) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); Tracker t = analytics.newTracker(R.xml.global_tracker); mTrackers.put(trackerId,t); } return mTrackers.get(trackerId); }
/** * Gets the default {@link Tracker} for this {@link Application}. * @return tracker */ synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.global_tracker); } return mTracker; }
/** * Enables or disables Analytics. * @param enableAnalytics Whether analytics should be enabled. */ private static void setAnalyticsEnabled(boolean enableAnalytics) { GoogleAnalytics instance = GoogleAnalytics.getInstance(sAppContext); if (instance != null) { instance.setAppOptOut(!enableAnalytics); LOGD(TAG,"Analytics enabled: " + enableAnalytics); } }
public synchronized Tracker get(Target target) { if (!mTrackers.containsKey(target)) { Tracker tracker; switch (target) { case APP: tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker); break; default: throw new IllegalArgumentException("Unhandled analytics target " + target); } mTrackers.put(target,tracker); } return mTrackers.get(target); }
synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(mContext); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.app_tracker); } return mTracker; }
public synchronized Tracker getTracker() { if (gaTracker != null) return gaTracker; GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); analytics.setAppOptOut(isDebuggable); if (isDebuggable) analytics.getLogger().setLogLevel(LogLevel.VERBOSE); gaTracker = analytics.newTracker(ApiObjects.analytics .get("property_id")); gaTracker.enableAdvertisingIdCollection(true); gaTracker.setSessionTimeout(-1); return gaTracker; }
synchronized public void track(String s) { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.global_tracker); } mTracker.setScreenName(s); mTracker.send(new HitBuilders.Screenviewbuilder().build()); }
public void event(String s) { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.global_tracker); } mTracker.send(new HitBuilders.EventBuilder() .setCategory("Action") .setAction(s) .build()); }
/** * Gets the default {@link Tracker} for this {@link Application}. * @return tracker */ synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); mTracker = analytics.newTracker(R.xml.global_tracker); mTracker.enableAdvertisingIdCollection(true); } return mTracker; }
public synchronized Tracker get(Target target) { if (!mTrackers.containsKey(target)) { Tracker tracker; switch (target) { case APP: tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker); break; default: throw new IllegalArgumentException("Unhandled analytics target " + target); } mTrackers.put(target,tracker); } return mTrackers.get(target); }
public void trackScreenView(String screenName) { Tracker t = getGoogleAnalyticsTracker(); // Set screen name. t.setScreenName(screenName); // Send a screen view. t.send(new HitBuilders.Screenviewbuilder().build()); GoogleAnalytics.getInstance(this).dispatchLocalHits(); }
public synchronized Tracker get(Target target) { if (!mTrackers.containsKey(target)) { Tracker tracker; switch (target) { case APP: tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker); break; default: throw new IllegalArgumentException("Unhandled analytics target " + target); } mTrackers.put(target,tracker); } return mTrackers.get(target); }
public synchronized Tracker get(Target target) { if (!mTrackers.containsKey(target)) { Tracker tracker; switch (target) { case APP: tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker); break; default: throw new IllegalArgumentException("Unhandled analytics target " + target); } mTrackers.put(target,tracker); } return mTrackers.get(target); }
/** * Gets the default {@link Tracker} for this {@link Application}. * @return tracker */ synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.global_tracker); } return mTracker; }
private void initGoogleAnalytics() { analytics = GoogleAnalytics.getInstance(this); analytics.setLocaldispatchPeriod(1800); tracker = analytics.newTracker("UA-106256858-1"); // Replace with actual tracker id tracker.enableExceptionReporting(true); tracker.enableAdvertisingIdCollection(true); tracker.enableAutoActivityTracking(true); }
/** * Gets the default {@link Tracker} for this {@link Application}. * * @return tracker */ public synchronized Tracker getDefaultGATracker() { if (mGTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); mGTracker = analytics.newTracker(R.xml.global_tracker); mGTracker.enableAdvertisingIdCollection(true); mGTracker.enableExceptionReporting(true); } return mGTracker; }
@Override public void enableAppender(Context context) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); //This can be configured via XML or code. Since we need to maintain this code on the lib,it must // be via xml (dummy file) that will ne replaced by the apps real file // examples of both configurations are available: https://developers.google.com/analytics/devguides/collection/android/v4/advanced mTracker = analytics.newTracker(mConfigurationFileId); }
public void init(Context context,boolean optOut) { GoogleAnalytics ga = GoogleAnalytics.getInstance(context); ga.setAppOptOut(optOut); if (!optOut) { // Initializing the Google Analytics this.mTracker = ga.newTracker(R.xml.app_tracker); // Initializing the mixpanelapi analytics this.mMixpanelAPI = MixpanelAPI.getInstance(context,"0f9f5280a4fb76478215544e42fa1299"); } }
/** * Gets the default {@link Tracker} for this {@link Application}. * @return tracker */ synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.global_tracker); } return mTracker; }
synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.global_tracker); mTracker.enableAutoActivityTracking(true); mTracker.enableExceptionReporting(true); } return mTracker; }
GoogleAnalyticsHelper(Context context,boolean enable,GoogleAnalyticsServiceIdentifier serviceIdentifier) throws AnalyticsInstantiationException { super(context,enable,serviceIdentifier); enabled = enable; if (enable && tracker == null) { tracker = GoogleAnalytics.getInstance(context).newTracker(serviceIdentifier.getTrackingId()); } }
synchronized Tracker getTracker() { TrackerName trackerId = TrackerName.APP_TRACKER; if (!mTrackers.containsKey(trackerId)) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); Tracker t = analytics.newTracker("UA-55342416-1"); mTrackers.put(trackerId,t); } return mTrackers.get(trackerId); }
/** * Gets the default {@link Tracker} for this {@link Application}. * @return tracker */ synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); mTracker = analytics.newTracker(R.xml.app_tracker); } return mTracker; }
@Override public void onCreate() { sInstance = this; super.onCreate(); MultiDex.install(this); GoogleAnalytics analytics = GoogleAnalytics.getInstance(getApplicationContext()); mTracker = analytics.newTracker(R.xml.global_tracker); mAppComponent = DaggerAppComponent.builder() .appModule(new AppModule(this)) .build(); HockeyAppUtils.checkForCrashes(this); }
关于asp.net – 没有Javascript的Google Analytics和没有javascriptresources的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于2.5.3、Google Analytics高级应用——Google Sheet的应用、asp.net – Google协议缓冲区或.net / javascript类似的东西、asp.net-mvc – 基于Microsoft.AspNet.Identity角色的Google Analytics、com.google.android.gms.analytics.GoogleAnalytics的实例源码等相关知识的信息别忘了在本站进行查找喔。
本文标签: