### GET 请求回传地址配置示例
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zdymtqdpz
展示如何根据不同的回调地址格式拼接 SAT 宏参数。
```text
http://doc.hyxt666.com/callback?appid=1020&f=0febd140dfaf70a84c2de9544b1fb2be&event_type=__ACTION_VALUE__
```
```text
__CALLBACK_URL__event_type=__ACTION_VALUE__
```
```text
__CALLBACK_URL__&event_type=__ACTION_VALUE__
```
```text
__CALLBACK_URL__?event_type=__ACTION_VALUE__
```
--------------------------------
### GET 请求地址编码示例
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zdymtqdpz
展示如何使用 scEncode 函数对 SAT 宏参数进行编码处理。
```text
https://xxx.xx.xx/track?conb_ext=scEncode(__CALLBACK_URL__)&ss=bbb
```
--------------------------------
### Android 调用 trackAppInstall 记录激活事件
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/sjyjswt
Android 端初始化 SDK 后调用 trackAppInstall() 记录激活事件,多次调用只在第一次触发。示例包含无自定义属性和带 DownloadChannel 自定义属性的两种调用方式。
```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();
}
```
--------------------------------
### iOS 调用 trackAppInstall 记录激活事件
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/sjyjswt
iOS 端初始化 SDK 后调用 - trackAppInstall 方法记录激活事件,多次调用只在第一次触发。示例包含无自定义属性和带 DownloadChannel 自定义属性的两种调用方式。
```Objective-C
// 记录激活事件,无自定义属性
[[SensorsAnalyticsSDK sharedInstance] trackAppInstall];
// 记录激活事件,有自定义属性
[[SensorsAnalyticsSDK sharedInstance] trackAppInstallWithProperties:@{@"DownloadChannel": @"AppStore"}];
```
--------------------------------
### 集成并初始化微信小程序 SDK
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/jczcjcxcx
通过引入 SDK 核心文件及 SAT 渠道插件,并调用 sensors.init 方法完成初始化配置。
```javascript
// 先 import 微信小程序的代码
import sensors from '/dist/wechat/sensorsdata.esm.js';
// 再引入 SAT 渠道插件的代码
import channel from '/dist/wechat/plugin/ad-channel/index.esm';
// 使用 SAT 渠道插件的代码
sensors.use(channel);
// 初始化微信小程序 SDK
sensors.init({ //.... })
```
--------------------------------
### 集成并初始化抖音小程序 SDK
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/JLscAC2M
在抖音小程序中引入神策 SDK 和 SAT 渠道插件,并使用 sensors.use() 注册插件后进行初始化。要求 SDK 版本为 0.14.7 或更高。
```javascript
// 先 import 抖音或者其他小程序的代码
import sensors from '/dist/mp-bytedance/index.esm.js';
// 再在对应的抖音或者其他小程序目录中找到 plugin/sat-channel ,引入 SAT 渠道插件的代码
import channel from '/dist/mp-bytedance/plugin/sat-channel/index.esm.js';
// 使用 SAT 渠道插件的代码
sensors.use(channel);
// 初始化微信小程序 SDK
sensors.init({ //.... })
```
--------------------------------
### 获取华为归因信息并触发激活事件
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/hwznfb
查询华为应用市场 content provider 获取归因信息,并触发神策激活事件。需要传入目标包名 pkgName。注意:trackId 仅在 10.5.0.300 及之后版本存在。
```java
private static final String PROVIDER_URI ="content://com.huawei.appmarket.commondata/item/5";
private static final int INDEX_ENTER_AG_TIME = 1;
private static final int INDEX_INSTALLED_FINISH_TIME = 2;
private static final int INDEX_START_DOWNLOAD_TIME= 3;
private static final int INDEX_TRACKID = 4;
private static final int INDEX_REFERRER_EX = 5;
/**
* 获取华为归因信息并触发神策激活事件
* @param pkgName 目标包名
*/
private String trackAppInstall(String pkgName) {
String trackId = null;
Cursor cursor = null;
Uri uri = Uri.parse(PROVIDER_URI);
ContentResolver contentResolver = getContentResolver();
String packageName[] = new String[] { pkgName };
JSONObject channelJSON = new JSONObject();
try {
// 查询归因信息
cursor = contentResolver.query(uri, null, null, packageName, null);
if (cursor != null) {
cursor.moveToFirst();
Log.i(TAG, "packageName= " + pkgName);
if (cursor.getColumnCount() > INDEX_TRACKID) {
// 10.5.0.300 及之后版本,之前版本无 trackId
JSONObject attributionJSON = new JSONObject();
attributionJSON.put("channel_name", "huawei_appstore_track");
attributionJSON.put("enter_ag_time", cursor.getString(INDEX_ENTER_AG_TIME));
attributionJSON.put("installed_finish_time", cursor.getString(INDEX_INSTALLED_FINISH_TIME));
attributionJSON.put("download_time", cursor.getString(INDEX_START_DOWNLOAD_TIME));
attributionJSON.put("trackId", new JSONObject(cursor.getString(INDEX_TRACKID)));
attributionJSON.put("referrer_ex", cursor.getString(INDEX_REFERRER_EX));
channelJSON.put("$sat_media_attribution_info", attributionJSON.toString());
}
}
}catch(Exception e){
//处理异常
} finally {
if (cursor != null) {
cursor.close();
}
}
//触发神策激活事件
SensorsDataAPI.sharedInstance().trackAppInstall(channelJSON);
}
```
--------------------------------
### 集成 Web JS SDK 与渠道插件配置
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/jcqdjcweb
通过 script 标签引入 SDK 和插件,并在初始化时配置 server_url、微信广告渠道采集以及启用插件。
```html
```
--------------------------------
### AndroidManifest.xml 配置渠道包标记
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/sjyjswt
在 AndroidManifest.xml 中配置渠道包标记,用于区分不同应用商店的下载渠道。示例中 name 为 YOUR_DOWNLOAD_CHANNEL,value 为应用宝,实际使用时请按业务需要修改。
```XML
```
--------------------------------
### iOS SDK 初始化与 DeepLink 处理
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zyxgcpz
iOS 端初始化神策 SDK,配置自动采集事件、日志、广告渠道 URL 和广告配置(再营销、唤醒 URL)。设置 DeepLink 回调并手动调用 requestDeferredDeepLink 开启 Deferred DeepLink 功能,建议在完成权限授权后调用。同时实现 openURL、continueUserActivity 和 openURL:sourceApplication: 方法,通过 handleSchemeUrl 处理 Scheme URL 和 Universal Link。
```objective-c
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
SAConfigOptions *configOptions = [[SAConfigOptions alloc] initWithServerURL:Sa_Default_ServerURL launchOptions:launchOptions];
configOptions.autoTrackEventType = SensorsAnalyticsEventTypeAppStart | SensorsAnalyticsEventTypeAppEnd | SensorsAnalyticsEventTypeAppClick | SensorsAnalyticsEventTypeAppViewScreen;
configOptions.enableLog = YES;
configOptions.customADChannelURL = @"https://lyslink5.debugbox.sensorsdata.cn";//神策Saas域名
SAAdvertisingConfig *adConfig = [[SAAdvertisingConfig alloc] init];
adConfig.enableRemarketing = YES;//开启再营销功能
//如果 SDK 需要延迟初始化,请记录拉起 App 时的 url,并在初始化时传入 SDK,SDK 如果非延迟初始化,无需设置此项
adConfig.wakeupUrl = @"延迟初始化SDK 时唤起 app 的 url";
options.advertisingConfig = adConfig;
[SensorsAnalyticsSDK startWithConfigOptions:options];
/// @param obj.params 创建渠道链接时填写的参数
/// @param obj.adChannels 归因数据,当前只有 Deferred DeepLink 会返回归因数据
/// @param obj.success 请求渠道信息是否成功
/// @param obj.appAwakePassedTime 本次请求时长
/// @return 根据返回的应用内参数,是否正确跳转至对应页面。跳转成功返回 YES,未跳转返回 NO
[[SensorsAnalyticsSDK sharedInstance] setDeepLinkCompletion:^BOOL(SADeepLinkObject * _Nullable obj) {
return YES;
}];
//建议在完成权限授权(设备、网络等)后手动调用
[SensorsAnalyticsSDK.sharedInstance requestDeferredDeepLink:@{"tid":"xxx"}];
return YES;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options {
// 业务相关逻辑处理
if ([[SensorsAnalyticsSDK sharedInstance] handleSchemeUrl:url]) {
return YES;
}
return YES;
}
- (BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void (^)(NSArray*))restorationHandler {
// 业务相关逻辑处理
if ([[SensorsAnalyticsSDK sharedInstance] handleSchemeUrl:userActivity.webpageURL]) {
return YES;
}
return YES;
}
- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation {
// 业务相关逻辑处理
if ([[SensorsAnalyticsSDK sharedInstance] handleSchemeUrl:url]) {
return YES;
}
return YES;
}
```
--------------------------------
### POST 归因数据订阅回调接口
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/gysjdy
数据使用方需提供一个 HTTP 或 HTTPS 的 POST 接口,用于接收神策广告分析服务推送的归因事件数据。请求体为 JSON LIST,每条记录包含一条归因事件的结构化数据。接口必须在 2 秒内返回,且仅 HTTP 200 状态码视为成功。
```APIDOC
## [POST] 归因数据订阅回调接口
### Description
数据使用方需提供一个可通过公网访问的 HTTP 或 HTTPS POST 接口,用于接收神策广告分析 SaaS 服务实时推送的归因事件数据。请求体为 JSON LIST,每条记录包含一条归因事件的结构化数据。接口必须在 2 秒内返回,且仅 HTTP 200 状态码视为成功。
### Method
POST
### Endpoint
由数据使用方提供,需可通过公网访问
### Parameters
#### Request Body
- **data_type** (string) - Required - 订阅的事件类型,attribution 表示归因事件
- **lib** (object) - Optional - 事件上报的原始 lib 信息,不一定全部字段都有,用户一般不需关注
- **distinct_id** (string) - Required - distinct id
- **type** (string) - Required - 原始事件的 type
- **event** (string) - Required - 事件名,归因场景就是归因事件名
- **time** (number) - Required - 归因事件发生的时间
- **recv_time** (number) - Required - 事件接收的时间
- **ngx_ip** (string) - Optional - 客户端 IP
- **process_time** (number) - Required - 处理时间,如归因事件则为归因处理的时间
- **user_id** (number) - Required - 用户 ID
- **project_id** (number) - Required - 项目 ID
- **properties** (object) - Required - 归因事件的原始属性
- **attribution_info** (array) - Required - 归因信息,包括渠道属性等,注意一次归因可能会有多条记录,对应多个归因场景
### Request Example
```
[{
"data_type":"attribution",
"lib":{
"lib":"Android"
},
"distinct_id":"BzrbBtllfE",
"type":"track",
"event":"$AppInstall",
"time":1670236279828,
"recv_time":1670236343489,
"ngx_ip":"204.180.31.29",
"process_time":1670236347765,
"user_id":4209889997192905273,
"project_id":2,
"properties":{
"$browser_version":"87.0.4280.101",
"$os_version":"10",
"$city":"未知",
"$model":"MIUI,12",
"$os":"Android",
"$matching_key_list":"p_2#ios_ins_0a52cf2bf19cb1fe31a16015a71bb454_com.xyh.test,p_2#ios_ins_d17156f9b5fb95b2742ada3e4a2dfcf9_com.xyh.test,p_2#ios_ins_FB8023C30F80B29D6FD3280BF46B4B47_com.xyh.test,p_2#ios_ins_D17156F9B5FB95B2742ADA3E4A2DFCF9_com.xyh.test,p_2#ios_ins_f1e9a9f5bd5dcea0bf2b3ebd1a3739be_com.xyh.test,p_2#ios_ins_a1f13c36909d2c9b4560baeb61d682d8_com.xyh.test,p_2#ios_ins_C99F87B6E7B1E2814873C3A5D1FF740E_com.xyh.test,p_2#ios_ins_A1F13C36909D2C9B4560BAEB61D682D8_com.xyh.test,p_2#ios_ins_834422673847602_com.xyh.test,p_2#ios_ins_e8c764cf395e0cb6308bac0556f156b3_com.xyh.test,p_2#ios_ins_E8C764CF395E0CB6308BAC0556F156B3_com.xyh.test,p_2#ios_ins_7527dfeebf5fcc90cc8b8de5724fe5d3_com.xyh.test,p_2#ios_ins_8F4FDAAC04FD191200D0B6CBCCBD88ED_com.xyh.test,p_2#ios_ins_aae989f614457d4a51ff6802e8c86156_com.xyh.test,p_2#ios_ins_AAE989F614457D4A51FF6802E8C86156_com.xyh.test,p_2#ios_ins_0a52cf2bf19cb1fe31a16015a71bb454,p_2#ios_ins_d17156f9b5fb95b2742ada3e4a2dfcf9,p_2#ios_ins_FB8023C30F80B29D6FD3280BF46B4B47,p_2#ios_ins_D17156F9B5FB95B2742ADA3$",
"$ip":"204.180.31.29",
"$browser":"Chrome Webview",
"$user_agent":"Mozilla/5.0 (Linux; Android 10; M2007J22C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.101 Mobile Safari/537.36",
"$app_version":"1.0.0",
"$lib":"Android",
"$country":"美国",
"$app_name":"神策商城 - 可视化&点击图",
"$province":"未知",
"$app_id":"com.xyh.test",
"$is_login_id":false,
"$manufacturer":"Android",
"$ad_fuzzy_user_id":"204_180_31_29_10"
},
"attribution_info":[
{
"sd_matched_key":"FM#2#0#204.180.31.29",
"sd_channel_utm_medium":"hjhjk",
"sd_channel_campaign_id":"456456456",
"sd_channel_active_period_day":30,
"sd_channel_adgroup_name":"435345",
"sd_channel_adgroup_id":"123123",
"sd_channel_utm_campaign":"数据订阅测试",
"sd_channel_utm_term":"特尔马",
"sd_channel_name":"baidu_sem_track",
"sd_channel_ad_name":"435345",
"sd_channel_account_name":"",
"sd_channel_link_id":"6wt2ytma",
"sd_utm_matching_type":"设备指纹模糊匹配-baidu_sem_track",
"sd_channel_campaign_name":"56765767",
"sd_channel_utm_content":"hjkhjkhjk",
"sd_channel_ad_id":"407714081",
"sd_channel_utm_source":"所思123",
"sd_channel_link_type":"app",
"sd_channel_attribute_period_hour":168,
"sd_channel_account_id":"45345",
"sd_channel_keyword":"",
"sd_channel_keyword_id":"",
"sd_channel_click_id":"345345435464",
"channel_task_type":0,
"channel_order_id":"",
"channel_term":"",
"channel_demand_id":"",
"channel_item_id":""
}
]
}]
```
### Response
#### Success Response (200)
- 返回 HTTP 200 状态码表示成功
#### Error Response
- 返回非 200 状态码均视为失败
### Notes
- API 内容均为 UTF-8 编码
- 回调 API 由于网络抖动等原因可能出现数据重复
- 接口必须在 2 秒内返回,否则被认为服务异常进行降级处理
```
--------------------------------
### 使用 curl 导出 events 表数据
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/yhsjggsjdc
通过 POST 请求执行 SQL 查询以导出包含渠道属性的事件数据。建议通过 date 字段按天导出以提高查询速度。
```bash
curl 'https://saasdemo.cloud.sensorsdata.cn/api/sql/query?token=******&project=default' \
-X POST \
--data-urlencode "q=SELECT sd_channel_name,sd_channel_link_id,time,distinct_id,event FROM events where sd_channel_name is NOT NULL and time > '2022-01-01 00:00:00' limit 5 /*MAX_QUERY_EXECUTION_TIME=1800*/" \
--data-urlencode "format=json" \
>> event.json
```
--------------------------------
### Android SDK 初始化与 Deferred DeepLink 配置
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zyxgcpz
Android 端初始化神策 SDK,配置自动采集事件、日志、广告渠道 URL、崩溃追踪、JavaScript 桥接、可视化全埋点及广告配置(再营销和唤醒 URL)。随后设置 DeepLink 回调并手动调用 requestDeferredDeepLink 开启 Deferred DeepLink 功能,注意需在完成权限授权后调用。
```java
SAConfigOptions configOptions = new SAConfigOptions(SA_SERVER_URL);
// 打开自动采集, 并指定追踪哪些 AutoTrack 事件
configOptions.setAutoTrackEventType(SensorsAnalyticsAutoTrackEventType.APP_START|SensorsAnalyticsAutoTrackEventType.APP_END |SensorsAnalyticsAutoTrackEventType.APP_CLICK|SensorsAnalyticsAutoTrackEventType.APP_VIEW_SCREEN)
.enableLog(true)
.setCustomAdChannelUrl("https://satxyh183.debugbox.sensorsdata.cn")//设置 URL,神策Saas域名,具体由神策售后团队提供
.enableTrackAppCrash()
.enableJavaScriptBridge(true)
.enableVisualizedAutoTrack(true)
.setAdvertConfig(new SAAdvertisingConfig()
.enableRemarketing()//开启再营销
.setWakeupUrl("延迟初始化SDK 时唤起 app 的 url")// 如果 SDK 需要延迟初始化,请记录拉起 App 时的 url,并在初始化时传入 SDK,SDK 如果非延迟初始化,无需设置此项
);
SensorsDataAPI.startWithConfigOptions(this, configOptions);
//设置数据回调
SensorsDataAPI.sharedInstance().setDeepLinkCompletion(new SensorsDataDeferredDeepLinkCallback() {
@Override
public boolean onReceive(SADeepLinkObject saDeepLinkObject) {
return true;
}
});
//开启 Deferred DeepLink 功能,注意:在完成权限授权 (设备、网络等) 后手动调用
SensorsDataAPI.sharedInstance().requestDeferredDeepLink({"tid":"xxx"});
```
--------------------------------
### iOS 设置 DeepLink/Deferred Deeplink 数据回调 setDeepLinkCompletion
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zyxgcpz
在 iOS 端调用 setDeepLinkCompletion: 方法获取创建渠道链接时填写的 App 内参数信息,返回布尔值表示是否成功跳转。
```objectivec
/// @param obj.params 创建渠道链接时填写的参数
/// @param obj.adChannels 归因数据,当前只有 Deferred DeepLink 会返回归因数据
/// @param obj.success 请求渠道信息是否成功
/// @param obj.appAwakePassedTime 本次请求时长
/// @return 根据返回的应用内参数,是否正确跳转至对应页面。跳转成功返回 YES,未跳转返回 NO
[[SensorsAnalyticsSDK sharedInstance] setDeepLinkCompletion:^BOOL(SADeepLinkObject * _Nullable obj) {
return YES;
}];
```
--------------------------------
### 点击监测链接示例
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/qdtgjs
这是一个包含固定参数、宏参数、utm参数和自定义参数的完整监测链接示例。请勿直接使用此链接进行实际投放。
```text
https://satetedataflow.debugbox.sensorsdata.cn/ad/track?channel_name=baidu_sem_track&channel_link_type=app&hash_key=9Y7pDLTJZNEWa9DhR2cJ&callback_id=cz0LfEmn&_channel_app_id=cn.sensorscloud.calendar&_data_version=0.4.0&callbacks=%24AppInstall%2Cregister&project=production&_channel_track_key=kbY0bv8O&link_version=1&channel_keyword_id={{WORDID}}&os={{OS}}&ip={{IP}}&ua={{UA}}&channel_account_id={{USER_ID}}&channel_campaign_id={{PLAN_ID}}&callback_url={{CALLBACK_URL}}&channel_click_id={{CLICK_ID}}&click_time={{TS}}&channel_ad_id={{IDEA_ID}}&imei={{IMEI_MD5}}&model={{DEVICE_INFO}}&android_id={{ANDROID_ID_MD5}}&oaid={{OAID}}&channel_adgroup_id={{UNIT_ID}}&channel_utm_source=baidu&tuiguang_name=xiaoming
```
--------------------------------
### iOS 获取 Deferred DeepLink 信息 requestDeferredDeepLink
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zyxgcpz
在 iOS 端通过 SensorsAnalyticsSDK 的 requestDeferredDeepLink 方法开启 Deferred DeepLink 功能,需设置 tid 参数。建议在权限授权后手动调用,仅安装后首次打开有效。
```objectivec
// 建议在完成权限授权(设备、网络等)后手动调用
//参数中需要设置SAT Saas租户信息tid,具体租户ID信息由神策售后团队提供
[SensorsAnalyticsSDK.sharedInstance requestDeferredDeepLink:@{"tid":"xxx"}];
```
--------------------------------
### iOS 设置广告自定义域名 customADChannelURL
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zyxgcpz
在 iOS 端通过 SAConfigOptions 的 customADChannelURL 属性设置 SAT 请求 URL,需替换为真实 SAT 地址。
```objectivec
configOptions.customADChannelURL = @"https://lyslink5.debugbox.sensorsdata.cn";//需替换成真实SAT地址
```
--------------------------------
### Android 设置 DeepLink/Deferred Deeplink 数据回调 setDeepLinkCompletion
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zyxgcpz
在 Android 端通过 SensorsDataAPI 的 setDeepLinkCompletion 方法设置数据回调,返回布尔值表示是否成功跳转。
```java
//设置数据回调
SensorsDataAPI.sharedInstance().setDeepLinkCompletion(new SensorsDataDeferredDeepLinkCallback() {
/**
* @saDeepLinkObject deepLink 请求数据实体
*/
@Override
public boolean onReceive(SADeepLinkObject saDeepLinkObject) {
return true;
}
});
```
--------------------------------
### 归因事件数据结构示例
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/gysjdy
展示了通过 Push API 推送的归因事件 JSON 结构,包含事件类型、原始属性及详细的归因渠道信息。
```json
[{
"data_type":"attribution", //订阅的事件类型,attribution表示归因事件
"lib":{ //事件上报的原始lib信息,不一定全部字段都有,用户一般不需关注
"lib":"Android"
},
"distinct_id":"BzrbBtllfE", //distinct id
"type":"track", //原始事件的type
"event":"$AppInstall", //事件名,归因场景就是归因事件名
"time":1670236279828, //归因事件发生的时间
"recv_time":1670236343489, //事件接收的时间
"ngx_ip":"204.180.31.29", //
"process_time":1670236347765, //处理时间,如归因事件则为归因处理的时间
"user_id":4209889997192905273,
"project_id":2,
"properties":{ //归因事件的原始属性
"$browser_version":"87.0.4280.101",
"$os_version":"10",
"$city":"未知",
"$model":"MIUI,12",
"$os":"Android",
"$matching_key_list":"p_2#ios_ins_0a52cf2bf19cb1fe31a16015a71bb454_com.xyh.test,p_2#ios_ins_d17156f9b5fb95b2742ada3e4a2dfcf9_com.xyh.test,p_2#ios_ins_FB8023C30F80B29D6FD3280BF46B4B47_com.xyh.test,p_2#ios_ins_D17156F9B5FB95B2742ADA3E4A2DFCF9_com.xyh.test,p_2#ios_ins_f1e9a9f5bd5dcea0bf2b3ebd1a3739be_com.xyh.test,p_2#ios_ins_a1f13c36909d2c9b4560baeb61d682d8_com.xyh.test,p_2#ios_ins_C99F87B6E7B1E2814873C3A5D1FF740E_com.xyh.test,p_2#ios_ins_A1F13C36909D2C9B4560BAEB61D682D8_com.xyh.test,p_2#ios_ins_834422673847602_com.xyh.test,p_2#ios_ins_e8c764cf395e0cb6308bac0556f156b3_com.xyh.test,p_2#ios_ins_E8C764CF395E0CB6308BAC0556F156B3_com.xyh.test,p_2#ios_ins_7527dfeebf5fcc90cc8b8de5724fe5d3_com.xyh.test,p_2#ios_ins_8F4FDAAC04FD191200D0B6CBCCBD88ED_com.xyh.test,p_2#ios_ins_aae989f614457d4a51ff6802e8c86156_com.xyh.test,p_2#ios_ins_AAE989F614457D4A51FF6802E8C86156_com.xyh.test,p_2#ios_ins_0a52cf2bf19cb1fe31a16015a71bb454,p_2#ios_ins_d17156f9b5fb95b2742ada3e4a2dfcf9,p_2#ios_ins_FB8023C30F80B29D6FD3280BF46B4B47,p_2#ios_ins_D17156F9B5FB95B2742ADA3$",
"$ip":"204.180.31.29",
"$browser":"Chrome Webview",
"$user_agent":"Mozilla/5.0 (Linux; Android 10; M2007J22C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.101 Mobile Safari/537.36",
"$app_version":"1.0.0",
"$lib":"Android",
"$country":"美国",
"$app_name":"神策商城 - 可视化&点击图",
"$province":"未知",
"$app_id":"com.xyh.test",
"$is_login_id":false,
"$manufacturer":"Android",
"$ad_fuzzy_user_id":"204_180_31_29_10"
},
"attribution_info":[ //归因信息,包括渠道属性等,注意一次归因可能会有多条记录,对应多个归因场景
{
"sd_matched_key":"FM#2#0#204.180.31.29", //渠道归因结果使用的key
"sd_channel_utm_medium":"hjhjk", //广告系列媒介(SAT)
"sd_channel_campaign_id":"456456456", //渠道广告计划id
"sd_channel_active_period_day":30, //渠道有效激活窗口期(天)
"sd_channel_adgroup_name":"435345", //渠道广告组名称
"sd_channel_adgroup_id":"123123", //渠道广告组id
"sd_channel_utm_campaign":"数据订阅测试", //广告系列名称(SAT)
"sd_channel_utm_term":"特尔马", //广告系列字词(SAT)
"sd_channel_name":"baidu_sem_track", //渠道名称
"sd_channel_ad_name":"435345", //渠道广告创意标题
"sd_channel_account_name":"", //渠道广告主账户名称
"sd_channel_link_id":"6wt2ytma", //渠道链接唯一id
"sd_utm_matching_type":"设备指纹模糊匹配-baidu_sem_track", //渠道追踪匹配模式
"sd_channel_campaign_name":"56765767", //渠道广告计划名称
"sd_channel_utm_content":"hjkhjkhjk", //广告系列内容(SAT)
"sd_channel_ad_id":"407714081", //渠道广告创意id
"sd_channel_utm_source":"所思123", //广告系列来源(SAT)
"sd_channel_link_type":"app", //渠道链接类型
"sd_channel_attribute_period_hour":168, //渠道激活归因窗口期(小时)
"sd_channel_account_id":"45345", //渠道广告主id
"sd_channel_keyword":"", //渠道关键词id
"sd_channel_keyword_id":"", //渠道关键词id
"sd_channel_click_id":"345345435464", //渠道监测点击id
"channel_task_type":0, //渠道任务类型
"channel_order_id":"",
"channel_term":"", //渠道搜索词
"channel_demand_id":"",
"channel_item_id":""
```
--------------------------------
### Android 设置广告自定义域名 setCustomAdChannelUrl
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zyxgcpz
在 Android 端通过 SAConfigOptions 的 setCustomAdChannelUrl 方法设置 SAT 请求 URL,地址由神策售后团队提供。
```java
//设置 SAT 请求 URL
setCustomAdChannelUrl(String url)
```
--------------------------------
### POST 请求接收地址配置示例
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zdymtqdpz
展示如何将应用宝 API 的请求参数替换为 SAT 宏参数。
```text
https://api.e.qq.com/v1.1/user_actions/add?access_token=__ACCESS_TOKEN__×tamp=__TIMESTAMP_S__&nonce=__EVENT_TIME____TIMESTAMP__
```
--------------------------------
### POST 请求体配置示例
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zdymtqdpz
展示应用宝渠道的原始请求体结构及其在 SAT 平台中的配置格式。
```json
{
“account_id”: ““,
“user_action_set_id”: ,
“actions”: [
{
“action_time”: ,
“user_id”: {
“hash_imei”: ““,
“oaid”: “” //Android选填,推荐使用
},
“action_type”: “ACTIVATE_APP”,
}
]
}
```
```json
{ "account_id": "__AUTHORIZED_ACCOUNT_ID__", "user_action_set_id": 1201435339, "actions": [ { "action_time": __EVENT_TIME_S__, "user_id": { "hash_imei":"__IMEI_MD5__", "hash_oaid": "__OAID_MD5__" }, "action_type":"__ACTION_VALUE__"} ]}
```
--------------------------------
### Android 获取 Deferred DeepLink 信息 requestDeferredDeepLink
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/zyxgcpz
在 Android 端通过 SensorsDataAPI 的 requestDeferredDeepLink 方法开启 Deferred DeepLink 功能,需设置 tid 参数。建议在权限授权后手动调用,仅安装后首次打开有效。
```java
//建议在完成权限授权(设备、网络等)后手动调用
//params参数中需要设置SAT Saas租户信息tid,具体租户ID信息由神策售后团队提供
requestDeferredDeepLink({"tid":"xxx"})
```
--------------------------------
### 归因信息数据结构示例
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/gysjdy
展示了包含渠道事件时间、归因策略、归因场景及自定义参数的 JSON 数据结构。
```json
"channel_event_time":1670236269828, //渠道事件的时间
"project_id":2,
"project":"production",
"matched_key_type":"IP,APP_ID,MODEL,OS,OS_VERSION", //渠道归因结果使用的key的类型
"attribution_event_name":"$AppInstall", //渠道归因事件的名称
"attribution_strategy":2, //归因策略
"attribution_scene":1 //归因场景
"match_type":"FUZZY", //渠道归因结果的匹配类型
"app_id":"com.xyh.test", //应用唯一标识
"start_date":20221205, //渠道生效的开始时间
"expiration_date":99991231, //渠道有效的过期时间
"user_id":4209889997192905273, //用户id
"custom_properties":{ //自定义参数
"p_BImport":"BImportValue"
},
},
{
"sd_matched_key":"FM#2#0#204.180.31.29",
"sd_channel_utm_medium":"hjhjk",
"sd_channel_campaign_id":"456456456",
"channel_term":"",
"sd_channel_active_period_day":30,
"sd_channel_adgroup_name":"435345",
"sd_channel_adgroup_id":"123123",
"sd_channel_utm_campaign":"数据订阅测试",
"sd_channel_utm_term":"特尔马",
"project":"production",
"custom_properties":{
"p_BImport":"BImportValue"
},
"expiration_date":99991231,
"channel_order_id":"",
"channel_demand_id":"",
"sd_channel_name":"baidu_sem_track",
"sd_channel_ad_name":"435345",
"sd_channel_account_name":"",
"project_id":2,
"sd_channel_ad_id":"407714081",
"sd_channel_utm_source":"所思123",
"matched_key_type":"IP,APP_ID,MODEL,OS,OS_VERSION",
"attribution_event_name":"$AppInstall",
"sd_channel_account_id":"45345",
"match_type":"FUZZY",
"app_id":"com.xyh.test",
"start_date":20221205,
"sd_channel_link_type":"app",
"sd_channel_keyword":"",
"attribution_strategy":2,
"sd_channel_keyword_id":"",
"channel_task_type":0,
"sd_channel_attribute_period_hour":168,
"user_id":4209889997192905273,
"sd_channel_click_id":"345345435464",
"channel_item_id":"",
"sd_channel_link_id":"6wt2ytma",
"sd_utm_matching_type":"设备指纹模糊匹配-baidu_sem_track",
"sd_channel_campaign_name":"56765767",
"sd_channel_utm_content":"hjkhjkhjk",
"channel_event_time":1670236269828,
"attribution_scene":38
}
]
}
```
--------------------------------
### 导出的 JSON 数据样例
Source: https://manual.sensorsdata.cn/sensorsadstracking/docs/yhsjggsjdc
展示了通过 API 导出的事件数据格式,包含 distinct_id、时间戳、事件名称及渠道属性。
```json
{"distinct_id":"b7a4fda85b7818af","sd_channel_link_id":"","time":"2022-11-16 14:55:23.678","event":"pointId","sd_channel_name":"UnknownChannelOrNature"}
{"distinct_id":"b7a4fda85b7818af","sd_channel_link_id":"","time":"2022-11-16 14:55:23.732","event":"pointId","sd_channel_name":"UnknownChannelOrNature"}
{"distinct_id":"b7a4fda85b7818af","sd_channel_link_id":"","time":"2022-11-16 14:55:23.748","event":"$AppStart","sd_channel_name":"UnknownChannelOrNature"}
{"distinct_id":"b7a4fda85b7818af","sd_channel_link_id":"","time":"2022-11-16 14:55:23.784","event":"$AppViewScreen","sd_channel_name":"UnknownChannelOrNature"}
{"distinct_id":"b7a4fda85b7818af","sd_channel_link_id":"","time":"2022-11-16 14:55:35.539","event":"$AppClick","sd_channel_name":"UnknownChannelOrNature"}
```
=== COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.