通过单例模式获取全局可用的对象,如下:
let sugo = Sugo.mainInstance()
当需要把自定义事件发送到服务器时,可在相应位置调用以下API
open func track(eventID: String? = nil, eventName: String?, properties: Properties? = nil)
示例如下(根据使用需求调用):
Sugo.mainInstance().track(eventName: "EventName")
Sugo.mainInstance().track(eventName: "EventName", properties: ["key1": "value1", "key2": "value2"])
Sugo.mainInstance().track(eventID: "EventId", eventName: "EventName") //eventId可为空
Sugo.mainInstance().track(eventID: "EventId", eventName: "EventName", properties: ["key1": "value1", "key2": "value2"]) //eventId可为空
当需要对时间进行跟踪统计时,可在开始跟踪的位置调用
open func time(event: String)
示例如下:
Sugo.mainInstance().time(event: "TimeEventName")
然后,在完成跟踪的位置调用3.2.1
中的方法即可,需要注意的是eventName
需要与开始时的一样,示例如下:
Sugo.mainInstance().track(eventName: "TimeEventName")
如果在创建时间跟踪后,在发送前想要更新,再次以相同的时间事件名调用创建时的API即可,SDK会把相同事件名的记录时间进行刷新。
如果希望清除所有时间跟踪事件,可以通过调用
open func clearTimedEvents()
示例如下:
Sugo.mainInstance().clearTimedEvents()
当每一个事件都需要记录相同的属性时,可以选择使用全局属性(全局属性仅允许String
类型作为key值,value值则需要符合SugoType
类型,而SugoType
类型包括String
, Int
, UInt
, Double
, Float
, Bool
, [SugoType]
, [String: SugoType]
, Date
, URL
, 和NSNull
),
通过调用
open func registerSuperPropertiesOnce(_ properties: Properties, defaultValue: SugoType? = nil)
open func registerSuperProperties(_ properties: Properties)
示例如下:
Sugo.mainInstance().registerSuperPropertiesOnce(["key": "value"]) // 此方法不会覆盖当前已有的全局属性
Sugo.mainInstance().registerSuperProperties(["key": "value"]) // 此方法会覆盖当前已有的全局属性
当需要获取已注册的全局属性时,可以调用
open func currentSuperProperties() -> [String: Any]
示例如下:
Sugo.mainInstance().currentSuperProperties()
当需要注销某一全局属性时,可以调用
open func unregisterSuperProperty(_ propertyName: String)
示例如下:
Sugo.mainInstance().unregisterSuperProperty("key")
当需要清除所有全局属性时,可以调用
open func clearSuperProperties()
示例如下:
Sugo.mainInstance().clearSuperProperties()
当需要跟踪用户首次登录用户账户时,可调用
open func trackFirstLogin(with id: String, dimension: String)
示例如下(其中dimension
参数为用户已自定义的维度名):
Sugo.mainInstance().trackFirstLogin(with: "userId", dimension: "userIdDimension")
当需要在WebView(UIWebView或WKWebView)中进行代码埋点时,在页面加载完毕后,可调用以下API(是3.2.1
与3.2.2
同名方法在JavaScript中的接口,实现机制相同)进行JavaScript内容的代码埋点
sugo.track(event_id, event_name, props); // 准备把自定义事件发送到服务器时
sugo.timeEvent(event_name); // 在开始统计时长的时候调用
当需要在Weex(Vue)中进行代码埋点时,可调用以下API(是3.2.1
与3.2.2
同名方法在Weex中的接口,实现机制相同)进行JavaScript的代码埋点
let sugo = weex.requireModule('sugo');
sugo.track(event_name, props); // 准备把自定义事件发送到服务器时
sugo.timeEvent(event_name); // 在开始统计时长的时候调用