Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 71 additions & 54 deletions src/analytics.brs
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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")

Expand All @@ -75,63 +75,80 @@ 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

xfer = CreateObject("roURLTransfer")
xfer.SetURL(m.UATracker.endpoint+"?"+payload)
response = xfer.GetToString()
Function UA_trackEvent(EventCategory, EventAction, EventLabel = invalid, EventValue = invalid) as Void
params = {
t: "event",
ec: EventCategory,
ea: EventAction
}

If EventLabel <> invalid
params.el = EventLabel
end if
If EventValue <> invalid
params.ev = EventValue
end if

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
end if
Function UA_trackPageview(Pageview) as Void
params = {
t: "pageview",
dp: Pageview
}

xfer = CreateObject("roURLTransfer")
xfer.SetURL(m.UATracker.endpoint+"?"+payload)
response = xfer.GetToString()
UA_sendRequest(params)
End Function

Function UA_trackScreen(ScreenName) as Void
params = {
t: "screenview", '&t=screenview // Screenview hit type.
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 <> ""
payload = payload + "&"
end if
payload = payload + key + "=" + xfer.Escape(params[key])
end for

' bombs away
url = m.UATracker.endpoint + "?" + payload
xfer.SetURL(url)
print "UA_sendRequest: " + url
response = xfer.GetToString()
end Function