比如业务有账号体系,并希望SDK同步用户状态。就可以考虑在用户登录后立即对SDK设置user_unique_id,在用户登出后立即对SDK清除user_unique_id。
说明
提示:用户登录态概念是站在业务角度的一个说法,SDK本身是没有用户登录/登出概念的,SDK只关心user_unique_id是否有被主动设置。
import $$sdk from '@datarangers/sdk-quick'; $$sdk.init({ // ... }); $$sdk.send(); // 用户登录后立即设置user_unique_id $$sdk.config({ user_unique_id: '{{uuid}}', // 值可以考虑为能关联到用户的一些属性 }); // 用户登出后立即清除user_unique_id $$sdk.config({ user_unique_id: '', });
SDK会为您自动生成web_id、ssid,如果您希望获取SDK默认生成的这些id,可参考以下方式。
获取web_id
import $$sdk from '@datarangers/sdk-quick'; $$sdk.init({ // ... }); $$sdk.send(); $$sdk.on($$sdk.types.Ready, () => { const webid = $$sdk.getConfig('web_id'); console.log('web_id', webid); });
获取ssid
注意:获取ssid时,实际需要调用getToken获取到ssid,该方法会发起请求去DataFinder的数据流服务中获取ssid,ssid不在SDK侧进行管理。
import $$sdk from '@datarangers/sdk-quick'; $$sdk.init({ // ... }); $$sdk.send(); $$sdk.getToken().then((ids) => { const ssid = ids.ssid; console.log('ssid', ssid); });
使用config方法可以设置公共属性,这些公共属性会在后续所有事件上报都携带上。
import $$sdk from '@datarangers/sdk-quick'; $$sdk.init({ // ... }); $$sdk.send(); // 设置事件公共属性,这些公共属性会在后续所有事件上报时都携带上 $$sdk.config({ city: '南京', nick_name: 'vikings', });
SDK内部预设了一些公共属性字段,这些字段预定义好了字段名,如下表所列,其中部分字段,SDK在初始化完成后会自动尝试获取,而其他字段需要业务方设置,比如nick_name
、gender
、avatar_url
这些SDK无法自动获取到的,就需要您主动进行设置。
字段 | 类型 | 说明 | 是否自动设置 | 举例 |
---|---|---|---|---|
device_brand | string | 设备品牌 | 自动 | "iPhone" |
device_model | string | 设备型号 | 自动 | "iPhone 7" |
os_name | string | 客户端系统 | 自动 | "ios" |
os_version | string | 客户端/操作系统版本 | 自动 | "iOS 10.0.1" |
screen_width | number | 屏幕宽度 | 自动 | 375 |
screen_height | number | 屏幕高度 | 自动 | 812 |
resolution | string | 屏幕分辨率 | 自动 | "375x812" |
access | string | 网络类型 | 自动 | "wifi" |
language | string | 系统语言 | 自动 | "zh_CN" |
device_id | number | 设备id | 业务方设置 | 67834512 |
nick_name | string | 昵称 | 业务方设置 | "张三" |
gender | string | 性别 | 业务方设置 | "male" |
avatar_url | string | 头像 | 业务方设置 | "https://xxx" |
timezone | number | 时区 | 业务方设置 | 8 |
tz_offset | number | 时区偏移 | 业务方设置 | -28800 |
使用多实例,需要导入SDK类,即SDK构造器,位于SDK包中的esm目录下的sdk文件。
import SDK from '@datarangers/sdk-quick/esm/sdk';
提示,如下方式导入的是SDK的默认实例,非SDK构造器。注意观察导入的文件是不一样的。
import $$sdk from '@datarangers/sdk-quick';
示例:
import SDK from '@datarangers/sdk-quick/esm/sdk'; // 对构造器使用new操作产生实例1 $$sdk1 = new SDK(); $$sdk1.init({ app_id: 1, // ... }); $$sdk1.send(); // 对构造器使用new操作产生实例2 $$sdk2 = new SDK(); $$sdk2.init({ app_id: 2, // app_id不能与其他实例相同 // ... }); $$sdk2.send();
说明
提示:
SDK默认导出的实例包含了尽可能多的插件功能。使用自定义选择插件后,比起默认导出的实例在构建后的体积上会少一些。如果业务希望自定义选择使用哪些插件,可以考虑如下使用方式。
// 导入基础类 import BaseSDK from '@datarangers/sdk-quick/esm/base'; // 导入所需插件,比如AB实验插件 import Ab from '@datarangers/sdk-quick/esm/plugin/ab'; BaseSDK.usePlugin(Ab); // 实例化SDK const $$sdk = new BaseSDK(); $$sdk.init({ app_id: 1, // 替换成申请的app_id enable_ab_test: true,//开启ab实验 }); $$sdk.send();
说明
提示:import $$sdk from '@datarangers/sdk-quick'
,$$sdk
是默认生成的一个实例。import SDK from '@datarangers/sdk-quick/esm/sdk'
,SDK
是类构造器,包含几乎全部功能,上面的$$sdk
本质上就是执行new SDK()
。import BaseSDK from '@datarangers/sdk-quick/esm/base'
,BaseSDK
也是类构造器,包含最基本功能,其他一些功能需要配合相应插件才可以,插件需要使用usePlugin
进行注册。上面SDK
相比BaseSDK
本质上就是默认注册了几乎大部分插件。
SDK默认会尝试从快应用启动参数上获取utm相关参数:utm_source
、utm_medium
、utm_campaign
、utm_term
、utm_content
。如果获取到了,就将这些参数放入事件公共属性中,后续所有事件上报时都会携带上。该能力自动开启,业务不需要做任何处理。
如果业务项目由于一些原因不支持使用npm包、或第三方依赖、甚至没有构建打包处理过程,可以考虑使用SDK提供的umd模块文件。
const $$sdk = require('{{相对路径}}/index.umd.js'); $$sdk.init({ // ... }); $$sdk.send();