From ce12a78945f1eb6a087793b918e5e110db8f231c Mon Sep 17 00:00:00 2001 From: Sathya Sekaran Date: Thu, 24 Jul 2014 02:32:47 -0700 Subject: [PATCH 1/2] add screen tracking; refactor --- src/analytics.brs | 137 ++++++++++++++++++++++++++++------------------ 1 file changed, 84 insertions(+), 53 deletions(-) diff --git a/src/analytics.brs b/src/analytics.brs index ea84eba..62cfc58 100644 --- a/src/analytics.brs +++ b/src/analytics.brs @@ -32,7 +32,7 @@ Function GetRandomInt(length As Integer) As String Return hexString End Function -Function GetUserID() As String +Function GetUserID() sec = CreateObject("roRegistrySection", "analytics") if sec.Exists("UserID") return sec.Read("UserID") @@ -48,7 +48,7 @@ Function SetUserID() As String Return uuid End Function -Function UA_Init(AccountID as String) as Void +Function UA_Init(AccountID) as Void di = CreateObject("roDeviceInfo") m.UATracker = CreateObject("roAssociativeArray") @@ -75,63 +75,94 @@ Function UA_Init(AccountID as String) as Void m.UATracker.appName = "Test_APP" m.UATracker.appVersion = "b1" + m.UATracker.companyName = "CompanyName" m.UATracker.ratio = di.GetDisplayAspectRatio() - m.UATracker.endpoint = "http://www.analytics-debugger.com/universal/" - 'm.UATracker.endpoint = "http://www.google-analytics.com/collect?" + ' m.UATracker.endpoint = "http://requestb.in/1ikqvlt1" + m.UATracker.endpoint = "http://www.google-analytics.com/collect" End Function -Function UA_trackEvent(EventCat as String , EventAct as String , EventLab as String , EventVal as String) as Void - - payload = "z="+GetRandomInt(10) - payload = payload + "&v=1" - payload = payload + "&cid=" + m.UATracker.userID - payload = payload + "&tid=" + m.UATracker.AccountID - payload = payload + "&dimension1=" + m.UATracker.model - payload = payload + "&dimension2=" + m.UATracker.version - payload = payload + "&sr=" + m.UATracker.display - payload = payload + "&sd=" + m.UATracker.ratio - payload = payload + "&an=" + m.UATracker.appName - payload = payload + "&av=" + m.UATracker.appVersion - - payload = payload + "&t=event" - If Len(EventCat) > 0 - payload = payload + "&ec=" + EventCat - end if - If Len(EventAct) > 0 - payload = payload + "&ea=" + EventAct - end if - If Len(EventLab) > 0 - payload = payload + "&el=" + EventLab - end if - If Len(EventVal) > 0 - payload = payload + "&ev=" + EventVal - end if +Function UA_trackEvent(EventCat, EventAct, EventLab, EventVal) as Void + params = { + z: "" + GetRandomInt(10), + v: "1", + cid: m.UATracker.userID, + tid: m.UATracker.AccountID, + dimension1: m.UATracker.model, + dimension2: m.UATracker.version, + sr: m.UATracker.display, + sd: m.UATracker.ratio, + an: m.UATracker.appName, + av: m.UATracker.appVersion, + + t: "event" + } + + If EventCat <> invalid + params.ec = EventCat + end if + If EventAct <> invalid + params.ea = EventAct + end if + If EventLab <> invalid + params.el = EventLab + end if + If EventVal <> invalid + params.ev = EventVal + end if + + UA_sendRequest(params) +End Function - xfer = CreateObject("roURLTransfer") - xfer.SetURL(m.UATracker.endpoint+"?"+payload) - response = xfer.GetToString() +Function UA_trackPageview(Pageview) as Void + params = { + z: "" + GetRandomInt(10), + v: "1", + cid: m.UATracker.userID, + tid: m.UATracker.AccountID, + dimension1: m.UATracker.model, + dimension2: m.UATracker.version, + sr: m.UATracker.display, + sd: m.UATracker.ratio, + an: m.UATracker.appName, + av: m.UATracker.appVersion, + t: "pageview", + + dp: Pageview + } + + UA_sendRequest(params) End Function -Function UA_trackPageview(Pageview as String) as Void - - payload = "z="+GetRandomInt(10) - payload = payload + "&v=1" - payload = payload + "&cid=" + m.UATracker.userID - payload = payload + "&tid=" + m.UATracker.AccountID - payload = payload + "&dimension1=" + m.UATracker.model - payload = payload + "&dimension2=" + m.UATracker.version - payload = payload + "&sr=" + m.UATracker.display - payload = payload + "&sd=" + m.UATracker.ratio - payload = payload + "&an=" + m.UATracker.appName - payload = payload + "&av=" + m.UATracker.appVersion - payload = payload + "&t=pageview" - - If Len(Pageview) > 0 - payload = payload + "&dp=" + Pageview +Function UA_trackScreen(ScreenName) as Void + params = { + v: m.UATracker.appVersion, 'v=1 // Version. + tid: m.UATracker.AccountID, '&tid=UA-XXXX-Y // Tracking ID / Web property / Property ID. + cid: m.UATracker.userID, '&cid=555 // Anonymous Client ID. + + t: "screenview", '&t=screenview // Screenview hit type. + an: m.UATracker.appName, '&an=funTimes // App name. + av: m.UATracker.appVersion, '&av=4.2.0 // App version. + aid: "com." + m.UATracker.companyName + ".RokuApp", '&aid=com.foo.App // App Id. + aiid: "com.Roku.Store", '&aiid=com.android.vending // App Installer Id. + + cd: ScreenName ' &cd=Home // Screen name / content description. + } + + UA_sendRequest(params) +end Function + +Function UA_sendRequest(params) + xfer = CreateObject("roURLTransfer") + + payload = "" + for each key in params + if payload <> "" + payload = payload + "&" end if + payload = payload + key + "=" + xfer.Escape(params[key]) + end for - xfer = CreateObject("roURLTransfer") - xfer.SetURL(m.UATracker.endpoint+"?"+payload) - response = xfer.GetToString() -End Function + xfer.SetURL(m.UATracker.endpoint + "?" + payload) + response = xfer.GetToString() +end Function \ No newline at end of file From 1a8956a4bf787c577370fc68e5904316868e81d2 Mon Sep 17 00:00:00 2001 From: Sathya Sekaran Date: Thu, 24 Jul 2014 15:46:54 -0700 Subject: [PATCH 2/2] refactor more, fix events slightly --- src/analytics.brs | 70 +++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 42 deletions(-) diff --git a/src/analytics.brs b/src/analytics.brs index 62cfc58..632e406 100644 --- a/src/analytics.brs +++ b/src/analytics.brs @@ -82,33 +82,18 @@ Function UA_Init(AccountID) as Void m.UATracker.endpoint = "http://www.google-analytics.com/collect" End Function -Function UA_trackEvent(EventCat, EventAct, EventLab, EventVal) as Void +Function UA_trackEvent(EventCategory, EventAction, EventLabel = invalid, EventValue = invalid) as Void params = { - z: "" + GetRandomInt(10), - v: "1", - cid: m.UATracker.userID, - tid: m.UATracker.AccountID, - dimension1: m.UATracker.model, - dimension2: m.UATracker.version, - sr: m.UATracker.display, - sd: m.UATracker.ratio, - an: m.UATracker.appName, - av: m.UATracker.appVersion, - - t: "event" + t: "event", + ec: EventCategory, + ea: EventAction } - If EventCat <> invalid - params.ec = EventCat + If EventLabel <> invalid + params.el = EventLabel end if - If EventAct <> invalid - params.ea = EventAct - end if - If EventLab <> invalid - params.el = EventLab - end if - If EventVal <> invalid - params.ev = EventVal + If EventValue <> invalid + params.ev = EventValue end if UA_sendRequest(params) @@ -116,18 +101,7 @@ End Function Function UA_trackPageview(Pageview) as Void params = { - z: "" + GetRandomInt(10), - v: "1", - cid: m.UATracker.userID, - tid: m.UATracker.AccountID, - dimension1: m.UATracker.model, - dimension2: m.UATracker.version, - sr: m.UATracker.display, - sd: m.UATracker.ratio, - an: m.UATracker.appName, - av: m.UATracker.appVersion, t: "pageview", - dp: Pageview } @@ -136,25 +110,34 @@ End Function Function UA_trackScreen(ScreenName) as Void params = { - v: m.UATracker.appVersion, 'v=1 // Version. - tid: m.UATracker.AccountID, '&tid=UA-XXXX-Y // Tracking ID / Web property / Property ID. - cid: m.UATracker.userID, '&cid=555 // Anonymous Client ID. - t: "screenview", '&t=screenview // Screenview hit type. - an: m.UATracker.appName, '&an=funTimes // App name. - av: m.UATracker.appVersion, '&av=4.2.0 // App version. aid: "com." + m.UATracker.companyName + ".RokuApp", '&aid=com.foo.App // App Id. aiid: "com.Roku.Store", '&aiid=com.android.vending // App Installer Id. - cd: ScreenName ' &cd=Home // Screen name / content description. } + print "UA_trackScreen:" + print params + UA_sendRequest(params) end Function Function UA_sendRequest(params) xfer = CreateObject("roURLTransfer") + ' these parameters go out with every request + params.v = "1" 'v=1 // Version. + params.tid = m.UATracker.AccountID '&tid=UA-XXXX-Y // Tracking ID / Web property / Property ID. + params.cid = m.UATracker.userID '&cid=555 // Anonymous Client ID, UUID v4 format. + params.an = m.UATracker.appName + params.av = m.UATracker.appVersion + params.sr = m.UATracker.display + params.sd = m.UATracker.ratio + params.dimension1 = m.UATracker.model + params.dimension2 = m.UATracker.version + params.z = GetRandomInt(100) ' google recommends placing this last + + ' urlencode each parameter payload = "" for each key in params if payload <> "" @@ -163,6 +146,9 @@ Function UA_sendRequest(params) payload = payload + key + "=" + xfer.Escape(params[key]) end for - xfer.SetURL(m.UATracker.endpoint + "?" + payload) + ' bombs away + url = m.UATracker.endpoint + "?" + payload + xfer.SetURL(url) + print "UA_sendRequest: " + url response = xfer.GetToString() end Function \ No newline at end of file