GrowingIO Web SDK将各种功能以插件的形式接入,具有更高的扩展性。在内部提供了如埋点,无埋点,hybrid打通,hybrid圈选,小程序打通,web圈选等插件。
具体插件功能简介如下
插件名:common-plugin
提供了动态配置和部分功能接口,如下。
setTrackerScheme(scheme: string): void;setTrackHost(host: string): void;enableDebug(debug: boolean): void;setDataCollect(dataCollect: boolean): void;setAutoTrack(enable: boolean): void;getVisitorId(): string;setUserId(userId: string): void;clearUserId(): void;
插件名:sequence-plugin
监听时机:onLoad,onComposeAfter
提供了全局事件和分类事件编号的能力。直接在合成的事件上添加globalSequenceId, eventSequenceId
两个字段。这两个字段一旦生成就会一直递增下去,除非主动清除对应的cookie值。
字段名 | 类型 | 说明 |
|
| 代表所有类型事件上报总数的计数 |
|
| 代表当前类型事件上报数的计数 |
插件名:custom-track-plugin
提供了埋点功能接口,如下。
track(eventId: string, variables: object[, item: object], callback: ValueFunction<Response>): void;setUserAttributes(properties: Properties, callback: ValueFunction<Response>): void;
插件名:action-track-plugin
监听时机:onLoad
也可以通过配置autotrack配置控制是否采集。提供无埋点能力,发送的事件包括VIEW_CLICK
, VIEW_CHANGE
, FORM_SUBMIT
。
插件名:spa-page-track-plugin
监听时机:onStart
提供了在单页应用中监听路由变化发送page的能力。
插件名:hybrid-support-plugin
监听时机:onLoad
该插件提供H5页面 Web JS SDK 采集的数据与APP 中 GIO SDK采集的数据打通能力,打通规则如下:
当Web JS SDK 与APP GIO SDK集成使用的 projectId 一致时,H5页面上采集的数据仅由 APP 中 GIO SDK 发送;
当Web JS SDK 与APP GIO SDK集成使用的 projectId 不一致时,H5页面上采集的数据同时由 Web JS SDK 和 APP 中 GIO SDK发送;
发送数据中 projectId, datasourceId, host 与 发送数据SDK 中的对应字段保持一致
如果集成的是 iOS SDK 3.0 ,无论是 无埋点SDK 还是 埋点SDK ,都不需要做任何设置,SDK 会自动注入桥接代码,实现数据打通
如果集成的是无埋点SDK, 不需要做设置,SDK 会自动注入桥接代码,实现数据打通;
如果集成的是埋点SDK,则需要设置桥接代码,实现数据打通:
GrowingTracker.get().bridgeWebView(webview)
相关配置:penetrateHybrid
默认为true。用于控制
转发事件时,是否转发LOGIN_USER_ATTRIBUTES事件
在projectId一致时,是否允许在hybrid中调用gdp('setUserId', xxx)
设置native app中的userId
插件名:embed-h5-plugin
监听时机:onLoad
该插件提供内嵌页 Web JS SDK 采集的数据与小程序 SDK 采集的数据打通能力。插件从url的search中获取来自小程序的gioInfo, 打通规则如下:
当满足“小程序 SDK 和内嵌页中Web JS SDK 的 projectId,appId 一致”条件时,可实现两边的数据打通,
当不满足“小程序 SDK 和内嵌页中Web JS SDK 的 projectId,appId 一致”条件时,无法实现两边数据打通
在打通后内嵌页中的setUserId将无效,只能使用从小程序继承来的登录用户ID。
若小程序中改变了userId,但内嵌页并没有更新,则内嵌页的数据将无最新userId,这里要注意!
针对在webview上的地址,需要补充gioInfo
相关字段,具体方式可参考如下
// page.jsconst gio = gioGlobal.gio;Page({data: {url: `https://www.growingio.com/?foo=1&${gio('getGioInfo')}`}});// page.wxml<view><web-view src="{{url}}"></web-view></view>
gio('getGioInfo')
返回一个如下形式的字符串:
giou=e83e8ea2-9604-4c55-882c-172925d0dc1f&gios=ea64c5a5-7163-4a1e-9887-3af9bd467c3b&giocs1=&giouserkey=&gioprojectid=pid11&gioappid=wx33&gioplatform=MinP&giodatasourceid=ds22
以上数据是小程序中传到内嵌页的数据
giou 是访问用户ID,gios 是 sessionID ,giocs1 是登录用户ID,giouserkey 是用户KEY,gioprojectid 是 projectId,gioappid 是 小程序appid,gioplatform 是应用平台,giodatasourceid 是 datasourceId;
在集成时使用和小程序相同的projectId和appid即可,如小程序的projectId为pid11,appid为wx33
gdp('init', 'pid11', 'ds22', 'wx33', {host: 'your apiServerHost',version: '1.0.0'});
当触发了打通规则后,h5内嵌页中发数时以下字段的变化如下:
deviceId: 使用小程序的deviceIdsessionId: 使用小程序的sessionIdgioId: 使用小程序的gioId (web版本:3.3.11,小程序版本:3.2.5)userId: 使用小程序的userIduserKey: 使用小程序的userKeydataSourceId: 使用小程序的dataSourceIdplatform: 使用小程序的platformdomain: 使用小程序的appId
插件名:web-circle-plugin
监听时机:onStart
提供了web注入web圈选脚本的能力。
插件名:hybrid-circle-plugin
监听时机:onStart
提供了在native app中直接获取hybrid页面可视区可圈选元素的能力。
插件名:marketing-plugin
监听时机:onLoad,onComposeAfter
向外暴露plugin
接口,用于弹窗sdk的接入。具体详见Web 弹窗 SDK 接入。