渠道追踪常见问题
|
收藏
1. 如何判断成功调用trackAppInstall接口
首先需要您们开发人员在您们的 App 中 ,调用 trackAppInstall 接口 ,用来采集 $AppInstall 事件。iOS 和 Android 文档: App 渠道追踪
注:
(1)如果使用精准匹配,iOS 端需要开启获取 IDFA 权限(您的 App 里需要引入 AdSupport 库);Android 端需要在代码里开启获取 IMEI 权限(即 Android SDK 文档中动态申请 android.permission.READ_PHONE_STATE )。
(2)不可以直接在 trackAppInstall 接口中给 utm_soure 等 utm 属性赋值。如果添加了这些赋值代码,App 激活时,就不会进行渠道匹配,而是使用代码中填写的渠道信息设置属性值。
(3)可把渠道包信息,直接设置为 $AppInstall 事件的属性,比如渠道属性 downloadChannel:huawei。
对于 Android 可以给应用商店上传带有标记的渠道包( apk 包),便于区分每个渠道的下载量。可以使用 DownloadChannel 来记录下载商店的渠道。这里 DownloadChannel 只是一个示例,如果需要多个字段来标记渠道包,请按业务实际需要添加。
XML
AndroidManifest.xml 中:
<meta-data android:name="YOUR_DOWNLOAD_CHANNEL" android:value="应用宝" />
1.1. Android 端
初始化 SDK 后,可以调用 trackAppInstall() 方法记录激活事件,多次调用此方法只会在第一次调用时触发激活事件:
JAVA
// 记录激活事件,无自定义属性
try {
// 触发激活事件
SensorsDataAPI.sharedInstance().trackAppInstall();
} catch (Exception e) {
e.printStackTrace();
}
// 记录激活事件,有自定义属性
try {
JSONObject properties = new JSONObject();
//这里的 DownloadChannel 负责记录下载商店的渠道,值应传入具体应用商店包的标记。如果没有为不同商店打多渠道包,则可以忽略该属性的代码示例。
properties.put("DownloadChannel", "XXX");
// 触发激活事件
SensorsDataAPI.sharedInstance().trackAppInstall(properties);
} catch (Exception e) {
e.printStackTrace();
}
1.2. iOS 端
初始化 SDK 后,可以调用 - trackAppInstall 方法记录激活事件,多次调用此方法只会在第一次调用时触发激活事件:
// 记录激活事件,无自定义属性
[[SensorsAnalyticsSDK sharedInstance] trackAppInstall];
// 记录激活事件,有自定义属性
[[SensorsAnalyticsSDK sharedInstance] trackAppInstallWithProperties:@{@"DownloadChannel": @"AppStore"}];
注意: 一定不要在调用 trackAppInstall 接口时传入 $utm_
相关的属性。如果要追踪推广渠道,需要用 App 渠道链接来追踪(推广的渠道链接一般由产品运营人员创建)
$AppInstall 事件采集成功后,可以在神策系统查看是否有相应的 AppInstall 事件(即 App 激活事件):
2. 如何切换 trackAppInstall 接口
2.1. Android 端
由 trackInstallation 接口改为 trackAppInstall() 接口记录激活事件,多次调用此方法只会在第一次调用时触发激活事件:
// 记录激活事件,无自定义属性
try {
// 触发激活事件
SensorsDataAPI.sharedInstance().trackAppInstall();
} catch (Exception e) {
e.printStackTrace();
}
// 记录激活事件,有自定义属性
try {
JSONObject properties = new JSONObject();
//这里的 DownloadChannel 负责记录下载商店的渠道,值应传入具体应用商店包的标记。如果没有为不同商店打多渠道包,则可以忽略该属性的代码示例。
properties.put("DownloadChannel", "XXX");
// 触发激活事件
SensorsDataAPI.sharedInstance().trackAppInstall(properties);
} catch (Exception e) {
e.printStackTrace();
}
2.2. iOS 端
由- trackInstallation: 接口改为- trackAppInstall 接口记录激活事件,多次调用此方法只会在第一次调用时触发激活事件:
// 记录激活事件,无自定义属性
[[SensorsAnalyticsSDK sharedInstance] trackAppInstall];
// 记录激活事件,有自定义属性
[[SensorsAnalyticsSDK sharedInstance] trackAppInstallWithProperties:@{@"DownloadChannel": @"AppStore"}];
2.3. 事件名修改
事件名由自定义事件 AppInstall 改为预置事件 $AppInstall 事件
若用原记录的激活事件名不是 $AppInstall,需要使用虚拟事件将原激活事件和 $AppInstall 合并分析数据,具体咨询神策技术支持
3. 如何在神策查询渠道匹配成功对应的 App 激活事件?
在神策分析的对应项目中,选择 AppInstall 或 App 激活事件,按以下方式查看
App 激活事件匹配成功查询结果应如下显示正确的 utm 渠道参数值,并且渠道追踪匹配模式为精确匹配。如果两者没有同时显示,比如广告系列来源为【未知】、渠道追踪匹配模式为模糊匹配或【未知】,说明渠道追踪精准匹配失败,请联系神策值班同学,进一步排查精准匹配失败原因。
4. 如何接收广告商的其他参数
如果客户想要接收广告商的其他参数用于分析,例如获取对应的广告计划 id(AID) 以区分不同的广告计划,可按照下面的方式实现。
下列以头条为例进行说明。
4.1. 方案一:使用神策预置的 utm 属性存放对应的参数
1、在渠道管理工具中,选择今日头条/抖音渠道,并且根据 今日头条的对接文档 将想要接收的其他参数(例如 广告计划 ID)的宏(__AID__)填写到 神策预置的 utm_ 属性下,生成对应的监测链接。
2、渠道匹配成功后,对应的 utm_ 属性下的值,即为接收的第三方渠道参数的值(例如 广告计划 ID: AID)
4.2. 方案二:使用自定义属性存放对应的参数
1、在渠道管理工具中,选择今日头条/抖音渠道,并且根据 今日头条的对接文档 将想要接收的其他参数(例如 广告计划 ID)的宏(__AID__)填写到 自定义属性下,生成对应的监测链接。
2、渠道匹配成功后,对应的自定义属性下的值,即为接收的第三方渠道参数的值(例如 广告计划 ID:AID)
5. 广点通中如何获取下列6个参数
参数名 | 参数的参考值 |
---|---|
account_id | 8683590 |
client_id | 110787531 |
client_secret | 9IPQ0VP7INuYY6SA |
user_action_set_id( iOS 的) | 110781921 |
user_action_set_id( Android 的) | 1107817601 |
refresh_token | b8b393938dc3a4ddfc0b7e8abb721e92 |
具体参数含义可参考此文档:
https://developers.e.qq.com/docs/apilist/auth/oauth2#a2
client_id 和 client_secret 在应用程序管理页面获取(一定要等 App 审核通过,才会有对应的 client_id 和 client_secret ):
refresh_token 和 account_id
获取 refresh_token 和 account_id 之前,需要先获取 Authorization Code,然后通过 Authorization Code 获取 refresh_token 和 account_id。具有可参考此文档:
https://developers.e.qq.com/docs/apilist/auth/oauth2#a2
(1) Authorization Code 获取方法:
在浏览器的地址中,输入该请求。
|
其中 state=<STATE>
scope=<SCOPE>
两个参数可以去掉。
比如您的client_id=123456
,回调地址是 https://www.example.com
,
那么浏览器地址栏中输入如下地址:
|
输入链接之后,浏览器页面会跳转至 redirect_uri 对应的系统或页面,同时携带 authorization_code (有效期 5 分钟)
https://www.example.com/?[authorization_code=xxxxx&state=
(2) 使用 Authorization Code 获取 refresh_token 、account_id 和 access_token。
在终端命令(mac 电脑)或者 cmd 命令提示符中(windows 电脑)输入如下请求:
|
以上 <CLIENT_ID>
、<CLIENT_SECRET>
、<authorization_code>
、<回调地址>
,填写具体的参数
上述请求可以获取到 refresh_token 和 account_id 返回结果示例如下:
user_action_set_id ( iOS APP 的参数)
在终端命令(mac 电脑)或者 cmd 命令提示符中( windows 电脑)输入如下请求:
|
其中 <ACCESS_TOKEN>
、<ACCOUNT_ID> 填写具体的值。<TIMESTAMP> 填写当前时间戳(可以百度搜索获取),<NONCE> 是一个随机数,随意填写就行。每次请求时,这个随机数都需要变更。<应用商店的 ID>:IOS:App Store id;ANDROID:应用宝 id 。
具体可参考此文档 :https://developers.e.qq.com/docs/apilist/user_data/user_action_set
user_action_set_id (android App 的参数)
在终端命令(mac 电脑)或者 cmd 命令提示符中( windows 电脑)输入如下请求:
|
其中 <ACCESS_TOKEN>
、<ACCOUNT_ID> 填写具体的值。<TIMESTAMP> 填写当前时间戳(可以百度搜索获取),<NONCE> 是一个随机数,随意填写就行。每次请求时,这个随机数都需要变更。<应用商店的 ID>:IOS:App Store id;ANDROID:应用宝 id 。
注意:user_action_set_id 一个账户下只能创建一个(每个 App只能创建一个,如果一个账号有2个 App,iOS 和 android 各 2 个,那么会有 4 个 user_action_set_id),创建后不能编辑和删除,上面的 add 接口为创建接口,如果之后想要再次查询 user_action_set_id,可以使用下面的 get 接口获取
|
其中 <ACCESS_TOKEN>
、<ACCOUNT_ID> 填写具体的值。<TIMESTAMP> 填写当前时间戳(可以百度搜索获取),<NONCE> 是一个随机数,随意填写就行。每次请求时,这个随机数都需要变更。
请求以及返回结果的示例如下:
6. 如何实现客户从微信获取 access_token 并自动同步给神策
6.1. 第⼀步:获取 api_secret
6.2. 第二步:获取同步地址
将同步地址 url 中的参数 copy 出来,http://localhost:8107/api/v2/sa/channel_token?project=default&app_id=123abc,把红色值 copy 出来;
6.3. 第三步,请求同步
6.3.1. 直接 curl 命令请求(示例如下)
curl -H "Content-Type:application/json" -X POST -d '{"access_token": "xxx","project":"xxx","app_id":"xxx"}' '同步地址&token=xxx'
参数解释:
access_token:根据您实际的 access_token 填写
project:根据您实际的神策项⽬填写
app_id:根据您实际的 app_id 填写
同步地址:第二步获取的同步地址
token:第一步获取的 api_secret
最终请求命令组合完毕:
curl -H "Content-Type:application/json" -X POST -d '{"access_token": "x1x1x1x1x1x1x1x1","project":"default","app_id":"123abc"}' 'http://localhost:8107/api/v2/sa/channel_token?project=default&app_id=123456abc&token=x2x2x2x2x2x2x2x2'
6.3.2. 使用 postman ⼯具发请求(示例如下)
选择 POST 方式,地址栏中填写http://localhost:8107/api/v2/sa/channel_token?project=default&app_id=123456abc&token=x2x2x2x2x2x2x2x2,填写参数形式选择 Body 的 raw 选项,输入 access_token、project、app_id 的 json 格式数据。
注意:access_token、api_secret如有发生变化,请重新同步。
7. 后端埋点的深度回传事件配置
自 SA 版本:2.1.4874 起,渠道追踪新增了深度回传事件区分多 App 回传的逻辑。
若您将后端埋点的事件配成深度回传事件,确保该事件可成功回调,需您在后端埋点的深度回传事件上报时必须加上 $app_id 属性回传。
请调用下列客户端 SDK 的方法获取 $app_id ,避免手动输入错误导致无法成功回传:
- Android 端获取方法:context.getApplicationInfo().processName
- iOS 端获取方法:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"]
8. iOS 14 相关问题
1、当 IDFA 无法追踪时,匿名ID用什么?
神策会调用 IDFV 作为匿名设备 ID 进行采集,当 IDFV 也无法采集的情况会使用 UUID 进行兜底。
2、IDFA 无法追踪后,对渠道投放有什么影响?
除IDFA外,神策目前已经支持CAID作为精确匹配的方式之一,CAID是中国广告协会与中国信息通信研究院联合研究机构、广告产业链各方提出中国广告协会互联网广告标识(CAA Advertising ID,简称 CAID)方案,可以自愿选择是否接入CAID,申请官网:http://www.cnaa123.com/。
已经支持的渠道:头条/抖音、广点通、快手。
对于不接入CAID的客户,神策精准匹配功能失效,会默认使用模糊匹配原理进行兜底。
注:本文档内容为神策产品使用和技术细节说明文档,不包含适销类条款;具体企业采购产品和技术服务内容,以商业采购合同为准。