适用范围
TalkingData Analytics 微信小程序SDK适用于未使用插件的微信小程序版本。
集成准备-创建应用并获取App ID
App ID是TalkingData分析平台标识一款独立应用的唯一标识,集成SDK前需要在TalkingData报表中创建应用并获取相应的App ID。
步骤:
- 注册并登录https://www.talkingdata.com/ ,进入产品中心。
- 创建应用并获取App ID。
- 如果已创建的应用,请从“产品中心->我的应用->点击应用名称”查看App ID。
集成准备-统计标准说明
基础统计指标定义:
- 新增用户:微信小程序统计中,“用户”是根据微信用户的openid作为唯一标识。若两次获取openid失败,则自动生成uuid作为本次及以后访问唯一标识。
- 用户的一次会话:指用户从打开小程序到退出小程序的全过程。如果用户切出小程序后30s内再次返回小程序,则认为是上一次会话的延续,不会算作新的小程序会话。如果用户切出小程序后,30s内通过其他场景值进入小程序,会记为新的会话。
- 自定义事件:指用户在小程序中进行了特定的操作或达成了特定的条件。例如:用户点击了广告栏、用户进行付费等。 自定义事件用于收集任意您期望跟踪的数据。
- 场景:微信小程序官方提供的用户使用小程序时入口ID及说明,用以区分用户每次打开小程序时的入口。
集成准备-配置request合法域名
使用TalkingData小程序统计分析时,需要您在微信小程序后台进行相应的配置:
- 以管理员或开发者身份登录微信公众平台:https://mp.weixin.qq.com/
配置服务器合法域名中添加以下域名信息: https://h5.udrig.com、https://api.talkingdata.com 、https://h5.xdrig.com
注意事项: 该域名用于获取和接受微信小程序的统计信息,非常重要,请勿填错。
快速集成-SDK初始化
为了提高集成效率,我们对一些微信公开的标准功能做了自动统计处理,这样可以减少您的代码部署量。
初始化配置:
- 下载的SDK包解压后,将其中的tdweapp-conf.js和tdweapp.js文件放在您项目的同一文件夹中;
- 在app.js文件开始,引入tdweapp.js文件,示例如下:
const tdweapp = require('./utils/tdweapp.js');
- 在tdweapp-conf.js文件中作初始化配置,示例如下:
{ appkey: '您在TalkingData创建的小程序App ID', appName: '您的应用名称', versionName: 'versionName', versionCode: 'versionCode', wxAppid: '微信管理后台分配的appid', getLocation: false, // 默认不获取用户位置 autoOnPullDownRefresh: false, // 默认不统计下拉刷新数据 autoOnReachBottom: false, // 默认不统计页面触底数据 }
说明:
- App ID是TalkingData分析平台标识一款独立应用的唯一标识,请确保在创建应用时已正确填写小程序ID和小程序密钥。小程序密钥重置时,请及时在报表中更新,避免获取openid失败。
- 如果您不希望开启自动采集或全部页面统计,可将autoOnPullDownRefresh等参数置为 false。设置后,可在相关生命周期或函数内添加代码对单个页面进行统计。
- TalkingData SDK默认修改了微信小程序的生命周期,仅用于自动监听必要事件,不做其他处理。
- 如果小程序本身在进入应用时不需要获取位置,请勿将getLocation置为true,如果设置为true,请根据微信小程序官网最新说明,获取用户位置信息时需填写用途说明,方法请参考微信小程序官网链接
基础统计
集成完SDK后,会自动完成应用启动。
渠道统计
接口说明
跟踪每个分发渠道或推广活动给小程序带来的流量,可以使用渠道网址构建的方式来实现。 说明:
- 如果您的地址中已经有了"?"参数,不需写多个问号,只需要在参数前增加"&"符号。如:?XXXXX=XXXX(其他参数)&TDChannelId=channelname;用户从渠道地址跳转进应用后,当次完整的访问数据都归给对应的渠道。
- "channelname"最多包含64个字符,支持英文、数字、下划线,但不能包含空格或其他的转义字符。
- 请将TDChannelId这个参数加在"?"之后,"#"之前。
接口定义
在配置页面路径时,在路径后面加上TDChannelId作为参数,会当作渠道来处理 。 例如: pages/index/index?TDChannelId=channelname
参数说明
参数 | 类型 | 描述 |
---|---|---|
channelname | String | 渠道ID。最多包含64个字符,支持英文、数字、下划线,但不能包含空格或其他的转义字符。 |
示例代码
例如:应用的入口地址是pages/index/index,在名称为niceApp微信公众号做推广,使用以下点击跳转地址,即可跟踪来源量。
pages/index/index?TDChannelId=niceApp
页面统计
按照集成步骤集成完SDK之后,自动完成页面统计。详情可以参考集成步骤。
自定义事件
接口说明
自定义事件用于统计任何您期望跟踪的数据,如:用户点击某功能按钮、填写某个输入框、触发了某个广告等。 完成这些自定义事件统计后可以在报表对其进行统计分析并进行关键路径转化分析。
接口定义
app.td_app_sdk.event(eventInfo);
参数说明
eventInfo为Object类型,具体参数如下:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
id | String | 是 | 事件ID, 事件的唯一标识。最多包含64个字符,支持中文、英文、数字、下划线,但不能包含空格或其他的转义字符。 |
label | String | 否 | 事件描述 |
params | Object | 否 | 事件参数 |
示例代码
// wxml
<view bindtap="bindEvent">
<text>点我触发自定义事件</text>
</view>
// js
var app = getApp();
Page({
bindEvent: function () {
app.td_app_sdk.event({
id: 'eventId',
label: 'eventLabel',
params: {
key1: 'value1',
key2: 'value2'
}
});
}
})
标准事件相关接口
在微信小程序中,提供了特定事件,如分享、下拉刷新、页面触底,用以追踪用户使用小程序的行为。针对这些行为,我们提供了相应的标准事件,便于提供更多特定分析。
分享
接口定义
app.td_app_sdk.share(shareInfo);
参数说明
shareInfo为Object类型,具体参数如下:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
shareInfo | Object | 是 | 分享页面的相关信息 |
示例代码
var app = getApp();
Page({
onShareAppMessage: function () {
app.td_app_sdk.share({
title: '转发标题',
path: '转发路径'
});
return {
title: '转发标题',
path: '转发路径'
}
}
});
下拉刷新
接口说明
该SDK支持自动统计所有页面的下拉刷新事件,或通过调用接口统计部分页面的下拉刷新事件。
自动统计所有页面下拉刷新事件的方法:在SDK初始化配置时,将weapp-conf.js文件中的autoOnPullDownRefresh
项配置为true。
只统计部分页面下拉刷新事件的方法:将上述参数为false,并在需统计的页面调用下拉刷新接口。
接口定义
app.td_app_sdk.pullDownRefresh();
示例代码
var app = getApp();
Page({
onPullDownRefresh: function () {
app.td_app_sdk.pullDownRefresh();
}
});
页面触底
接口说明
该SDK支持自动统计所有页面的触底事件,或通过调用接口统计部分页面的触底事件。
自动统计所有页面触底事件的方法:在SDK初始化配置时,将weapp-conf.js文件中的autoOnReachBottom
项配置为true。
只统计部分页面触底事件的方法:将上述参数为false,并在需统计的页面调用页面触底接口。
接口定义
app.td_app_sdk.reachBottom();
示例代码
var app = getApp();
Page({
onPullDownRefresh: function () {
app.td_app_sdk.reachBottom();
}
});
账户相关接口
统计账户相关数据,用于账户分析功能。
注册
接口定义
app.td_app_sdk.Profile.register(profileInfo);
参数说明
profileInfo为Object类型,具体参数如下:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
accountId | String | 是 | 账户的唯一标识,用于区分不同用户 |
accountType | Number | 是 | 传入账户的类型。支持匿名、自有账户显性注册、第三方账户及其他预留的自定义账户类型,共4大类,具体如下: 0:ANONYMOUS,匿名账号; 1:REGISTERED,自有帐户显性注册; 2:SINA_WEIBO,新浪微博账号; 3:QQ,QQ账号; 4:TENCENT_WEIBO,腾讯微博账号; 5:ND91,91平台账号; 6:WEIXIN,微信账号 11:Type1 12:Type2; 13:Type3; …… 20:Type10; |
name | String | 否 | 账户名称 |
age | Number | 否 | 用户年龄 |
gender | Number/String | 否 | 性别。0:未知;1:男;2:女 |
property1~property10 | Number/String | 否 | 自定义属性 |
示例代码
var app = getApp();
Page({
register() {
app.td_app_sdk.profile.register({
accountId: '123444',
accountType: 1,
name: 'xiaoming',
age: 23,
gender: 1,
property1: '朋友推荐',
property2: '金卡',
property3: '2022-12-31'
});
},
});
登录
接口定义
app.td_app_sdk.Profile.login(profileInfo);
参数说明
profileInfo为Object类型,具体参数如下:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
accountId | String | 是 | 账户的唯一标识,用于区分不同用户 |
accountType | Number | 是 | 传入账户的类型。支持匿名、自有账户显性注册、第三方账户及其他预留的自定义账户类型,共4大类,具体如下: 0:ANONYMOUS,匿名账号; 1:REGISTERED,自有帐户显性注册; 2:SINA_WEIBO,新浪微博账号; 3:QQ,QQ账号; 4:TENCENT_WEIBO,腾讯微博账号; 5:ND91,91平台账号; 6:WEIXIN,微信账号 11:Type1 12:Type2; 13:Type3; …… 20:Type10; |
name | String | 否 | 账户名称 |
age | Number | 否 | 用户年龄 |
gender | Number/String | 否 | 性别。0:未知;1:男;2:女 |
property1~property10 | Number/String | 否 | 自定义属性 |
示例代码
var app = getApp();
Page({
login() {
app.td_app_sdk.profile.login({
accountId: '123444',
accountType: 1,
name: 'xiaoming',
age: 23,
gender: 1,
property1: '朋友推荐',
property2: '金卡',
property3: '2022-12-31'
});
},
});
账户更新
接口定义
app.td_app_sdk.Profile.update(profileInfo);
参数说明
profileInfo为Object类型,具体参数如下:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
accountType | Number | 否 | 传入账户的类型。支持匿名、自有账户显性注册、第三方账户及其他预留的自定义账户类型,共4大类,具体如下: 0:ANONYMOUS,匿名账号; 1:REGISTERED,自有帐户显性注册; 2:SINA_WEIBO,新浪微博账号; 3:QQ,QQ账号; 4:TENCENT_WEIBO,腾讯微博账号; 5:ND91,91平台账号; 6:WEIXIN,微信账号 11:Type1 12:Type2; 13:Type3; …… 20:Type10; |
name | String | 否 | 账户名称 |
age | Number | 否 | 用户年龄 |
gender | Number/String | 否 | 性别。0:未知;1:男;2:女 |
property1~property10 | Number/String | 否 | 自定义属性 |
示例代码
var app = getApp();
Page({
login() {
app.td_app_sdk.profile.update({
accountType: 1,
name: 'xiaoming',
age: 23,
gender: 1,
property1: '朋友推荐',
property2: '金卡',
property3: '2023-12-31'
});
},
});
付费相关接口
用于统计用户付费相关信息,请前往我的报表,在报表中添加具体指标查看数据。
提交订单
接口定义
app.td_app_sdk.iap.placeOrder(orderInfo);
参数说明
orderInfo为Object类型,具体参数如下:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
orderId | String | 是 | 订单ID |
amount | Number | 是 | 订单金额,单位分 |
currencyType | String | 是 | 货币类型,如CNY |
示例代码
var sdk = getApp();
sdk.td_app_sdk.iap.placeOrder({
orderId: '0000123',
amount: 7843,
currencyType: 'CNY'
});
支付成功
接口定义
app.td_app_sdk.iap.orderPaySucc(orderInfo);
参数说明
orderInfo为Object类型,具体参数如下:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
orderId | String | 是 | 订单ID |
amount | Number | 是 | 订单金额,单位分 |
currencyType | String | 是 | 货币类型,如CNY |
paymentType | String | 否 | 支付方式,如支付宝,银行卡 |
示例代码
var sdk = getApp();
sdk.td_app_sdk.iap.orderPaySucc({
orderId: '123',
amount: 12345,
currencyType: 'CNY',
paymentType: '支付宝'
});
取消订单
接口定义
app.td_app_sdk.iap.cancelOrder(orderInfo);
参数说明
orderInfo为Object类型,具体参数如下:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
orderId | String | 是 | 订单ID |
amount | Number | 是 | 订单金额,单位分 |
currencyType | String | 是 | 货币类型,如CNY |
示例代码
var sdk = getApp();
sdk.td_app_sdk.iap.cancelOrder({
orderId: '123',
amount: 12345,
currencyType: 'CNY'
});