请使用我们Unity原生小游戏SDK版本
https://help.solar-engine.com/cn/docs/kuai-su-ji-cheng-g881?preview=1
1、简介
热力引擎 ( SolarEngine ) 是面向移动开发者提供的帮助产品持续增长的一站式智能营销服务平台,在报表方面提供固定分析报表服务和高度自定义的数据分析服务,系统在数据埋点、属性设置、报表创建、看板配置等多方面都支持开发者按需求进行个性化配置。
本文档将针对 使用Unity 转微信小游戏的插件打包的微信小即将下线)游戏的数据上报进行说明,帮助您进行数据接入(不支持iOS和Android平台)。
隐私权政策:https://www.solar-engine.com/privacyPolicy.html
2、集成前的准备工作
在正式开始数据接入之前,需要提前准备一些接入过程中需要的参数、准备 SDK 包,下面说明如何获取这些信息。
2.1、获取 userCode
报送数据需要 userCode 及 Appkey,负责人账号管登录热力引擎系统系统后可自行查询。
userCode 查询路径:账户管理-账号信息-密钥-16 位 userId(即 user Code)。
2.2 获取Appkey
Appkey 查询路径:资产管理-应用管理-16位 Appkey(即应用 ID)。
2.3 获取SDK
-
Unity插件: SolarEngine_minigame_unity_1.0.7
-
原生JS插件:下载地址 【详见2.3获取SDK】
2.4 导入SDK
注意:
需要先接入微信团队开源的 Unity 转微信小游戏的插件。
1)前往最新SDK下载地址下载SDK压缩包,解压至本地目录。
2)将SolarEngine_minigame_unity_sdk_x.x.x.unitypackage,导入Unity中。
3)前往原生接入文档中下载miniwx-cn-sesdk-umd.js文件放入wechat-default文件夹下,wechat-default文件夹一般在WX-WASM-SDK-V2\Runtime\wechat-default
4)如接入腾讯小游戏广告SDK,参考腾讯小游戏广告SDK接入文档下载。将index.js放入
放入wechat-default文件夹下,wechat-default文件夹一般在WX-WASM-SDK-V2\Runtime\wechat-default
2.4.1 配置SDK
1)添加全局宏参数:SE_WG
添加步骤如下:
-
打开 Project Settings 界面;
- 找到
Scripting Define Symbols
,新增一行输入全局宏参数,然后点击 Apply 按钮完成设置
2) 向game.js文件添加代码
打开与miniwx-cn-sesdk-umd.js同级目录下的game.js文件,添加两句代码
需要先接入微信团队开源的 Unity 转微信小游戏的插件 才会有这个文件
// 加载腾讯小游戏广告SDK
import { SDK } from './index.js';
const SESDK = require('./miniwx-cn-sesdk-umd.js');
GameGlobal. SESDK = SESDK;
// 挂载腾讯小游戏广告SDK
GameGlobal.SDK=SDK;
位置如下:
3)团结引擎开发者需要勾选此处【仅团结引擎】
2.5 微信后台配置
- 获取APPID和AppSecret
登录微信公众平台,并进入首页。选择左侧导航中的“开发管理”,选择页面中的“开发设置”,在“开发者ID”中复制APPID(小程序ID)和AppSecret(小程序密钥)粘贴到SE后台创建应用。
微信后台截图:
SE后台截图:
- 服务器域名配置:
登录微信公众平台,并进入首页。选择左侧导航中的“开发管理”,选择页面中的“开发设置”,在“服务器域名”中的“request合法域名”里面填写 https://api-receiver.detailroi.com 和 https://rule.detailroi.com 进行配置,具体如下图所示:
- IP白名单配置:
登录微信公众平台,并进入首页。选择左侧导航中的“开发管理”,选择页面中的“开发设置”,在“开发者ID”中的“IP白名单”中:如未开启ip白名单保护,则不需要配置SE固定IP。如已开启ip白名单保护,则需要配置SE固定IP:71.132.0.102、52.81.1.45、52.54.188.146、34.196.30.48。
3、SDK集成
3.1、SDK初始化
SDK初始化之前,需要先进行预初始化, 调用prevInit方法,传入应用的 appKey。
// 预初始化
SESDKBridge.Instance.prevInit(appkey);
// 初始化
SESDKBridge.Instance.init(initParams);
initParams参数说明:
参数 |
类型 |
是否必填 |
说明 |
userId |
string |
是 |
账户的 userCode |
appKey |
string |
是 |
应用的 appKey |
openid |
string |
否 |
小游戏openid, 如不传则由SDK获取当前的openid(必须在SE后台应用管理中填写AppID和AppSecret;并前往微信后台进行配置,详见2.5微信后台配置配置) |
config |
InitConfig |
否 |
初始化相关的配置信息
|
初始化配置Config参数说明:
参数 |
类型 |
是否必填 |
说明 |
debugModel |
bool |
否 |
是否开启调试,默认false不开启 |
logEnabled |
bool |
否 |
是否控制台打印sdk日志,默认false不开启 |
isInitTencentAdvertisingGameSDK |
bool |
|
是否初始化腾讯小游戏广告SDK,默认false不开启 |
reportingToTencentSdk |
bool |
否 |
启动事件是否上报给腾讯,默认3。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
tencentAdvertisingGameSDKInitParams |
TencentSDKInitParams |
否 |
腾讯小游戏广告SDK初始化必需参数。 |
tencentSdkIsAutoTrack | bool | 否 | 腾讯SDK是否自动采集,默认true |
TencentSDKInitParams参数说明:
类型参数 | 类型 | 是否必填 | 说明 |
user_action_set_id | number | 是 | 数据源ID |
secret_key | string | 是 | 加密key |
appid | string | 是 | 微信小游戏APPID,wx开头 |
调用示例:
SESDKBridge.Instance.prevInit("appkey");
InitParams initParams = new InitParams();
initParams.userId = "userid";
initParams.appKey ="appkey";
initParams.openid = "openid";
InitConfig initConfig = new InitConfig();
initConfig.isInitTencentAdvertisingGameSDK = true;
initConfig.reportingToTencentSdk = 1;
TencentSDKInitParams tencentSDKInitParams = new TencentSDKInitParams();
tencentSDKInitParams.user_action_set_id =;
tencentSDKInitParams.secret_key = "";
tencentSDKInitParams.appid = "";
initConfig.tencentAdvertisingGameSDKInitParams = tencentSDKInitParams;
initConfig.logEnabled = true
initParams.config = initConfig
SESDKBridge.Instance.init(initParams);
由于SDK的初始化逻辑是异步进行的,如果业务场景中需要依赖SDK初始化完成之后的执行逻辑,可调用addInitReadyCallback方法。
SESDKBridge.Instance.addInitReadyCallback(ReadyCalllBack1);
void ReadyCalllBack1()
{
//需要执行的逻辑
//需要手动在方法中调用removeInitReadyCallback方法 移除此callback
SESDKBridge.Instance.removeInitReadyCallback(ReadyCalllBack1);
}
SDK初始化过程中,如需加载SDK插件,可调用abtestuse方法。
SESDKBridge.Instance.abtestuse();
3.2 访客ID
访客 ID 即 _visitor_id,是用户在设备上安装了应用之后,登录状态之前该用户的唯一标识。
我们提供访客 ID 自定义设置的接口,如果您有自己的访客管理体系需要替换访客 ID,应在 SDK 初始化之前进行设置。
数据上报时仅以最后一次传入的访客 ID 为准,应避免多次调用造成多个非正常访客 ID 先后上报数据的情况。
3.2.1 设置访客ID
调用 setVisitorId: 来设置访客 ID:
string visitorId = "your_visitor_id";
SESDKBridge.Instance.setVisitorId(visitorId);
注:
该调用仅为向 SDK 传入访客 ID,不会上报用户设置事件。
开发者设置的访客ID长度不能超过128个字符,否则会设置失败。
开发者设置后会存储在本地存储中。
3.2.2、获取访客 ID
如果您需要获取当前访客 ID,可以调用 getVisitorId 获取:
SESDKBridge.Instance.getVisitorId();
指用户在应用中登录之后,登录账号在应用中的唯一标识。登录之前将以访客 ID 作为用户标识。
在账户 ID 设置完成后,在调用 logout 清除账号 ID之前,设置的账号 ID 将一直保留,并作为用户身份识别 ID。清除账号 ID 的操作请在有真实退出登录状态行为时进行,关闭 App、退至后台运行时无需调用。
数据上报时仅以最后一次传入的账号 ID 为准,应避免多次调用造成多个非正常账号 ID 先后上报数据的情况。
3.3、账号 ID
3.3.1、设置账号 ID
调用 login 来设置用户的账号 ID:
string accountId = "your_account_id";
SESDKBridge.Instance.login(accountId);
注:
该调用仅为向 SDK 传入账号 ID,不会上报用户登录事件。
开发者设置的账号 ID 长度不能超过 128 个字符,否则会设置失败。
开发者设置后会存储在本地存储中。
3.3.2、获取账号 ID
调用 getAccountId 来获取用户的账号 ID:
SESDKBridge.Instance.getAccountId();
3.3.3、清除账号 ID
调用 logout 来清除账号 ID:
SESDKBridge.Instance.logout();
注:该调用仅为通知 SDK 清除账号 ID,不会上报用户登出事件。
3.4、设置公共事件属性
公共事件属性指的是每个事件都会带有的属性,对于一些重要的属性,如用户的来源渠道、转化的广告 ID 等,这些属性需要设置在每个事件中,这些属性可以被设置为公共事件属性。
公共事件属性设置的方法最好放在SDK的初始化方法之前,这样可以保证所有的上报事件中都能存在我们已经设置好的公共事件属性。
您可以调用 setSuperProperties 来设置公共事件属性,我们推荐您在发送事件前,先设置公共事件属性。
公共事件属性的格式要求与事件属性一致,见“事件上报-自定义属性要求”
Dictionary<string, object> properties = new Dictionary<string, object>
{
{ "propertySuper1", "value1" },
{ "propertySuper2", 2 }
};
SESDKBridge.Instance.setSuperProperties(properties);
如果您需要删除某个公共事件属性,可以调用 unsetSuperProperty 清除其中一个公共事件属性;
string propertyName = "propertySuper1";
SESDKBridge.Instance.unsetSuperProperty(propertyName);
如果您想要清空所有公共事件属性,则可以调用 clearSuperProperties。
SESDKBridge.Instance.clearSuperProperties();
注:
如果调用 setSuperProperties 上传了先前已设置过的公共事件属性,则会覆盖之前的属性。
如果公共事件属性和事件上报上传的某个属性的 key 重复,则该事件的属性会覆盖公共事件属性。
开发者设置后会存储在本地存储中。
3.5、设置预置事件属性
热力引擎 SDK 支持开发者对启动、安装、退出三个预置事件设置自定义属性,通过这些自定义属性,开发者可以更方便地统计和分析数据。
public void setPresetEvent(PresetEventType eventType,Dictionary<string,object>properties=null)
参数名称 |
参数含义 |
参数类型 |
是否必传 |
eventType |
预置事件枚举,具体如下:mpInstall(安装事件)、mpStart(启动事件)、mpEnd(退出事件)、all(全部预置事件,即包含安装、启动、退出事件) |
PresetEventType |
是 |
properties |
自定义属性 |
Dictionary<string, object> |
否 |
注:
-
设置预置事件自定义属性的方法必须在热力引擎SDK初始化之前设置,这样设置的属性会适用于所有后续SDK产生的预置事件,如果在SDK初始化之后再设置,在此之前产生的预置事件不会包含这些设置的自定义属性。
-
预置事件设置的自定义属性不会被缓存,每次设置都会覆盖前一次的设置,多次设置同一个预置事件只有最后一次生效。
-
如果设置了 eventType 的枚举为 all,会覆盖通过mpInstall、mpStart、mpEnd 这三种枚举设置的自定义属性,如果多次设置,只有最后一次生效。
-
给预置事件设置的自定义属性支持清空,可以调用对应的枚举清空,如下:SESDKBridge.Instance.setPresetEvent(PresetEventType.mpStart, null);上述方法可以用来清空启动事件的自定义属性,安装与退出事件只需更改对应的枚举值即可。
-
另外,热力引擎 SDK 也支持全局清除预置事件的自定义属性,如下:SESDKBridge.Instance.setPresetEvent(PresetEventType.all, null); 上述方法可以清空所有预置事件的自定义属性,通过 mpInstall、mpStart、mpEnd 这三种枚举设置的自定义属性会被一并清空。
调用示例:
Dictionary<string, object> properties = new Dictionary<string, object>
{
{ "Preset1", "1" },
{ "Preset2", 9.99 }
};
SESDKBridge.Instance.setPresetEvent(PresetEventType.all, properties);
3.6、设置其他上报属性
3.6.1、设置渠道名称
调用 setChannel 方法设置渠道名称_channel
string channel = "channel";
SESDKBridge.Instance.setChannel(channel);
3.6.2、设置小游戏来源页面title信息
调用 setReferrerTitle 方法设置来源页面title信息_referrer_title
string referrerTitle = "referrer_title";
SESDKBridge.Instance.setReferrerTitle(referrerTitle);
3.6.3、设置小游戏当前页面title信息
开发者调用 setXcxPageTitle 方法设置当前页面title信息_page_title
string xcxPageTitle = "xcx_page_title";
SESDKBridge.Instance.setXcxPageTitle(xcxPageTitle);
3.7、获取distinct_id和distinct_id_type
开发者调用getDistinct方法可获取到distinct_id和distinct_id_type。
SESDKBridge.Instance.getDistinct(Distinct);
void Distinct(Distinct distinct)
{
string distinct_id = distinct.distinct_id;
string distinct_id_type = distinct.distinct_id_type;
}
3.8、获取归因结果
3.8.1、设置监听归因结果回调
开发者设置监听归因结果回调。仅可调用一次。
SESDKBridge.Instance.setOnAttributionListener(result_set);
void result_set(string s)
{
Debug.Log("result_set: " + s);
}
3.8.2、主动获取归因结果
SESDKBridge.Instance.getAttribution(result_get);
void result_get(string s)
{
Debug.Log("result_get: " + s);
}
4、事件上报
在 SDK 初始化完成之后,就可以通过调用方法来进行数据的上报。
上报的数据主要分为以下 4 类:
-
预置事件:该类事件由 SDK 按规则自行触发上报,无需开发者调用。有确定的 _event_name ,如安装、启动、退出等事件。
-
预定义事件:该类事件已经在系统中明确定义了事件意义,有确定的 _event_name 。需要在对应的事件发生时,由开发者触发上报,如变现广告展示、应用内付费等。
-
自定义事件:即系统未明确定义意义的事件,开发者可按分析需要自行定义并埋点进行上报。
-
时长事件:需要记录某个事件的持续时长,用来进行相关的分析。
注:事件名支持大小写中英文、数字、下划线,长度不超过 40。
下面将对每种事件的上报规则进行一一说明。
4.1、预置事件
4.1.1、安装
每次安装后首次打开自动报送该事件。(删除小游戏后,再次打开小游戏时算一次安装)
安装事件的 _event_name 为 _mpInstall。
4.1.2、启动
每次打开小游戏、或小游戏从后台进入前台时,自动报送该事件。
启动事件的 _event_name 为 _mpStart。
4.1.3、退出
小游戏从前台进入后台时,自动报送该事件。
退出事件的 _event_name 为 _mpEnd。
4.2、预定义事件
4.2.1、变现广告展示事件
变现广告展示时,报送该事件,用于进行广告展示及变现收入分析
public void trackAdImpression(AdImpressionData data)
AdImpressionData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
adNetworkPlatform |
变现平台,前面为应传值,后面为平台名称csj:穿山甲国内版pangle:穿山甲国际版tencent:腾讯优量汇baidu:百度百青藤kuaishou:快手oppo:OPPOvivo:vivomi:小米huawei:华为applovin:Applovinsigmob:Sigmobmintegral:Mintegraloneway:OneWayvungle:Vunglefacebook:Facebookadmob:AdMobunity:UnityAdsis:IronSourceadtiming:AdTimingklein:游可赢fyber:Fyberchartboost:Chartboostadcolony:Adcolony |
string |
是 |
adType |
展示广告的类型1:激励视频2:开屏3:插屏4:全屏视频5:Banner6:信息流7:短视频信息流8:大横幅 9:视频贴片10:中等尺寸横幅0:其它 |
int |
是 |
adNetworkAppID |
变现平台的应用 ID |
string |
否 |
adId |
变现平台的变现广告位 ID |
string |
是 |
mediationPlatform |
聚合平台标识,常见聚合平台枚举如下,若您使用的聚合平台不在如下枚举值,您可以自定义命名,并控制字符数在32位。没有聚合平台标识,请设置为 "custom"。 max |
string |
是 |
ecpm |
广告ECPM(广告千次展现的变现收入,0或负值表示没传),单位:元 |
double |
是 |
currency |
展示收益的货币种类,遵循《ISO 4217国际标准》如 CNY、USD |
string |
是 |
rendered |
广告是否渲染成功,具体枚举值如下: 例如:成功时,只需要传入 true true:成功 false:失败 如果不需要统计该指标,请传 true |
bool |
是 |
customProperties
|
自定义属性,见“自定义属性要求”
|
Dictionary<string, object>
|
否
|
AdImpressionData adData = new AdImpressionData
{
adNetworkPlatform = "oppo",
adType = 1,
adNetworkAppID = "123",
adId = "123",
mediationPlatform = "custom",
ecpm = 13.140001f,
currency = "USD",
rendered = true,
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackAdImpression(adData);
4.2.2、变现广告点击事件
变现广告点击时,报送该事件,用于进行广告点击数据分析。
public void trackAdClick(AdClickData data)
AdClickData参数说明
参数名称 |
参数含义 |
参数类型 |
是否必传 |
adNetworkPlatform |
变现平台,前面为应传值,后面为平台名称csj:穿山甲国内版pangle:穿山甲国际版tencent:腾讯优量汇baidu:百度百青藤kuaishou:快手oppo:OPPOvivo:vivomi:小米huawei:华为applovin:Applovinsigmob:Sigmobmintegral:Mintegraloneway:OneWayvungle:Vunglefacebook:Facebookadmob:AdMobunity:UnityAdsis:IronSourceadtiming:AdTimingklein:游可赢fyber:Fyberchartboost:Chartboostadcolony:Adcolony |
string |
是 |
adType |
展示广告的类型,1:激励视频2:开屏3:插屏4:全屏视频5:Banner6:信息流7:短视频信息流8:大横幅9:视频贴片0:其它 |
int |
是 |
adId |
变现平台的变现广告位 ID |
string |
是 |
mediationPlatform |
聚合平台标识,常见聚合平台枚举如下,若您使用的聚合平台不在如下枚举值,您可以自定义命名,并控制字符数在32位。没有聚合平台标识,请设置为 "custom"。 max |
string |
是 |
customProperties |
自定义属性,见“自定义属性要求” |
Dictionary<string, object> |
否 |
调用示例:
AdClickData adData = new AdClickData
{
adNetworkPlatform = "oppo",
adType = 1,
adId = "123",
mediationPlatform = "custom",
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackAdClick(adData);
4.2.3、应用内购买事件
付费购买时,报送该事件,用于进行购买及内购收入分析。
public void trackIAP(IAPData data)
IAPData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
reportingToTencentSdk |
上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
int |
是 |
orderId |
本次购买由系统生成的订单 ID |
string |
否 |
payAmount |
本次购买支付的金额,单位:元 |
double |
是 |
currencyType |
支付的货币类型,遵循《ISO 4217国际标准》,如 CNY、USD |
string |
是 |
payType |
支付方式:如 alipay、weixin、applepay、paypal 等 |
string |
否 |
productID |
购买商品的ID |
string |
否 |
productName |
商品名称 |
string |
否 |
productCount |
购买商品的数量 |
int |
否 |
payStatus |
支付状态1:success成功2:fail失败3:restored恢复 |
int |
是 |
failReason |
支付失败的原因 |
string |
否 |
customProperties |
自定义属性,见“自定义属性要求” |
Dictionary<string, object> |
否 |
注:支付失败原因 failReason 参数仅在 payStatus 参数为 fail 支付失败时才会传入,其他状态传""即可。
调用示例:
IAPData iapData = new IAPData
{
reportingToTencentSdk=1,
orderId = "12345678",
payAmount = 1234.555577777,
currencyType = "test",
payType = "alipay",
productID = "12345678aaaaa",
productName = "this is product name",
productCount = 10,
payStatus = 1,
failReason = "this is fail reason",
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackIAP(iapData);
4.2.4、增加归因安装事件
支持统计归因数据,满足客户使用三方归因或者自归因之后的结果数据回传到自定义分析,上报时机支持开发者自定义触发。
自归因事件的 _event_name 为 _mpAttr。
public void trackAppAttr(MpAttrData data)
MpAttrData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
adNetwork |
投放广告的渠道 ID,需要与发行平台匹配 |
string |
是 |
subChannel |
投放广告的子渠道 |
string |
否 |
adAccountID |
投放广告的投放账号 ID |
string |
否 |
adAccountName |
投放广告的投放账号名称 |
string |
否 |
adCampaignID |
投放广告的广告计划 ID |
string |
否 |
adCampaignName |
投放广告的广告计划名称 |
string |
否 |
adOfferID |
投放广告的广告单元 ID |
string |
否 |
adOfferName |
投放广告的广告单元名称 |
string |
否 |
adCreativeID |
投放广告的广告创意 ID |
string |
否 |
adCreativeName |
投放广告的广告创意名称 |
string |
否 |
attributionPlatform |
监测平台 |
string |
是 |
customProperties |
开发者传入的自定义属性,见“自定义属性要求” |
Dictionary<string, object> |
否 |
示例代码:
MpAttrData attrData = new MpAttrData
{
adNetwork = "Facebook",
subChannel = "Organic",
adAccountID = "123456789",
adAccountName = "My Ad Account",
adCampaignID = "987654321",
adCampaignName = "My Campaign",
adOfferID = "54321",
adOfferName = "My Offer",
adCreativeID = "98765",
adCreativeName = "My Creative",
attributionPlatform = "Adjust",
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackAppAttr(attrData);
4.2.5、订单事件
用于进行订单数据分析。
public void trackOrder(OrderData data)
OrderData参数说明
参数名称 |
参数含义 |
参数类型 |
是否必传 |
orderID |
订单 ID |
string |
否,不超过 128 字符 |
payAmount |
订单金额,单位:元 |
number |
是 |
currencyType |
展示货币类型,遵循《ISO 4217国际标准》,如 CNY、USD |
string |
是 |
payType |
支付方式:如 alipay、weixin、applepay、paypal 等 |
string |
否,不超过 32 字符 |
status |
订单状态 |
string |
是 |
customProperties |
自定义属性,见“自定义属性要求” |
Dictionary<string, object> |
否 |
调用示例:
OrderData orderData = new OrderData
{
orderId = "order123",
payAmount = 9.99,
currencyType = "USD",
payType = "alipay",
status = "this is fail status",
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackOrder(orderData);
4.2.6、注册事件
用户注册时,报送该事件,用于进行用户注册数据分析。
public void trackRegister(RegisterData data)
RegisterData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
reportingToTencentSdk |
上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
int |
是 |
registerType |
注册类型如 "WeChat"、"QQ" 等自定义值 |
string |
是,不超过 32 字符 |
registerStatus |
注册状态 如 "success" |
string |
否 |
customProperties |
自定义属性,见“自定义属性要求” |
Dictionary<string, object> |
否 |
调用示例:
RegisterData registrationData = new RegisterData
{
reportingToTencentSdk=1,
regType = "WeChat",
registerStatus = "success",
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackRegister(registrationData);
4.2.7登录事件
用户登录时,报送该事件,用于进行用户登录数据分析。
public void trackLogin(LoginData data)
LoginData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
loginType |
登录类型如 "WeChat"、"QQ" 等自定义值 |
string |
是,不超过 32 字符 |
loginStatus |
登录状态 如 "success" |
string |
否 |
customProperties |
自定义属性,见“自定义属性要求” |
Dictionary<string, object> |
否 |
调用示例:
LoginData loginData = new LoginData
{
loginType = "WeChat",
loginStatus = "Success",
//customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackLogin(loginData);
4.2.8沉默唤起
已经注册的小游戏用户变为沉默用户后,再次进入小游戏,定义为沉默唤起行为,建议的沉默唤起周期为 7、14、30 天,如果业务目前使用其他回流周期也支持传任意 N 值(数字,单位天)。
public void trackReActive(ReActiveData data)
ReActiveData参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
reportingToTencentSdk | 上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
int | 是 |
backFlowDay | 回流天数 | int | 是 |
customProperties | 自定义参数 | Dictionary<string, object> | 否 |
调用示例:
ReActiveData registerData = new ReActiveData
{
reportingToTencentSdk=3,
backFlowDay=1,
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackReActive(registerData);
4.2.9收藏小游戏
在用户收藏小游戏的时候上报,包括收藏、添加到我的小程序、添加到桌面以及小游戏自己定义的收藏逻辑。
public void trackAddToWishlist(AddToWishlistData data)
AddToWishlistData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
reportingToTencentSdk |
上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 |
int |
是 |
addToWishlistType |
收藏类型, 可选类型枚举值:普通收藏(default)/添加到我的小程序(my)/添加到桌面(desktop)/其他(others) |
string |
是 |
customProperties |
自定义参数 |
Dictionary<string, object> |
否 |
调用示例:
AddToWishlistData addToWishlistData = new AddToWishlistData
{
reportingToTencentSdk=1,
addToWishlistType = SESDKBridge.WishlistType_DESKTOP,
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackAddToWishlist(addToWishlistData);
4.2.10分享小游戏
在用户分享小游戏的时候上报,需区分是【转发给朋友】还是【分享到朋友圈】。
public void trackShare(ShareData data)
ShareData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
reportingToTencentSdk |
上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
int |
是 |
mpShareTarget |
分享类型, 可选类型枚举值:转发给朋友(APP_MESSAGE)/分享到朋友圈(TIME_LINE) |
int |
是 |
customProperties |
自定义参数 |
Dictionary<string, object> |
否 |
调用示例:
ShareData shareData = new ShareData
{
reportingToTencentSdk=1,
mpShareTarget = SESDKBridge.ShareTarget_APP_MESSAGE,
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackShare(shareData);
4.2.11创建角色
用户在小游戏内创建角色成功后上报 CREATE_ROLE 行为,可添加创建角色相关的自定义参数,如角色名等。
public void trackCreateRole(CreateRoleData data)
CreateRoleData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
reportingToTencentSdk |
上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
int |
是 |
mpRoleName |
角色名称 |
string |
是 |
调用示例:
CreateRoleData createRoleData = new CreateRoleData
{
reportingToTencentSdk=1,
mpRoleName = "role_name",
};
SESDKBridge.Instance.trackCreateRole(createRoleData);
4.2.12完成新手指引
在用户完成游戏新手指引教程或者完成教程关卡后上报 TUTORIAL_FINISH 行为。
public void trackTutorialFinish(TutorialFinishData data)
data 为object类型,参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
reportingToTencentSdk |
上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
int |
是 |
调用示例:
TutorialFinishData tutorialFinishData = new TutorialFinishData
{
reportingToTencentSdk=1,
};
SESDKBridge.Instance.trackTutorialFinish(tutorialFinishData);
4.2.13游戏等级提升
用户在小游戏内的完成游戏等级提升时上报 UPDATE_LEVEL 行为,可添加自定义参数,如当前游戏等级、游戏能量等。
public void trackUpdateLevel(UpdateLevelData data)
UpdateLevelData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
reportingToTencentSdk |
上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
int |
|
beforeUpgrade |
提升前等级 |
int |
是 |
afterUpgrade |
提升后等级 |
int |
是 |
customProperties |
自定义参数 |
Dictionary<string, object> |
否 |
调用示例:
UpdateLevelData updateLevelData = new UpdateLevelData
{
reportingToTencentSdk=1,
beforeUpgrade = 10,
afterUpgrade = 20,
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackUpdateLevel(updateLevelData);
4.2.14 浏览商城页面
用户在小游戏内浏览商城页面时上报。
public void trackViewContentMall(ViewContentMallData data)
ViewContentMallData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
reportingToTencentSdk |
上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
int |
是 |
customProperties |
自定义参数 |
Dictionary<string, object> |
否 |
调用示例:
ViewContentMallData viewContentMallData = new ViewContentMallData
{
reportingToTencentSdk=1,
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackViewContentMall(viewContentMallData);
4.2.15浏览游戏活动
用户在小游戏内浏览商城页面时上报。
public void trackViewContentActivity(ViewContentActivitData data)
ViewContentActivitData参数说明:
参数名称 |
参数含义 |
参数类型 |
是否必传 |
reportingToTencentSdk |
上报事件给腾讯。如果初始化时,设置初始化腾讯广告SDK, 则此参数必填。 1:全量上报给腾讯 2:非全量上报给腾讯 3:不上报给腾讯 |
number |
是 |
customProperties |
自定义参数 |
object |
否 |
调用示例:
ViewContentActivitData viewContentActivityData = new ViewContentActivitData
{
reportingToTencentSdk=1,
customProperties = new Dictionary<string, object> { { "one", "1" } }
};
SESDKBridge.Instance.trackViewContentActivity(viewContentActivityData);
4.3、自定义事件
除了以上已经列出的有明确定义的事件外,开发者可以根据自己的分析需求,进行自定义事件的上报
自定义事件,即事件的 _event_name 由开发者自定义。
您可以调用 track(eventName, data) 来上报事件,建议您根据先前梳理的文档来设置事件的属性以及发送信息的条件。
事件名称要求:
-
string 类型
-
只能以字母开头,其余字符可包含数字、小写字母和下划线"_"
-
长度最大为 40 个字符
-
仅支持小写字母
调用示例:
string eventName = "test";
Dictionary<string, object> properties = new Dictionary<string, object>
{
{ "one", "1" },
{ "two", 2 }
};
SESDKBridge.Instance.track(eventName, properties);
4.4、自定义属性要求
事件的属性是一个 object 对象,其中每个元素代表一个属性。
4.4.1、key 为该属性的名称
- string 类型
- 只能以字母开头,其余字符可包含数字、小写字母和下划线"_"
- 长度最大为 40 个字符
- 仅支持小写字母
4.4.2、value 为该属性的值
- 支持 string、double、boolean和 array
- 对于 array 的元素,只支持字符串类型
- 对于其他类型都将强制转为字符串存储
4.4.3、自定义属性的属性类型
一个自定义属性的存储数据类型,会以第一次上报数据的格式自动由系统进行识别,一旦确定无法修改。相同产品的属性类型在第一次上报时进行确定。后续不同SDK、不同事件上报的同名属性只有类型与第一次一致才会入库。
数据类型 | 说明 | 示例 |
数字 | 数字类型 | 如:1234,12.34 |
字符串-string | 上限 2KB | "dashen","北京"带引号的数值也会被识别为字符串 |
日期-string | "yyyy-MM-dd HH:mm:ss.SSS"或"yyyy-MM-dd HH:mm:ss",如需表示日期,可使用"yyyy-MM-dd 00:00:00" | "2021-03-01 12:34:56","2021-03-01 12:34:56.789""2021-03-01 00:00:00" |
布尔类型-boolean | true 或 false | true,false带引号的 true 或 false 会被识别为字符串 |
数组类型-array | 数组中的元素都会转变为字符串类型 | ["a","1","true"] |
注:属性的存储数据类型,决定了在分析模型中可以选择的分析逻辑,比如数值型可以进行最大值、最小值、求和等计算,布尔型可以进行为真数、为假数的计算,所以报送数据的格式,需要考虑分析场景和业务需求,制定完整的埋点方案,并按埋点方案进行格式确定。
4.5、时长事件
如果您需要记录某个事件的持续时长,可以调用 eventStart(eventName) 来开始计时,配置您想要计时的事件名称,当您结束该事件时,需要调用 eventFinish(eventName, data),它将会自动在您的事件属性中加入 _duration 这一属性来表示记录的时长,单位为毫秒。需要注意的是,同一个事件名只能有一个在计时的任务。
string eventName = "testEvent";
SESDKBridge.Instance.eventFinish(eventName,new Dictionary<string, object> { { "one", "1" } });
注:在上报预置事件 _appEnd 时,会默认上报由上一次 _appStart 开始计时的时长,即退出事件的时长无需配置开始计时,会默认赋值。
5、用户属性设置
在热力引擎中,专门提供了针对用户属性设置数据的上报方法,针对用户的属性的添加或变更,您可以通过该方法进行上报。
建议您将与用户相关的不变的、或变化频率比较低、或保存价值比较高的属性,比如年龄、创建角色时间、等级、所在地、首次付费时间、总付费金额等属性设置为用户属性,其它变化频率比较高的属性通过事件进行上报和记录。
用户属性设置分为以下几种方式:userUpdate、userInit、userAdd、userUnset、userAppend、userDelete,由开发者调用,对用户属性进行设置。
注:用户属性格式要求与事件属性保持一致。
5.1、userInit
如果您要上传一批用户属性,其中已经存在的用户属性不去更新属性值、对不存在的属性进行创建并保存属性值,则可以调用 userInit 来进行设置。
调用示例:
Dictionary<string, object> properties = new Dictionary<string, object>
{
{ "regtime", "2021-03-01 12:34:56.789" },
{ "rolename", "engineer" },
{"age",29}
};
SESDKBridge.Instance.userInit(properties);
5.2、userUpdate
对于一般的用户属性,您可以调用 userUpdate 来进行设置,使用该接口上传的属性将会覆盖原有的属性值,如果之前不存在该用户属性,则会新建该用户属性,类型与传入属性的类型一致。
调用示例:
Dictionary<string, object> properties = new Dictionary<string, object>
{
{ "rolename", "leader" }
};
SESDKBridge.Instance.userUpdate(properties);
5.3、userAdd
当您要上传数值型的属性时,您可以调用 userAdd 来对该属性进行累加操作,如果该属性还未被设置,则会赋值 0 后再进行计算,可传入负值,等同于相减操作。
调用示例:
Dictionary<string, object> properties = new Dictionary<string, object>
{
{ "age", 1 }
};
SESDKBridge.Instance.userAdd(properties);
userAdd 设置的属性类型以及 Key 值的限制与 userUpdate 一致,但 Value 只允许 int 类型。
5.4、userUnset
当您要清空用户的属性值时,您可以调用 userUnset 来对指定属性(字符串列表)进行清空操作,如果该属性还未在集群中被创建,则 不会 创建该属性。
调用示例:
List<string> str = new List<string>();
str.Add("age");
SESDKBridge.Instance.userUnset(str);
userUnset 传入的参数是用户属性的属性名,类型是字符串列表。
5.5、userAppend
您可以调用 userAppend 对数组类型的用户属性进行追加操作。如果该属性不存在,则会新建该属性。
调用示例:
Dictionary<string, object> properties = new Dictionary<string, object>
{
{ "location",new object[] { "BeiJing" } }
};
SESDKBridge.Instance.userAppend(properties);
5.6、userDelete
如果您要删除某个用户,可以调用 userDelete 将这名用户删除。用户删除后,您将无法再查询该名用户的用户属性,但该用户产生的事件仍然可以被查询到。
调用示例:
SESDKBridge.Instance.userDelete(UserDeleteType.userDeleteByAccountId);
————————————
SDK 更新记录
2024-12-31 1.0.7
• 内部初始化逻辑优化
2024-12-05 1.0.6
• 修复除webgl以外的其他平台部分方法编译报错
2024-12-02 1.0.5
• 新增支持腾讯广告小游戏(需要原生JS SDK版本是1.2.3及以上)
- 原生JS插件:下载地址 【详见2.3获取SDK】
2024-07-26 1.0.4
- 去掉_pl定义抖音/微信
2024-07-16 1.0.3
- 去掉中文字符
2024-07-02 1.0.2
- 适配低版本unity
2024-03-15 1.0.1
- 修复内部日志上报问题
2024-03-06
- 1.0.0版本上线