Google Analytics 是个很棒的数据统计服务,但无奈没有 Mac OS X SDK ...
MacGoogleAnalytics 就是为了弥补这一缺憾而诞生的 开源库
核心的原理就是,在网络上部署一个 html 文件,在 OS X 模拟打开这一网页,并将要统计的数据信息以参数的形式传递。最终, html 文件将这些数据发送给 Google Analytics.
最简单的,只要集成 2 个 Swift 文件。
更新一个文件中的配置信息,如 Google Analytics id 、 app 名称、版本、等。
在程序启动、结束时,相应地启动 Google Analytics.
func applicationDidFinishLaunching(aNotification: NSNotification) {
GAHelper.startGoogleAnalytics()
}
func applicationWillTerminate(notification: NSNotification) {
GAHelper.stopGoogleAnalytics()
}
之后,就可以这样发送 Event.
GA.sendEvent("menu", event: "click", label: "rate")
来个效果图:
必须能。 我的这几个 App 都已经上架了:
那就去 这里 瞧瞧吧,感兴趣点个赞,能帮到忙不妨请我喝杯咖啡 :)
1
honeycomb 2016-05-18 07:45:54 +08:00 via Android
ga 一般是屏蔽掉的
|
2
quietjosen OP |
3
Slienc7 2016-05-18 08:31:57 +08:00
|
4
aliuwr 2016-05-18 08:54:22 +08:00 via Android 1
ga 是有提供 HTTP 接口的…
|
5
quietjosen OP @Slienc7 专家啊;一般丢失一部分 GA 数据,还是不影响整体的判断;谁让 GA 实在太好用了,国内的统计服务实在差太多。
|
6
quietjosen OP @aliuwr 有心基于 API 级别进行适配,但这相当于自己写个 Google Analytics SDK ,这轮子大了点,还是讨巧的实现比较容易。
|
7
aliuwr 2016-05-18 09:22:10 +08:00
@quietjosen 我之前写的就实现了两个 API ( view/event),也就不到 200 行,加上发送队列的逻辑不到 300 。
你的这个方案看起来要加载浏览器引擎。。。资源和效率我都没法接受。。。 |
8
quietjosen OP |
9
typcn 2016-05-18 09:33:14 +08:00
GA 就发个 HTTP 请求。。。。 10 行代码就能实现
|
10
quietjosen OP @typcn 是吗?求科普,能贴出来共赏吗?
|
11
haranhuang 2016-05-18 09:37:12 +08:00
你这个是采集 MAC 软件的信息的?
|
12
quietjosen OP @haranhuang 严格的说,不是。不是采集 MAC 信息,而是在 Mac 上运行的 App 的一些信息,比如名称、版本、启动次数、等等。也就是 Google Analytics 匿名收集的基础数据。
|
13
crystone 2016-05-18 09:42:16 +08:00
想法不错,做好的话可以大销量啊
|
14
typcn 2016-05-18 09:45:42 +08:00 1
@quietjosen
NSString *POSTDATA = [NSString stringWithFormat:@"v=1&tid=网站 ID&cid=%@""&t=screenview&an=应用名&av=%@&aid=包名&cd=%s",启动生成一串随机 ID,ver,view]; NSURL* URL = [NSURL URLWithString:@"http://www.google-analytics.com/collect"]; NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:URL]; request.HTTPMethod = @"POST"; request.HTTPBody = [POSTDATA dataUsingEncoding:NSUTF8StringEncoding]; NSURLConnection* connection = [NSURLConnection connectionWithRequest:request delegate:nil]; [connection start]; 7 行,其实还可挤一挤 |
15
quietjosen OP @typcn 哦,你是说用 Measurement Protocol 对吧?我之前也简单看过,但觉得自己封装不同类型的数据麻烦,就搁置了,有时间再试试。
https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide 通过你上面的代码,能自动收集到操作系统、浏览器、位置、等数据吗?还是说这些基础数据也要自己封装? |
16
quietjosen OP @crystone “大销量”,目前是开源的哦,你想买吗?可以哦,哈哈
|
17
quietjosen OP @typcn 简单试了下你的代码,真是可以发送 event ,我再验证下其它的数据是不是自动收集的。
|
18
typcn 2016-05-18 10:34:40 +08:00
@quietjosen 位置是根据 IP 估计的,操作系统和浏览器的话拼装一个 UA 即可
|
19
quietjosen OP @typcn 好吧,明白了。具体到发送某一个数据(比如 event )是没什么问题,问题只是要自己封装所有感兴趣的数据,难度不大,就是繁琐些。
我刚才验证了下,位置是有的,但操作系统、浏览器、屏幕分辨率之类的数据都是没有的。 |
20
honeycomb 2016-05-18 10:53:59 +08:00 via Android
|
21
typcn 2016-05-18 10:59:21 +08:00
@quietjosen 这些都是一个 post 参数的事。。
|
22
quietjosen OP @honeycomb 这样子啊,没用 Evernote ,不知道还有这事。
|
23
quietjosen OP @typcn 恩,是的。有时间我再把常用的统计组装下,到时更新下这个库。感谢提醒 API 的事。
|