主题
TypeScript SDK 
一、SDK 引用 
把 YXDataSDK-ts-202411011.zip 解压得到文件引入项目工程
typescript
import YXDataSDK from "./YXDataSDK";二、初始化 SDK 
typescript
let init_configs = {
  game_id: 10033, // 游戏ID
  channel: "10033(oppo)", // 渠道号
  device_id: "30b0104da60f401a4b7e38b6c333cec8", // 设备号(32位唯一字符串)
  device_model: "vivo X20Plus", // 设备型号
  scene: 1096, // 场景值,微信小游戏启动时传入的场景值
  network_type: "WIFI", // 网络状态,如 WIFI、3G、4G 等
  manufacturer: "vivo", // 用户设备的制造商,如 Apple,vivo 等
  app_version: "1.0.2", // APP的版本(游戏客户端版本号)
  install_time: "2022-08-30 15:02:40", // 用户安装应用的时间,值来源于系统
  ram: "1.2/4", // 用户设备的当前剩余内存和总内存,单位GB,如 1.4/2.4
  disk: "30/200", // 用户设备的当前剩余存储空间和总存储空间,单位GB,如 30/200
  simulator: 0, // 设备是否是模拟器 true=1/false=0
  screen_height: 2160, // 屏幕高度
  screen_width: 1080, // 屏幕宽度
  os: "iOS", // 操作系统,如 Android、iOS 等
  os_version: "iOS 16.4.1", // 操作系统版本,iOS 11.2.2、Android 8.0.0 等
};
YXDataSDK.init(init_configs); //数据上报sdk初始化| 参数名 | 类型 | 是否必传 | 描述 | 
|---|---|---|---|
| game_id | number | 项目游戏 ID(YXData平台申请) | |
| channel | string | 渠道 ID | |
| device_id | string | 设备 ID | |
| device_model | string | 否 | 设备型号;比如 iPhone8 | 
| scene | string | 否 | 场景值,微信小游戏启动时传入的场景值 | 
| network_type | string | 否 | 事件发生是的网络状态,如 WIFI、3G、4G 等 | 
| manufacturer | string | 否 | 用户设备的制造商,如 Apple,vivo 等 | 
| app_version | string | 否 | APP 的版本 | 
| install_time | string | 否 | 用户安装应用的时间,值来源于系统 | 
| ram | string | 否 | 用户设备的当前剩余内存和总内存,单位 GB,如 1.4/2.4 | 
| disk | string | 否 | 用户设备的当前剩余存储空间和总存储空间,单位 GB,如 30/200 | 
| simulator | number | 否 | 设备是否是模拟器 true=1/false=0 | 
| screen_height | number | 否 | 设备高度 | 
| screen_width | number | 否 | 设备宽度 | 
| os | string | 否 | 设备操作系统,如 Android、iOS 等 | 
| os_version | string | 否 | 操作系统版本,iOS 11.2.2、Android 8.0.0 等 | 
| report_server | number | 否 | 上报服务器类型(0 默认值、0=正式服、1=测试服) | 
危险
详细信息
报错 1 
YXDataSDK init game_id is error! game_id ### 向平台申请 game_id
报错 2 
YXDataSDK init channel is error! channel ### channel 为必报参数
报错 3 
YXDataSDK init device_id is error! device_id ### device_id 为必报参数
报错 4 
YXDataSDK init device_model is error! device_model ### device_model 为必报参数
三、常用功能 
3.1、设置账号 ID 
在用户产生登录行为时,可调用 login 来设置用户的账号 ID. YXData 平台优先以账号 ID 作为身份标识,设置后的账号 ID 将会被保存,多次调用 login 将会覆盖先前的账号 ID.
示例:
typescript
// 用户的登录唯一标识,此数据对应上报数据里的 ys_account_id,此时ys_account_id的值为YXData
YXDataSDK.login({ account_id: "YXData" });3.2、设置公共事件属性 
信息
公共事件属性指的就是每个事件都会带有的属性,您可以调用 setSuperProperties 来设置公共事件属性,我们推荐您在发送事件前,先设置公共事件属性。对于一些重要的属性,譬如用户的会员等级等,这些属性需要设置在每个事件中,此时您可以将这些属性设置为公共事件属性。
1、如果调用 setSuperProperties 上传了先前已设置过的公共事件属性,则会覆盖之前的属性 
 2、Key 为该属性的名称,为字符串类型,规定只能以字母开头包含(数字/字母/下划线 "_"),长度最大为 50 个字符
 3、Value 为该属性的值,支持字符串、数字、布尔、对象、对象组、数组
示例:
typescript
var superProperties = {
  str: "str", //字符串
  age: 1, //数字
  isSuccess: true, //布尔
  object: { key: "value" }, //对象
  object_arr: [{ key: "value" }], //对象组
  arr: ["value"], //数组
};
YXDataSDK.setSuperProperties(superProperties); //设置公共事件属性3.3、发送事件 
信息
在 SDK 初始化完成之后,您就可以进行数据埋点,收集用户的的行为信息。一般情况下普通事件即可满足业务场景需求,您也可以根据自己的实际业务场景使用首次、可更新等事件 事件的名称(event_name)是字符串类型,只能以字母开头,可包含数字,字母和下划线 "*",长度最大为 50 个字符。
 自定义属性(properties)是 json 对象类型,对象里面的属性值支持字符串、数字、布尔、对象、对象组、数组 类型
3.3.1、普通事件 
您可以直接调用 eventReport 上传自定义事件,建议您根据先前梳理的埋点文档来设置事件的属性以及发送信息的条件,此处以用户选择服务器作为范例:
typescript
var data_json = {
  event_name: "select_server", //事件名称
  properties: {
    guid: 1000, //自定义属性,选择的大区ID
  },
};
YXDataSDK.eventReport(data_json);3.3.2、首次事件 
首次事件是指针对某个设备或者其他维度的 ID,只会记录一次的事件。例如在一些场景下,您可能希望记录在某个设备上的激活事件,则可以用首次事件来上报数据。示例如下:
typescript
YXDataSDK.eventFirst({
  event_name: "active_event", //首次事件名称
});提示
3.3.3、启动事件 
启动事件需在用户开启 APP,或从后台唤醒 APP 时触发,示例如下:
typescript
YXDataSDK.eventReport({
    event_name: "yxdata_app_start", //启动事件名称
    properties:{
        resume_from_background:false
    }
});属性resume_from_background,布尔型,表示 APP 是用户开启还是从后台唤醒,取值为 true 表示从后台唤醒,false 为直接开启
3.3.4、关闭事件 
关闭事件需在用户关闭 APP,或将 APP 调至后台时触发,示例如下:
typescript
YXDataSDK.eventReport({
    event_name: "yxdata_app_end", //关闭事件名称
    properties:{
        duration:300
    }
});属性duration,数值型,表示该次 APP 访问(自启动至结束)的时长,单位是秒。
3.4、设置用户属性及修改属性值 
警告
注意点 1 
用户属性和事件上报一样,上报之前必须初始化
注意点 2 
用户属性是一种特殊的事件,后台会根据事件名称识别
注意点 3 
用户属性是用户具有节点意义的属性,记录用户属性状态值,不建议在短时间内进行频繁修改,对于需要频繁变更的属性,建议放在事件中作为事件属性
3.4.1、设置增加用户属性 
typescript
var set_json = {
  param_name: "amount", //用户属性名称(允许字符:英文字母及下划线)
  param_type: 1, //属性类型(1=数值、2=字符串、4=布尔、5=列表、6=浮点数、7=对象、8=对象组)
  param_value: "100", //属性值(字符串)
};
YXDataSDK.setAccountProperty(set_json);3.4.2、修改用户属性值 
typescript
var change_json = {
  param_name: "amount", //需属性名称
  param_value: "10", //修改属性的值
};
YXDataSDK.changeAccountProperty(change_json);3.4.3、设置用户属性(有值存在忽略操作) 
typescript
var set_json = {
  param_name: "amount", //用户属性名称(允许字符:英文字母及下划线)
  param_type: 1, //属性类型(1=数值、2=字符串、4=布尔、5=列表、6=浮点数、7=对象、8=对象组)
  param_value: "100", //属性值(字符串)
};
YXDataSDK.setAccountOnce(set_json);对用户属性进行操作,如果该属性已有值存在,则忽略本次操作
四、最佳实践 
typescript
import YXDataSDK from "./YXDataSDK";
let init_configs = {
  game_id: 10033, //游戏ID  |数值
  channel: "10033(oppo)", //渠道号  |字符串
  device_id: "30b0104da60f401a4b7e38b6c333cec8", //设备号(32位唯一字符串)  |字符串
  device_model: "vivo X20Plus", //设备型号  |字符串
  scene: 1096, //场景值,微信小游戏启动时传入的场景值  |字符串
  network_type: "WIFI", //网络状态,如 WIFI、3G、4G 等  |字符串
  manufacturer: "vivo", //用户设备的制造商,如 Apple,vivo 等  |字符串
  app_version: "1.0.2", //APP的版本(游戏客户端版本号)  |字符串
  install_time: "2022-08-30 15:02:40", //户安装应用的时间,值来源于系统  |字符串
  ram: "1.2/4", //用户设备的当前剩余内存和总内存,单位GB,如 1.4/2.4  |字符串
  disk: "30/200", //用户设备的当前剩余存储空间和总存储空间,单位GB,如 30/200  |字符串
  simulator: 0, //设备是否是模拟器 true=1/false=0  |字符串
  screen_height: 2160, //屏幕高度  |字符串
  screen_width: 1080, //屏幕宽度  |字符串
  os: "iOS", //操作系统,如 Android、iOS 等  |字符串
  os_version: "iOS 16.4.1", //操作系统版本,iOS 11.2.2、Android 8.0.0 等  |字符串
  report_server: 1, //上报服务器类型(0默认值、0=正式服、1=测试服、2=海外正式服)  |字符串
};
YXDataSDK.init(init_configs); //数据上报sdk初始化
//如果用户已登录,可以设置用户的账号ID唯一标识
YXDataSDK.login({ account_id: "YXData" });
//设置公共事件属性
var superProperties = {
  str: "str", //字符串
  age: 1, //数字
  isSuccess: true, //布尔
  object: { key: "value" }, //对象
  object_arr: [{ key: "value" }], //对象组
  arr: ["value"], //数组
};
YXDataSDK.setSuperProperties(superProperties); //设置公共事件属性
//发送事件
YXDataSDK.eventReport({
  event_name: "select_server", //事件名称
  properties: {
    guid: 1000, //自定义属性,选择的大区ID
  },
});
//设置用户属性
YXDataSDK.setAccountProperty({
  param_name: "username", //用户属性名称(允许字符:英文字母及下划线)
  param_type: 2, //属性类型
  param_value: "YXDatats", //属性值(字符串)
});