add gs
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
local AnalyticsService = game:GetService("AnalyticsService")
|
||||
local RunService = game:GetService("RunService")
|
||||
local UserInputService = game:GetService("UserInputService")
|
||||
|
||||
local SETTINGS_HUB_INVITE_RELEASE_STREAM_TIME = tonumber(settings():GetFVariable("SettingsHubInviteReleaseStreamTime"))
|
||||
or math.huge
|
||||
|
||||
local function getPlatformTarget()
|
||||
local platformTarget = "unknownLua"
|
||||
local platformEnum = Enum.Platform.None
|
||||
|
||||
-- the call to GetPlatform is wrapped in a pcall() because the Testing Service
|
||||
-- executes the scripts in the wrong authorization level
|
||||
pcall(function()
|
||||
platformEnum = UserInputService:GetPlatform()
|
||||
end)
|
||||
|
||||
-- bucket the platform based on consumer platform
|
||||
local isDesktopClient = (platformEnum == Enum.Platform.Windows) or (platformEnum == Enum.Platform.OSX)
|
||||
|
||||
local isMobileClient = (platformEnum == Enum.Platform.IOS) or (platformEnum == Enum.Platform.Android)
|
||||
isMobileClient = isMobileClient or (platformEnum == Enum.Platform.UWP)
|
||||
|
||||
local isConsole = (platformEnum == Enum.Platform.XBox360) or (platformEnum == Enum.Platform.XBoxOne)
|
||||
isConsole = isConsole or (platformEnum == Enum.Platform.PS3) or (platformEnum == Enum.Platform.PS4)
|
||||
isConsole = isConsole or (platformEnum == Enum.Platform.WiiU)
|
||||
|
||||
-- assign a target based on the form factor
|
||||
if isDesktopClient then
|
||||
platformTarget = "client"
|
||||
elseif isMobileClient then
|
||||
platformTarget = "mobile"
|
||||
elseif isConsole then
|
||||
platformTarget = "console"
|
||||
else
|
||||
-- if we don't have a name for the form factor, report it here so that we can eventually track it down
|
||||
platformTarget = platformTarget .. tostring(platformEnum)
|
||||
end
|
||||
|
||||
return platformTarget
|
||||
end
|
||||
|
||||
local EventStream = {}
|
||||
EventStream.__index = EventStream
|
||||
|
||||
function EventStream.new(overridePlatformTarget, overrideAnalyticsImpl)
|
||||
local self = {}
|
||||
setmetatable(self, EventStream)
|
||||
|
||||
self._analyticsImpl = overrideAnalyticsImpl or AnalyticsService
|
||||
self._platformTarget = overridePlatformTarget or getPlatformTarget()
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function EventStream:setRBXEventStream(eventContext, eventName, additionalArgs)
|
||||
additionalArgs = additionalArgs or {}
|
||||
-- this function sends reports to the server in batches, not real-time
|
||||
self._analyticsImpl:SetRBXEventStream(self._platformTarget, eventContext, eventName, additionalArgs)
|
||||
|
||||
if not self.timerSteppedConnection then
|
||||
local lastGameTime = time()
|
||||
self.timerSteppedConnection = RunService.Stepped:Connect(function(gameTime)
|
||||
if gameTime - lastGameTime > SETTINGS_HUB_INVITE_RELEASE_STREAM_TIME then
|
||||
self:releaseRBXEventStream()
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function EventStream:releaseRBXEventStream()
|
||||
self._analyticsImpl:ReleaseRBXEventStream(self._platformTarget)
|
||||
if self.timerSteppedConnection then
|
||||
self.timerSteppedConnection:Disconnect()
|
||||
self.timerSteppedConnection = nil
|
||||
end
|
||||
end
|
||||
|
||||
return EventStream
|
||||
Reference in New Issue
Block a user