微信小游戏 SDK 使用指南
本指南将会为您介绍如何使用微信小游戏SDK接入您的项目,建议在接入开始前,先阅读数据规则一章,在了解TA数据规则后再进行接入。
最新版本为:1.1.1
更新时间为:2019-06-06
微信小游戏 SDK已停止后续开发,项目转移至小程序\小游戏 SDK,本文档仅供老版本的用户进行参考
1. 引入微信小游戏SDK
1.下载微信小游戏 SDK
2.解压压缩包,并把thinkingdata.js
置入您的项目中
3.在程序最开始(如game.js
中)引入小程序SDK
require('thinkingdata.js');
4.初始化SDK
var appid = APPID;
var server_url = APPURL;
GameGlobal.tgasdk.init(appid, server_url);
appid
是您的项目的APP_ID,在您申请项目时会给出server_url
为上传数据的URL
如果您使用的是云服务,请输入以下URL:
https://receiver.ta.thinkingdata.cn
如果您使用的是私有化部署的版本,由于微信的服务器域名中不能出现端口号,因此需要您自行配制域名,绑定TA私有化服务器。
3. 设置用户ID
在SDK载入完成之后,SDK将会自动生成一个ID作为每个用户的默认访客ID,该ID将会作为用户在未登录状态下的身份识别,如果您希望以微信的openid作为用户标识,可使用authorizeOpenID
设置。如果您的用户存在账号ID,请使用login
设置用户的账号ID。
a) 传入OpenID
如果您希望以微信的openid作为用户标识,则可以使用以下方法将openid作为用户标识:
//传入值为openid
GameGlobal.tgasdk.authorizeOpenID('authorizeOpenID');
需要注意以下几点:
- 设置后的OpenID将会被设置为访客ID
#distinct_id
,如果使用login
传入账号ID,则根据用户识别规则,会优先以账号ID为准 - 如果需要传入OpenID,请在上传数据之前调用本方法,以免出现重复计算用户的现象
b) 设置账号ID
在用户产生登录行为时,可调用login
来设置用户的账号ID。TA平台优先以账号ID作为身份标识,设置后的账号ID将会被保存,多次调用login
将会覆盖先前的账号ID:
//用户的登录唯一标识,此数据对应上报数据里的#account_id,此时"#account_id"的值为"ABC_123456"
GameGlobal.tgasdk.login("ABC_123456");
//再次调用login调整账号ID,此时"#account_id"的值为"XYZ_987654"
GameGlobal.tgasdk.login("XYZ_987654");
请注意,该方法不会上传用户登录的事件
c) 清除账号ID
在用户产生登出行为之后,可调用logout
来清除账号ID,在下次调用login
之前,将会以访客ID作为身份识别ID:
//去除上报数据里的#account_id,之后的数据将不带有"#account_id"
GameGlobal.tgasdk.logout();
请注意,该方法不会上传用户登出的事件
3. 发送事件
您可以直接调用track
上传自定义事件,建议您根据先前梳理的文档来设置事件的属性以及发送信息的条件,此处以玩家购买道具作为范例:
GameGlobal.tgasdk.track(
'ShopBuy', //追踪事件的名称
{
Item:'药水',
ItemNum:1,
MoneyType:10001,
Cost:100
} //需要上传的事件属性
);
track
接口共有两个参数,第一个参数为事件的名称,第二个参数为事件的属性- 事件的名称是字符串,只能以字母开头,可包含数字,字母和下划线“_”,长度最大为50个字符,对字母大小写不敏感。
- 事件的属性是对象类型,即以
name : value
的形式表示,每个元素代表一个属性。 - 元素的name对应属性的名称,规定只能以字母开头,包含数字,字母和下划线“_”,长度最大为50个字符,对字母大小写不敏感。
- 元素的value为该属性的值,支持
String
、Number
、Boolean
和Date
。
微信小游戏SDK将会在小游戏启动时,获取场景值,如果能取到场景值,则在本次小游戏的生命周期中,所有事件都会带有#scene
场景值这一属性。
4. 用户属性
a) 设置用户属性(userSet
)
对于一般的用户属性,您可以调用userSet
来进行设置,使用该接口上传的属性将会覆盖原有的属性值,如果之前不存在该用户属性,则会新建该用户属性
//设置用户属性
GameGlobal.tgasdk.userSet({level:15});
与上传事件时的事件属性一致,此处传入的用户属性也是对象类型,name对应属性的名称,规定只能以字母开头,包含数字,字母和下划线“_”,长度最大为50个字符,对字母大小写不敏感,value为该属性的值,支持String
、Number
、Boolean
和Date
。
b) 初始化用户属性(userSetOnce
)
如果您要上传的用户属性只要设置一次,则可以调用userSetOnce
来进行设置,当该属性之前已经有值的时候,将会忽略这条信息。
//以设置用户名为例,如果用户名已设置,则忽略本次设置,如果不存在,则设置为传入值
GameGlobal.tgasdk.userSetOnce({UserName:'TGA'});
与上传事件时的事件属性一致,此处传入的用户属性也是对象类型,name对应属性的名称,规定只能以字母开头,包含数字,字母和下划线“_”,长度最大为50个字符,对字母大小写不敏感,value为该属性的值,支持String
、Number
、Boolean
和Date
。
c) 累加用户属性(userAdd
)
当您要上传数值型的属性时,您可以调用userAdd
来对该属性进行累加操作,如果该属性还未被设置,则会赋值0后再进行计算
//以升级为例,用户每次升级时调用此接口,则'level'字段每次会做加1的处理
GameGlobal.tgasdk.userAdd({level:1});
与上传事件时的事件属性一致,此处传入的用户属性也是对象类型,name对应属性的名称,规定只能以字母开头,包含数字,字母和下划线“_”,长度最大为50个字符,对字母大小写不敏感,value为该属性需要累加的值,只支持Number
类型,传入负数相当于做减法。
d) 删除用户(userDel
)
如果您要删除某个用户,可以调用userDel
将这名用户删除,您将无法再查询该名用户的用户属性,但该用户产生的事件仍然可以被查询到
GameGlobal.tgasdk.userDel();
5. 相关预置属性
5.1 所有事件带有的预置属性
以下预置属性,是微信小游戏 SDK中所有事件(包括自动采集事件)都会带有的预置属性
属性名 | 中文名 | 说明 |
---|---|---|
#ip | IP地址 | 用户的IP地址,TA将以此获取用户的地理位置信息 |
#country | 国家 | 用户所在国家,根据IP地址生成 |
#country_code | 国家代码 | 用户所在国家的国家代码(ISO 3166-1 alpha-2,即两位大写英文字母),根据IP地址生成 |
#province | 省份 | 用户所在省份,根据IP地址生成 |
#city | 城市 | 用户所在城市,根据IP地址生成 |
#device_model | 设备型号 | 用户设备的型号,如iPhone 8等 |
#screen_height | 屏幕高度 | 用户设备的屏幕高度,如1920等 |
#screen_width | 屏幕宽度 | 用户设备的屏幕高度,如1080等 |
#os_version | 操作系统版本 | iOS 11.2.2、Android 8.0.0等 |
#manufacturer | 设备制造商 | 用户设备的制造商,如Apple,vivo等 |
#os | 操作系统 | 如Android、iOS等 |
#network_type | 网络状态 | 上传事件时的网络状态,如WIFI、3G、4G等 |
#lib | SDK类型 | 您接入SDK的类型,如Android,iOS等 |
#lib_version | SDK版本 | 您接入SDK的版本 |
#scene | 场景值 | 微信小游戏启动时传入的场景值 |