更新记录
5.0.1(2024-10-22) 下载此版本
适配最新的隐私政策
5.0.0(2022-08-05) 下载此版本
新增Android和iOS平台App原生插件
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 14.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:11 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
适用范围
TalkingData uni-app SDK 适用于 uni-app 平台开发的 Android 和 iOS 应用。
集成准备-创建应用并获取App ID
App ID 是 TalkingData 分析平台标识一款独立应用的唯一标识,集成 SDK 前需要在 TalkingData 产品中心创建应用并获取相应的 App ID。
步骤:
- 注册并登录 https://www.talkingdata.com/,进入产品中心。
- 创建应用并获取 App ID。
- 如果已创建的应用,请从“产品中心->我的应用->点击应用名称”查看 App ID。
集成准备-统计标准说明
根据各行业场景,TalkingData SDK 提供行业通用事件体系、行业专属事件体系、页面事件体系、自定义事件体系等。
● 用户:TalkingData SDK 数据系统中的“用户”,指用户的一台唯一设备。
● 激活用户:指下载、安装并首次启动应用成功的用户。
● 行业通用事件:适用于所有行业类型的移动App,包含唤醒、注册、登录、添加支付信息、收藏、分享、签到打卡、搜索。
● 行业专属事件:针对各行业特性专属定制的事件体系,例如查看商品、通过关卡、课程学习、授信交易等。
● 自定义事件:指用户在应用中进行了特定的操作或达成了特定的条件。例如:用户点击了某按钮,完成了某步骤等。自定义事件用于收集任意您期望跟踪的数据。
快速集成-引入SDK
引入SDK
在需要使用 SDK 的文件中调用如下代码引入 SDK 插件:
var TalkingDataSDK = uni.requireNativePlugin("TalkingData-SDK")
权限说明
Android 平台 SDK 需要获取适当的权限才可以正常工作,Plugin 中已配置必选权限,下列为所有权限说明。
权限 | 用途 |
---|---|
INTERNET | 允许程序联网和发送统计数据的权限 |
ACCESS_NETWORK_STATE | 允许应用检测网络连接状态,在网络异常状态下避免数据发送,节省流量和电量 |
READ_PHONE_STATE | 允许应用以只读的方式访问手机设备的信息,通过获取的信息来唯一标识用户 |
ACCESS_WIFI_STATE | 获取设备的MAC地址,同样用来标识唯一用户 |
WRITE_EXTERNAL_STORAGE | 用于保存设备信息,以及记录日志 |
ACCESS_FINE_LOCATION(可选) | 可通过GPS获取设备的位置信息,用来修正用户的地域分布数据,使报表数据更准确 |
ACCESS_COARSE_LOCATION(可选) | 用来获取该应用被使用的粗略位置信息 |
GET_TASKS(可选) | 获取当前应用是否在显示应用,可以更精准的统计用户活跃 |
依赖框架说明
iOS 平台 SDK 需要添加适当的依赖框架才可以正常工作,Plugin 中已配置相应框架,下列为所有框架说明。
框架 | 用途 |
---|---|
AdServices.framework | Apple Search Ads 归因(iOS 14.3及以上) |
iAd.framework | Apple Search Ads 归因(iOS 14.5及以下) |
StoreKit.framework | Apple SKAdNetwork 归因转化 |
AppTrackingTransparency.framework | 获取App跟踪授权状态 |
AdSupport.framework | 获取advertisingIdentifier |
CoreTelephony.framework | 获取运营商标识 |
Security.framework | 辅助存储设备标识 |
SystemConfiguration.framework | 检测网络状况 |
libc++.tbd | 支持最新的c++11标准 |
libz.tbd | 进行数据压缩 |
快速集成-SDK收集规则配置
接口说明
在开始SDK分析功能(即调用TalkingDataSDK.startA
方法)之前,可以修改SDK的收集规则。可配置的收集项目包括IMEI/MEID、MAC、应用列表、位置信息四项。
接口定义
TalkingDataSDK.setConfig(config);
其中TalkingDataSDKConfig
为SDK收集规则配置类,可以实例化后传递给SDK。
如果不调用此接口,则默认为收集。
代码示例
// 如果需要更改SDK收集规则,请在TalkingDataSDK.startA()方法前修改
// 如果不需要更改SDK收集规则,此处代码可以省略,默认为收集
var config = {
IMEIAndMEIDEnabled : false, //不允许收集IMEI和MEID
MACEnabled : false, //不允许收集MAC
AppListEnabled : false, //不允许收集应用列表
LocationEnabled : false //不允许收集位置信息
}
TalkingDataSDK.setConfig(config)
快速集成-SDK初始化
接口说明
只有在SDK正确初始化后,SDK的其他接口才可以使用。
可以在 App.vue
文件的 onLaunch
方法中进行SDK初始化。
接口定义
TalkingDataSDK.initSDK(appId, channelId, custom);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
appId | string | 是 | appId为应用追踪的唯一标识,在【产品中心】-【我的应用】-【点击应用名称】获取 |
channelId | string | 是 | channelId为渠道跟踪ID 如果在GooglePlay官方市场上架,channelId必须设置为GooglePlay或play.google.com,避免系统误判为其他第三方市场数据; 如果在AppStore官方市场上架,channelId必须设置为AppStore避免系统误判为其他第三方市场数据; 如果在国内第三方应用市场,或者越狱市场上架,channelId最多包含64个字符,支持中文、英文、数字、下划线、“.”,但不能包含空格或其他的转义字符。 此外,针对GooglePlay官方市场,请集成Google专属版SDK。详见:https://www.talkingdata.com/sdk-forgp.jsp |
custom | string | 否 | (仅AdTracking)自定义初始化参数,用于开发者按需携带自有业务信息,长度至多64字符,支持数字、字母、符号组合,其中符号包含- : _ |
示例代码
onLaunch: function() {
console.log('App Launch')
TalkingDataSDK.initSDK("DE40FB8A722D454B8981E2F842E6AAB6", "AppStore", "Test")
}
快速集成-启动分析
接口说明
只有在初始化接口和该接口全部正确调用后,SDK的其他接口才可以使用。
请确保您已在应用程序的《隐私政策》中明确告知终端用户已选择TalkingData作为合作方提供数据统计分析服务,并取得用户授权之后,再调用TalkingData SDK的startA
接口。如果用户不同意《隐私政策》授权,请不要调用TalkingData SDK的startA
接口。TalkingData SDK的startA
接口作为SDK的启动分析依据,会在执行过程中进行合规的基础信息采集以及数据上报。
接口定义
TalkingDataSDK.startA();
示例代码
// SDK 启动分析
TalkingDataSDK.startA();
基础-基础统计
正确完成初始化调用后,自动完成应用启动的统计,详见集成步骤:SDK初始化。
基于应用启动,后台自动计算独立设备,并计算新增、活跃、留存、升级等指标。
基础-渠道统计
用途和用法
给应用的安装包打入特殊的渠道标记,用户安装并使用后,就可以在报表中分不同渠道来源单独查询相应的数据。
在您为应用商店、下载站等分发渠道提供应用安装包时,可以加入渠道标记;在进行特别的活动时也可加入特殊渠道标记便于单独分析效果。
注意事项:
用户的渠道归属是指每台设备首次安装激活的渠道,同一用户在更替渠道包使用后不会重复计算新增,使用数据归入首次激活渠道。如果未添加渠道标记,或渠道标记是示例代码中的默认值,用户将会归入为“未知渠道”。
集成方式说明
在初始化中写入渠道ID即可。
基础-获取设备ID
接口说明
获取设备的唯一id
接口定义
TalkingDataSDK.getDeviceId();
参数说明
无
示例代码
var tdid = TalkingDataSDK.getDeviceId();
基础-获取OAID(仅Android)
接口说明
通过调用 TalkingDataSDK 插件的 getOAID 接口获取 Android 10 及以上设备的 OAID。
需要注意的是,这个接口建议您在初始化SDK之后的 3-5 秒再去调用,以避免您获取到 null 值。
接口定义
TalkingDataSDK.getOAID();
参数说明
无
示例代码
var oaid = TalkingDataSDK.getOAID();
基础-后台使用时长(仅iOS)
接口说明
默认获取的是前台使用时长。如需获取后台使用时长,可通过调用以下接口设置。
调用该接口后,用户的使用时长指标包含前台使用时长和后台使用时长。
注意事项:该接口需要在SDK初始化方法之前调用。
接口定义
TalkingDataSDK.backgroundSessionEnabled();
参数说明
无
示例代码
TalkingDataSDK.backgroundSessionEnabled();
TalkingDataSDK.init("您的 App ID", "渠道 ID", "自定义参数");
基础-自定义位置(仅iOS)
接口说明
TalkingData 默认使用设备中收取的 MCC(移动国家码)和用户联网 IP 来判定用户的地区,与地区相关的数据会有一定误差。
如果您的应用会使用用户的位置信息,可通过接口将信息提交至 TalkingData 数据中,可使您获得更加精准的数据报表。
接口定义
TalkingDataSDK.setLocation(latitude, longitude);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
latitude | number | 是 | 纬度 |
longitude | number | 是 | 经度 |
示例代码
TalkingDataSDK.setLocation(39.942, 116.435);
基础-页面访问(仅AppAnalytics)
接口说明
此功能用于帮助开发者统计应用中各个页面的访问次数和停留时长,并可以追踪用户从某个页面离开后所访问的其他页面,为产品优化提供依据。
SDK会自动统计页面停留时长及来源页面。
注意事项:
● onPageBegin
和 onPageEnd
接口必须成对调用。
● 尽可能对所有页面都进行追踪,以免因部分页面未追踪而导致分析用户跳转路径时分析结果异常。
接口定义
在进入页面时调用 TalkingDataSDK
的 onPageBegin
方法。
TalkingDataSDK.onPageBegin(pageName);
在离开页面时调用 TalkingDataSDK
的 onPageEnd
方法。
TalkingDataSDK.onPageEnd(pageName);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
pageName | string | 是 | 页面名称 最多包含64个字符,支持中文、英文、数字、下划线,但不能包含空格或其他的转义字符 |
示例代码
// 进入页面
TalkingDataSDK.onPageBegin("主页面");
// 离开页面
TalkingDataSDK.onPageEnd("主页面");
通用-唤醒(仅AdTracking)
接口说明
在用户通过 Deep Link 唤起应用的时候调用 TalkingDataSDK
的 onReceiveDeepLink
接口。
接口定义
TalkingDataSDK.onReceiveDeepLink(link);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
link | string | 是 | 唤起应用的link,支持英文、数字、符号,至多800位字符。 需拼接campaignid,详见:http://doc.talkingdata.com/posts/904 |
示例代码
TalkingDataSDK.onReceiveDeepLink("https://www.talkingdata.com");
通用-注册
接口说明
注册接口用于记录用户在使用应用过程中的注册行为,在注册成功时调用 TalkingDataSDK
的 onRegister
接口。
若应用具备“老用户邀请新用户注册”功能,可在此接口中传入注册邀请码 invitationCode
,TalkingData SDK 将基于此进行“受邀注册”的指标统计。
接口定义
TalkingDataSDK.onRegister(profileId, profile, invitationCode, eventValue);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 是 | 用户账号ID,支持英文、数字、符号 |
profile | object | 否 | (仅AppAnalytics)账户属性 |
invitationCode | string | 否 | (仅AdTracking)邀请码,支持英文、数字、符号 |
eventValue | object | 否 | (仅AdTracking)用户自定义事件参数 |
profile 说明:
属性 | 类型 | 是否必选 | 描述 |
---|---|---|---|
name | string | 否 | 账户名称 |
type | number | 否 | 账户类型 0(匿名账户) 1(显示注册账户) 2(新浪微博) 3(QQ账户) 4(腾讯微博) 5(91账户) 6(微信) 11(自定义类型1) 12(自定义类型2) 13(自定义类型3) 14(自定义类型4) 15(自定义类型5) 16(自定义类型6) 17(自定义类型7) 18(自定义类型8) 19(自定义类型9) 20(自定义类型10) |
gender | number | 否 | 用户性别 0(未知) 1(男) 2(女) |
age | number | 否 | 用户年龄 |
property1 | string/number | 否 | 自定义属性1,仅支持字符串(string)和数字(number)类型 |
property2 | string/number | 否 | 自定义属性2,仅支持字符串(string)和数字(number)类型 |
property3 | string/number | 否 | 自定义属性3,仅支持字符串(string)和数字(number)类型 |
property4 | string/number | 否 | 自定义属性4,仅支持字符串(string)和数字(number)类型 |
property5 | string/number | 否 | 自定义属性5,仅支持字符串(string)和数字(number)类型 |
property6 | string/number | 否 | 自定义属性6,仅支持字符串(string)和数字(number)类型 |
property7 | string/number | 否 | 自定义属性7,仅支持字符串(string)和数字(number)类型 |
property8 | string/number | 否 | 自定义属性8,仅支持字符串(string)和数字(number)类型 |
property9 | string/number | 否 | 自定义属性9,仅支持字符串(string)和数字(number)类型 |
property10 | string/number | 否 | 自定义属性10,仅支持字符串(string)和数字(number)类型 |
示例代码
var profile = {
name : "name01",
type : 6,
gender : 1,
age : 18,
property1 : "property1",
property2 : 2,
property3 : 3.14,
property4 : "property4",
property5 : "property5",
property6 : 0.618,
property7 : "property7",
property8 : "property8",
property9 : 9.8,
property10 : "property10"
}
var eventValue = {
key : "value"
}
TalkingDataSDK.onRegister("user01", profile, "123456");
通用-登录
接口说明
登录接口用于记录用户在使用应用过程中的登录行为,在登录成功时调用 TalkingDataSDK
的 onLogin
接口。
常用的调用登录接口的时机如下:
● 用户注册后自动登录,这时候可以按顺序调用注册和登录两个接口。
● 用户登录信息过期,手动发起并完成登录操作,此时调用登录接口。
● 用户登录信息未过期,每次启动应用时App自动判断为已登录状态,开发者按需调用登录接口。
接口定义
TalkingDataSDK.onLogin(profileId, profile, eventValue);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 是 | 用户账号ID,支持英文、数字、符号 |
profile | object | 否 | (仅AppAnalytics)账户属性 |
eventValue | object | 否 | (仅AdTracking)用户自定义事件参数 |
profile 说明:详见“通用-注册”的“参数说明”
示例代码
var profile = {
name : "name01",
type : 6,
gender : 1,
age : 18,
property1 : "property1",
property2 : 2,
property3 : 3.14,
property4 : "property4",
property5 : "property5",
property6 : 0.618,
property7 : "property7",
property8 : "property8",
property9 : 9.8,
property10 : "property10"
}
var eventValue = {
key : "value"
}
TalkingDataSDK.onLogin("user01", profile);
通用-账户属性更新(仅AppAnalytics)
接口说明
在用户账户属性发生变更时调用 TalkingDataSDK
的 onProfileUpdate
接口。
接口定义
TalkingDataSDK.onProfileUpdate(profile);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profile | object | 否 | 账户属性 |
profile 说明:详见“通用-注册”的“参数说明”
示例代码
var profile = {
name : "name01",
type : 6,
gender : 1,
age : 18,
property1 : "property1",
property2 : 2,
property3 : 3.14,
property4 : "property4",
property5 : "property5",
property6 : 0.618,
property7 : "property7",
property8 : "property8",
property9 : 9.8,
property10 : "property10"
}
TalkingDataSDK.onProfileUpdate(profile);
通用-添加支付信息(仅AdTracking)
接口说明
在用户添加支付信息成功后调用 TalkingDataSDK
的 onCreateCard
接口。
接口定义
TalkingDataSDK.onCreateCard(profileId, method, content);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
method | string | 否 | 支付方式,支持中文、英文、数字、符号 |
content | string | 否 | 支付信息,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onCreateCard("user01", "card", "6201234567891011");
通用-收藏(仅AdTracking)
接口说明
在用户进行收藏行为并完成收藏事件时调用 TalkingDataSDK
的 onFavorite
接口。
接口定义
TalkingDataSDK.onFavorite(category, content, eventValue);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
category | string | 否 | 收藏类别,支持中文、英文、数字、符号 |
content | string | 否 | 收藏内容,支持中文、英文、数字、符号 |
eventValue | object | 否 | (仅AdTracking)用户自定义事件参数 |
示例代码
var eventValue = {
key : "value"
}
TalkingDataSDK.onFavorite("书单", "西游记");
通用-分享(仅AdTracking)
接口说明
在用户进行分享行为时调用 TalkingDataSDK
的 onShare
接口。
接口定义
TalkingDataSDK.onShare(profileId, content, eventValue);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
content | string | 否 | 分享内容,支持中文、英文、数字、符号 |
eventValue | object | 否 | (仅AdTracking)用户自定义事件参数 |
示例代码
var eventValue = {
key : "value"
}
TalkingDataSDK.onShare("user01", "读书清单");
通用-签到打卡(仅AdTracking)
接口说明
在用户进行签到打卡行为时调用 TalkingDataSDK
的 onPunch
接口。
接口定义
TalkingDataSDK.onPunch(profileId, punchId);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
punchId | string | 否 | 签到打卡ID,支持英文、数字、符号 |
示例代码
TalkingDataSDK.onPunch("user01", "punch01");
通用-搜索(仅AdTracking)
接口说明
在用户进行应用内搜索行为时调用 TalkingDataSDK
的 onSearch
接口。
接口定义
TalkingDataSDK.onSearch(search);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
search | object | 是 | 搜索事件属性 |
search 说明:
属性 | 参数类型 | 是否必选 | 描述 |
---|---|---|---|
category | string | 否 | 搜索类别,支持中文、英文、数字、符号 |
content | string | 否 | 搜索内容,支持中文、英文、数字、符号 |
itemId | string | 否 | (电商类专用)商品ID,支持英文、数字、符号 |
itemLocationId | string | 否 | (电商类专用)商品位置,支持中文、英文、数字、符号 |
destination | string | 否 | (旅游类专用)目的地城市,支持中文、英文、数字、符号 |
origin | string | 否 | (旅游类专用)出发地城市,支持中文、英文、数字、符号 |
startDate | number | 否 | (旅游类专用)起始时间戳(毫秒) |
endDate | number | 否 | (旅游类专用)截止时间戳(毫秒) |
示例代码
var search = {
category : "类型",
content : "内容",
itemId : "商品ID",
itemLocationId : "location12314",
destination : "目的地",
origin : "出发地",
startDate : 1565176907309,
endDate : 1565176908309
}
TalkingDataSDK.onSearch(search);
行业专属事件
行业专属事件适用于部分行业类型的移动App,具体如下表:
事件名称 | 电商零售 | 游戏娱乐 | 金融借贷 | 旅游出行 | 在线教育 | 小说阅读 | 其他行业 |
---|---|---|---|---|---|---|---|
联系(仅AdTracking) | √ | √ | √ | √ | |||
付费(仅AdTracking) | √ | √ | √ | √ | √ | ||
退单(仅AdTracking) | √ | √ | √ | √ | |||
预约(仅AdTracking) | √ | √ | |||||
预订(仅AdTracking) | √ | √ | |||||
查看商品 | √ | ||||||
添加到购物车 | √ | ||||||
查看购物车 | √ | ||||||
下订单 | √ | ||||||
支付订单 | √ | ||||||
取消订单(仅AppAnalytics) | √ | ||||||
授信(仅AdTracking) | √ | ||||||
交易(仅AdTracking) | √ | ||||||
创建角色 | √ | ||||||
通过关卡 | √ | ||||||
完成新手教程 | √ | ||||||
课程学习(仅AdTracking) | √ | ||||||
完成课程试听(仅AdTracking) | √ | ||||||
文章阅读(仅AdTracking) | √ | ||||||
完成免费阅读(仅AdTracking) | √ | ||||||
解锁成就 | √ | √ | |||||
浏览详情(仅AdTracking) | √ | √ | √ | ||||
完成试用体验(仅AdTracking) | √ | √ | √ | √ |
专属-联系(仅AdTracking)
接口说明
在用户联系商家或平台的时候调用 TalkingDataSDK
的 onContact
接口。
接口定义
TalkingDataSDK.onContact(profileId, content);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
content | string | 否 | 联系内容,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onContact("user01", "联系平台内容");
专属-付费(仅AdTracking)
接口说明
在用户付费成功的时候调用 TalkingDataSDK
的 onPay
接口。
接口定义
TalkingDataSDK.onPay(profileId, orderId, amount, currencyType, paymentType, itemId, itemCount);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
orderId | string | 是 | 订单ID,支持英文、数字、符号,最多64个字符 全局唯一,由开发者提供并维护(此ID很重要,如果不清楚可咨询客服),用于唯一标识一次交易,以及后期系统之间对账使用。如果多次充值成功的orderId重复,将只计算首次成功的数据,其他数据会认为重复数据丢弃 |
amount | number | 是 | 订单金额,单位为所选货币的最小单位 例如:600分或100美分,币种以currencyType为标准 |
currencyType | string | 是 | 货币类型,请使用国际标准组织ISO 4217中规范的3位字母代码标记货币类型 详见【重点问题解答-问题1】 |
paymentType | string | 否 | 支付类型,支持中文、英文、数字、符号 例如:ApplePay、支付宝、Alipay、微信等 |
itemId | string | 否 | 商品ID,支持英文、数字、符号 |
itemCount | number | 否 | 商品数量 |
示例代码
TalkingDataSDK.onPay("user01", "order01", 600, "CNY", "ApplePay", "item01", 1);
专属-退单(仅AdTracking)
接口说明
在用户退单的时候调用 TalkingDataSDK
的 onChargeBack
接口。
接口定义
TalkingDataSDK.onChargeBack(profileId, orderId, reason, type;
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
orderId | string | 否 | 订单ID,支持英文、数字、符号 |
reason | string | 否 | 退单原因,支持中文、英文、数字、符号 |
type | string | 否 | 退单类型,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onChargeBack("user01", "order01", "7天无理由退货", "仅退款");
专属-预约(仅AdTracking)
接口说明
在用户进行预约行为时调用 TalkingDataSDK
的 onReservation
接口。
接口定义
TalkingDataSDK.onReservation(profileId, reservationId, category, amount, term);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
reservationId | string | 否 | 预约ID,支持英文、数字、符号 |
category | string | 否 | 预约类别,支持中文、英文、数字、符号 |
amount | number | 否 | 预约金额 |
term | string | 否 | 预约信息,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onReservation("user01", "td_123456", "借贷类", 12, "商品信息");
专属-预订(仅AdTracking)
接口说明
在用户进行预订行为时调用 TalkingDataSDK
的 onBooking
接口。
接口定义
TalkingDataSDK.onBooking(profileId, bookingId, category, amount, content);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
bookingId | string | 否 | 预订ID,支持英文、数字、符号 |
category | string | 否 | 预订类别,支持中文、英文、数字、符号 |
amount | number | 否 | 预订金额 |
content | string | 否 | 预订内容,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onBooking("user01", "002391", "电子", 12300, "商品信息");
专属-查看商品
接口说明
在用户浏览一个商品详情时调用 TalkingDataSDK
的 onViewItem
接口。
接口定义
TalkingDataSDK.onViewItem(itemId, category, name, unitPrice, eventValue);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
itemId | string | 否 | 商品ID,支持英文、数字、符号 |
category | string | 否 | 商品类别,支持中文、英文、数字、符号 |
name | string | 否 | 商品名称,支持中文、英文、数字、符号 |
unitPrice | number | 否 | 商品单价 |
eventValue | object | 否 | (仅AdTracking)用户自定义事件参数 |
示例代码
var eventValue = {
key : "value"
}
TalkingDataSDK.onViewItem("item01", "item_category", "item_name", 1200);
专属-添加到购物车
接口说明
在用户添加一个商品到购物车时调用 TalkingDataSDK
的 onAddItemToShoppingCart
接口。
接口定义
TalkingDataSDK.onAddItemToShoppingCart(itemId, category, name, unitPrice, amount, eventValue);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
itemId | string | 否 | 商品ID,支持英文、数字、符号 |
category | string | 否 | 商品类别,支持中文、英文、数字、符号 |
name | string | 否 | 商品名称,支持中文、英文、数字、符号 |
unitPrice | number | 否 | 商品单价 |
amount | number | 否 | 商品数量 |
eventValue | object | 否 | (仅AdTracking)用户自定义事件参数 |
示例代码
var eventValue = {
key : "value"
}
TalkingDataSDK.onAddItemToShoppingCart("item01", "item_category", "item_name", 1200, 111);
专属-查看购物车
接口说明
在用户浏览购物车内所有商品时调用 TalkingDataSDK
的 onViewShoppingCart
接口。
接口定义
TalkingDataSDK.onViewShoppingCart(shoppingCart);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
shoppingCart | object | 是 | 购物车详情,详见创建购物车 |
shoppingCart 说明:
属性 | 类型 | 是否必选 | 描述 |
---|---|---|---|
items | array | 是 | 物品详情列表,可包含多个物品详情 |
item 说明:
属性 | 类型 | 是否必选 | 描述 |
---|---|---|---|
itemId | string | 否 | 商品ID,支持英文、数字、符号 |
category | string | 否 | 商品类别,支持中文、英文、数字、符号 |
name | string | 否 | 商品名称,支持中文、英文、数字、符号 |
unitPrice | number | 否 | 商品单价 |
amount | number | 否 | 商品数量 |
示例代码
var shoppingCart = {
items : [
{
itemId : "item01",
category : "item_category",
name : "item_name",
unitPrice : 1200,
amount : 111
}
]
}
TalkingDataSDK.onViewShoppingCart(shoppingCart);
专属-下订单
接口说明
在用户下订单时调用 TalkingDataSDK
的 onPlaceOrder
接口。
接口定义
TalkingDataSDK.onPlaceOrder(order, profileId, eventValue);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
order | object | 是 | 订单详情,详见创建订单 |
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
eventValue | object | 否 | (仅AdTracking)用户自定义事件参数 |
order 说明:
属性 | 类型 | 是否必选 | 描述 |
---|---|---|---|
orderId | string | 是 | 订单ID,支持英文、数字、符号,最多64个字符 全局唯一,由开发者提供并维护(此ID很重要,如果不清楚可咨询客服),用于唯一标识一次交易,以及后期系统之间对账使用。如果多次充值成功的orderId重复,将只计算首次成功的数据,其他数据会认为重复数据丢弃 |
total | number | 是 | 订单金额,单位为所选货币的最小单位 例如:600分或100美分,币种以currencyType为标准 |
currencyType | string | 是 | 货币类型,请使用国际标准组织ISO 4217中规范的3位字母代码标记货币类型 详见【重点问题解答-问题1】 |
items | array | 否 | (仅AdTracking)商品详情列表,可包含多个商品详情 |
item 说明:
属性 | 类型 | 是否必选 | 描述 |
---|---|---|---|
itemId | string | 否 | 商品ID,支持英文、数字、符号 |
category | string | 否 | 商品类别,支持中文、英文、数字、符号 |
name | string | 否 | 商品名称,支持中文、英文、数字、符号 |
unitPrice | number | 否 | 商品单价 |
amount | number | 否 | 商品数量 |
示例代码
var order = {
orderId : "orderId01",
total : 3222,
currencyType : "CNY",
items : [
{
itemId : "item01",
category : "item_category",
name : "item_name",
unitPrice : 3222,
amount : 111
}
]
}
var eventValue = {
key : "value"
}
TalkingDataSDK.onPlaceOrder(order, "user01");
专属-支付订单
接口说明
在用户付费成功的时候调用 TalkingDataSDK
的 onOrderPaySucc
接口。
接口定义
TalkingDataSDK.onOrderPaySucc(order, paymentType, profileId);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
order | object | 是 | 订单详情,详见创建订单 |
paymentType | string | 否 | 支付类型,支持中文、英文、数字、符号 例如:ApplePay、支付宝、Alipay、微信等 |
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
order 说明:
详见“专属-下订单”的“order 说明”
示例代码
var order = {
orderId : "orderId01",
total : 3222,
currencyType : "CNY",
items : [
{
itemId : "item01",
category : "item_category",
name : "item_name",
unitPrice : 3222,
amount : 111
}
]
}
TalkingDataSDK.onOrderPaySucc(order, "ApplePay", "user01");
专属-取消订单(仅AppAnalytics)
接口说明
在用户取消订单的时候调用 TalkingDataSDK
的 onCancelOrder
接口。
接口定义
TalkingDataSDK.onCancelOrder(order);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
order | object | 是 | 订单详情,详见创建订单 |
order 说明:
详见“专属-下订单”的“创建订单”
示例代码
var order = {
orderId : "orderId01",
total : 3222,
currencyType : "CNY"
}
TalkingDataSDK.onCancelOrder(order);
专属-授信(仅AdTracking)
接口说明
在用户完成授信的时候调用 TalkingDataSDK
的 onCredit
接口。
接口定义
TalkingDataSDK.onCredit(profileId, amount, content);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
amount | number | 否 | 授信额度 |
content | string | 否 | 授信信息,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onCredit("user01", 123456, "授信详情为……");
专属-交易(仅AdTracking)
接口说明
在用户进行交易时调用 TalkingDataSDK
的 onTransaction
接口。
接口定义
TalkingDataSDK.onTransaction(profileId, transaction);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
transaction | object | 是 | 交易事件属性 |
transaction 说明:
属性 | 参数类型 | 是否必选 | 描述 |
---|---|---|---|
transactionId | string | 否 | 交易ID,支持英文、数字、符号 |
category | string | 否 | 交易类别,支持中文、英文、数字、符号 |
amount | number | 否 | 交易金额,单位为所选货币的最小单位 例如:600分或100美分,币种以currencyType为标准 |
personA | string | 否 | 交易甲方,支持中文、英文、数字、符号 |
personB | string | 否 | 交易乙方,支持中文、英文、数字、符号 |
startDate | number | 否 | 交易起始时间戳(毫秒) |
endDate | number | 否 | 交易截止时间戳(毫秒) |
currencyType | string | 否 | 货币类型,请使用国际标准组织ISO 4217中规范的3位字母代码标记货币类型 详见【重点问题解答-问题1】 |
content | string | 否 | 交易信息,支持中文、英文、数字、符号 |
示例代码
var transaction = {
transactionId : "td_123456",
category : "定期",
amount : 3222,
personA : "张三",
personB : "金融平台",
startDate : 1565176907309,
endDate : 1565176908309,
currencyType : "CNY",
content : "交易详情为……"
}
TalkingDataSDK.onTransaction("user01", transaction);
专属-创建角色
接口说明
在用户创建角色的时候调用 TalkingDataSDK
的 onCreateRole
接口。
接口定义
TalkingDataSDK.onCreateRole(name);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
name | string | 否 | 角色名称,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onCreateRole("role01");
专属-通过关卡
接口说明
在用户通过设定的关卡的时候调用 TalkingDataSDK
的 onLevelPass
接口。
接口定义
TalkingDataSDK.onLevelPass(profileId, levelId);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
levelId | string | 否 | 关卡ID,支持英文、数字、符号 |
示例代码
TalkingDataSDK.onLevelPass("user01", "td_123456");
专属-完成新手教程
接口说明
在用户完成了新手教程的时候调用 TalkingDataSDK
的 onGuideFinished
接口。
接口定义
TalkingDataSDK.onGuideFinished(profileId, content);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
content | string | 否 | 教程信息,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onGuideFinished("user01", "新手教程顺利通过");
专属-课程学习(仅AdTracking)
接口说明
在用户进行课程学习的时候调用 TalkingDataSDK
的 onLearn
接口。
接口定义
TalkingDataSDK.onLearn(profileId, course, begin, duration);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
course | string | 否 | 课程信息,支持中文、英文、数字、符号 |
begin | number | 否 | 开始学习时间戳(毫秒) |
duration | number | 否 | 学习时长(秒) |
示例代码
TalkingDataSDK.onLearn("user01", "成人教育第一节", 1501234567890, 20);
专属-完成课程试听(仅AdTracking)
接口说明
在用户完成课程试听的时候调用 TalkingDataSDK
的 onPreviewFinished
接口。
接口定义
TalkingDataSDK.onPreviewFinished(profileId, content);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
content | string | 否 | 试听信息,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onPreviewFinished("user01", "基础课程试听结束");
专属-文章阅读(仅AdTracking)
接口说明
在用户进行文章阅读的时候调用 TalkingDataSDK
的 onRead
接口。
接口定义
TalkingDataSDK.onRead(profileId, book, begin, duration);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
book | string | 否 | 文章信息,支持中文、英文、数字、符号 |
begin | number | 否 | 开始阅读时间戳(毫秒) |
duration | number | 否 | 阅读时长(秒) |
示例代码
TalkingDataSDK.onRead("user01", "西游记第一章", 1501234567890, 20);
专属-完成免费阅读(仅AdTracking)
接口说明
在用户完成免费阅读的时候调用 TalkingDataSDK
的 onFreeFinished
接口。
接口定义
TalkingDataSDK.onFreeFinished(profileId, content);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
content | string | 否 | 阅读信息,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onFreeFinished("user01", "免费章节阅读结束");
专属-解锁成就
接口说明
在用户解锁成就的时候调用 TalkingDataSDK
的 onAchievementUnlock
接口。
接口定义
TalkingDataSDK.onAchievementUnlock(profileId, achievementId);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
achievementId | string | 否 | 成就ID,支持英文、数字、符号 |
示例代码
TalkingDataSDK.onAchievementUnlock("user01", "td_123456");
专属-浏览详情(仅AdTracking)
接口说明
在用户进行浏览详情的时候调用 TalkingDataSDK
的 onBrowse
接口。
接口定义
TalkingDataSDK.onBrowse(profileId, content, begin, duration);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
content | string | 否 | 详情信息,支持中文、英文、数字、符号 |
begin | number | 否 | 开始浏览时间戳(毫秒) |
duration | number | 否 | 浏览时长(秒) |
示例代码
TalkingDataSDK.onBrowse("user01", "详情页page1", 1501234567890, 20;
专属-完成试用体验(仅AdTracking)
接口说明
在用户完成了试用体验的时候调用 TalkingDataSDK
的 onTrialFinished
接口。
接口定义
TalkingDataSDK.onTrialFinished(profileId, content);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
profileId | string | 否 | 用户账号ID,支持英文、数字、符号 |
content | string | 否 | 体验信息,支持中文、英文、数字、符号 |
示例代码
TalkingDataSDK.onTrialFinished("user01", "试用体验结束");
高级-自定义事件
用途和用法
自定义事件用于追踪任何需要了解的用户行为,如:用户点击某功能按钮、填写某个输入框、触发了某个广告等。
自定义事件名称(EventID)
在 TalkingData 分析平台,无需提前在报表中定义自定义事件名称,调用追踪代码时直接写入事件ID即可。报表中事件管理页面支持对EventID重命名。
自定义事件数量限制
○ 系统最多支持计算1000个代码事件,默认识别前100个代码事件。超过这个限制后,新追踪到的代码事件均记录在“待处理事件“中,需要手动打开计算开关,系统才会开始计算。
○ “待处理事件”位置:“应用管理”->“事件管理” ->“待处理事件”。保留在“待处理事件”中的数据不参与计算。目前最多能支持同时记录9000个待处理事件。但是某些开发者在自定义事件名称中引入变量,而且变量取值非常离散时可能导致自定义事件的总量超过这个限制,系统将无法记录更多事件名称,导致无法找到这些事件并打开计算开关。
○ 对于不需要继续统计或待处理事件中不需要开始计算的代码事件,请及时处理。如果只是暂停计算,可以使用 【暂停计算】功能,如果不在需要可以使用【废弃】功能,暂停计算和废弃功能均支持重新恢复,但是废弃中的事件数据(含历史数据)不能被恢复。
自定义事件参数及其数量限制
事件参数可用于为事件添加详尽的描述信息,如描述行为发生时场景、状态或事件触发条件等。
支持设置参数,但并非必须调用。
每个事件下最多自动识别50个参数key(Android v2.2.15及以下、iOS v2.2.27及以下版本仅同时支持10对参数)。如果同一代码事件因不同版本等原因上传了不同key,报表最多可以显示100个key。每个key最多支持1000个以内的不同value。超过1000个value,将不在做计次运算,如果需要获取value明细值,可以前往日志导出获取。
自定义事件介绍
自定义事件是通过在代码中对每个需要追踪的自定义事件调用接口,传入相应参数从而实现对自定义事件追踪的方式。
接口说明
追踪用户基本行为时,调用 TalkingDataSDK
的 onEvent
接口。
接口定义
TalkingDataSDK.onEvent(eventId, parameters, eventValue);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
eventId | string | 是 | 自定义事件名称 最多包含64个字符,支持中文、英文、数字、下划线,但不能包含空格、特殊字符或其他的转义字符 |
parameters | object | 否 | 自定义事件的参数及参数取值 其中的key为字符串(string),value仅支持字符串(string)和数字(number)类型,其他类型则会被作为异常丢弃。 报表中将给出事件发生时每种value出现的频次。 在value取值较离散情况下(如示例中收集的促销价格信息),不要直接填充具体数值,而应划分区间后传入(如9.9元,可定义5~10元的价格区间,传入5~10元),否则value不同取值很可能超过平台最大数目限制,离散数据也对分析人员阅览数据造成影响 |
eventValue | object | 否 | (仅AdTracking)用户自定义事件参数 |
示例代码
示例1:
追踪某电商应用中首页的5个不同推广位置的点击次数,并收集宣传品的品类、促销价格等信息。因为是5个近似场景,添加了事件参数,而且对参数取值做了分组处理(如9.9元,可定义5~10元的价格区间,传入5~10元),避免取值太离散而影响分析甚至超过分析平台所支持的数量限制。调用如下:
var eventData1 = {};
eventData1["商品类别"] = "服装";
eventData1["price"] = "5~10";
TalkingDataSDK.onEvent("首页推荐位点击", eventData1, null);
var eventData2 = {};
eventData2["商品类别"] = "家电";
eventData2["price"] = "500~1000";
TalkingDataSDK.onEvent("首页推荐位点击", eventData2, null);
示例2:
在一款休闲游戏中记录玩家在各关卡中的失败数据,并收集玩家具体信息。调用如下:
var eventData = {};
eventData["等级"] = "20-30"; //级别区间
eventData["关卡名"] = "沼泽地阿卡村"; //关卡名称
eventData["失败原因"] = "主动退出"; //失败原因
eventData["coin"] = "10000~12000"; //携带金币数量
TalkingDataSDK.onEvent("战斗失败", eventData, null);
兼容AdTracking自定义事件(仅AdTracking)
原AdTracking预留了10个自定义事件,onCustEvent1
、onCustEvent2
、……、onCustEvent10
接口。
需通过当前自定义事件接口eventId参数传入 _cust1
、_cust2
、……、_cust10
值实现兼容。
示例:
var eventValue = {
key : "value"
}
TalkingDataSDK.onEvent("_cust1", null, eventValue);
TalkingDataSDK.onEvent("_cust2", null, eventValue);
TalkingDataSDK.onEvent("_cust3", null, eventValue);
TalkingDataSDK.onEvent("_cust4", null, eventValue);
TalkingDataSDK.onEvent("_cust5", null, eventValue);
TalkingDataSDK.onEvent("_cust6", null, eventValue);
TalkingDataSDK.onEvent("_cust7", null, eventValue);
TalkingDataSDK.onEvent("_cust8", null, eventValue);
TalkingDataSDK.onEvent("_cust9", null, eventValue);
TalkingDataSDK.onEvent("_cust10", null, eventValue);
全局参数(仅AppAnalytics)
接口说明
如果所有事件都需要传输相同的参数,可以设置全局的 key-value,这些 key-value 会自动添加到所有自定义事件中。
注意事项:如果 onEvent 接口传入的 key-value 的 key 和全局 key-value 的 key 冲突,以 onEvent 接口传入的为准。
接口定义
如果要设置全局 key-value 时,调用 TalkingDataSDK
的 setGlobalKV
方法。
TalkingDataSDK.setGlobalKV(key, value);
如果要移除全局 key-value 时,调用 TalkingDataSDK
的 removeGlobalKV
方法。
TalkingDataSDK.removeGlobalKV(key);
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
key | string | 是 | 全局参数的key |
value | object | 是 | 全局参数的value,仅支持字符串(string)和数字(number)类型 |
示例代码
// 设置全局 key-value
TalkingDataSDK.setGlobalKV("name", "nike");
TalkingDataSDK.setGlobalKV("level", 12);
// 移除全局 key-value
TalkingDataSDK.removeGlobalKV("name");
TalkingDataSDK.removeGlobalKV("level");
集成检查列表
● 确保正确调用了初始化(init)方法,并填入了正确的App ID。
● 测试渠道包数据,确保Channel ID添加正确,并确认该设备没有被计入其他的渠道中。
● 应用安装于设备后需要打开应用才可记录数据,测试过程确保您的设备网络连接正常。
● 通过检查logcat或console里输出的日志信息可帮助判定问题。
● TalkingData SDK会在初始化时会输出类似下边的日志,其中会显示SDK检测到的App ID和Channel ID。
Android
07-03 16:09:11.732 17106 17355 I TDLog : TalkingData SDK init...
07-03 16:09:11.732 17106 17355 I TDLog : SDK_VERSION is: Android+TD+V5.0.0 gp Type:Native
07-03 16:09:11.732 17106 17355 I TDLog : App ID is: 5CC519B5E89140058CD49244DFA95178
07-03 16:09:11.732 17106 17355 I TDLog : App Channel is: GooglePlay
07-03 16:09:11.732 17106 17355 I TDLog : SDK_OVC is: TDOVC+02f8c47c76990b100d7d365a654ea35d+SaaS
iOS
2021-09-11 08:46:24.276076 demo[1421:388033] TalkingData: SDK Version:5.0.0, MD5:TDOVC+bd963ef6c24fc64d76515680d4183eeb+SaaS
2021-09-11 08:46:24.276227 demo[1421:388033] TalkingData: init:320AE34C28B64CC4B7E53E7A171DCF1C channelId:AppStore custom:
● 当SDK成功向服务器传输数据时,会有类似下边的日志输出。
Android
07-03 16:09:11.820 17106 17358 I TDLog : New data found, Submitting...
07-03 16:09:11.967 17106 17358 I TDLog : Data submitted successfully!
iOS
2021-09-11 08:46:24.619865 demo[1421:388065] TalkingData: SDK Start sending data.
2021-09-11 08:46:24.706523 demo[1421:388065] TalkingData: SDK Send data success!
重点问题解答
1.支持哪些货币类型?
币种 currencyType 人民币 CNY 港元 HKD 台币 TWD 美元 USD 欧元 EUR 英镑 GBP 日元 JPY
2.集成SDK的应用,运行时会有TalkingData相关的日志,如何关闭?
解答:这些日志是用于帮助应用开发者检查是否正确集成了TalkingData SDK。
如果应用开发者希望关掉这些日志,可以调用setVerboseLogDisable
接口。
示例:TalkingDataSDK.setVerboseLogDisable()
3.参数支持传入哪些符号?
支持的符号有 ()()#&@-_.
为避免数据统计有误,请勿传入不支持的符号字符。