首次事件是指针对某些维度(设备 ID或其他维度的 ID)只记录一次的事件,例如记录某个账号的注册事件,可以使用首次事件来记录,服务端会按照checkId 去重,同一 ID 只会记录第一次上报的事件。
预置事件(_appInstall、_appStart、_appEnd)不支持设置为首次事件。
方法示例
public static trackFirstEvent(seBaseEventModel: BaseEventModel)
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
seBaseEventModel | 首次事件类 | BaseEventModel | 是 |
seBaseEventModel参数使用时需要传BaseEventModel的子类实例,具体说明如下:
首次事件 | 参数类型 | 说明 |
---|---|---|
自定义首次事件 | SECustomEventModel | 自定义事件首次事件model类,具体使用方式参考下方示例 |
变现广告展示首次事件 | SEAdImpEventModel | 变现广告展示事件首次事件model类,具体使用方式参考下方示例 |
变现广告点击首次事件 | SEAdClickEventModel | 变现广告点击事件首次事件model类,具体使用方式参考下方示例 |
应用内购买首次事件 | SEPurchaseEventModel | 应用内购买事件首次事件model类,具体使用方式参考下方示例 |
自归因安装首次事件 | SEAttributionEventModel | 自归因事件首次事件model类,具体使用方式参考下方示例 |
订单事件首次事件 | SEOrderEventModel | 订单事件首次事件model类,具体使用方式参考下方示例 |
注册事件首次事件 | SERegisterEventModel | 注册事件首次事件model类,具体使用方式参考下方示例 |
登录事件首次事件 | SELoginEventModel | 登录事件首次事件model类,具体使用方式参考下方示例 |
调用示例
1.变现广告展示事件首次事件
参数说明:
(各聚合平台对应传值字段参见: ROI-三方账户管理-聚合平台-其他聚合平台 )
参数名称 | 参数含义 | 参数类型 | 是否必传 |
checkId | 首次事件校验id | string | 是(如果未传checkId,则为普通事件) |
adNetworkPlatform | 变现平台,前面为应传值,后面为平台名称, 例如:变现平台为快手时,只需要传入 kuaishou csj:穿山甲国内版 pangle:穿山甲国际版 tencent:腾讯优量汇 baidu:百度百青藤 kuaishou:快手 oppo:OPPO vivo:vivo mi:小米 huawei:华为 applovin:Applovin sigmob:Sigmob mintegral:Mintegral oneway:OneWay vungle:Vungle facebook:Facebook admob:AdMob unity:UnityAds is:IronSource adtiming:AdTiming klein:游可赢 fyber:Fyber chartboost:Chartboost adcolony:Adcolony | string | 是 |
mediationPlatform | 填充广告的聚合平台,变现广告由聚合平台填充时必填,其他情况默认填custom即可 | string | 是 |
adType | 展示广告的类型,枚举值如下: 例如:adType 为激励视频时,只需要传入 1 1:激励视频 2:开屏 3:插屏 4:全屏视频 5:Banner 6:信息流 7:短视频信息流 8:大横幅 9:视频贴片 10:中等尺寸横幅 0:其它 | number | 是 |
adNetworkAppID | 变现平台的应用 ID | string | 否 |
adNetworkADID | 变现平台的变现广告位 ID | string | 是 |
ecpm | 广告 ecpm,单位:元(广告千次展现的变现收入,0或负值表示没传,单位为元) | number | 是 |
currencyType | 展示收益的货币种类,遵循《ISO 4217国际标准》,如 CNY、USD | string | 是 |
isRenderSuccess | 广告是否渲染成功,具体枚举值如下: 例如:成功时,只需要传入 true true:成功 false:失败 如果不需要统计该指标,请传 true | boolean | 是 |
customProperties | 开发者传入的自定义属性 | Record<string,Object> | 否 |
调用示例
import { SolarEngineManager } from '@solarengine/core'
let seFirstEventModel = new SEAdImpEventModel();
//如果不传checkId则当前事件会被当成正常事件上报,若传checkId则首次事件只会被调用一次,不会重复上报
seFirstEventModel.checkId = "11aaBB";
seFirstEventModel.adNetworkPlatform = "kuaishou";
seFirstEventModel.mediationPlatform = "Mintgaral";
seFirstEventModel.adType = 1;
seFirstEventModel.adNetworkAppID = "广告AppID";
seFirstEventModel.adNetworkADID = "广告ID";
seFirstEventModel.ecpm = 10.1;
seFirstEventModel.currencyType = "USD";
seFirstEventModel.isRenderSuccess = true;
let custom_properties: Record<string, Object> = {};
custom_properties["key1"] = "value1";
custom_properties["key2"] = "value2";
seFirstEventModel.customProperties = custom_properties;
SolarEngineManager.trackFirstEvent(seFirstEventModel);
2.变现广告点击事件首次事件
参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
checkId | 首次事件校验id | string | 是(如果未传checkId,则为普通事件) |
adNetworkPlatform | 变现平台,前面为应传值,后面为平台名称 csj:穿山甲国内版 pangle:穿山甲国际版 tencent:腾讯优量汇 baidu:百度百青藤 kuaishou:快手 oppo:OPPO vivo:vivo mi:小米 huawei:华为 applovin:Applovin sigmob:Sigmob mintegral:Mintegral oneway:OneWay vungle:Vungle facebook:Facebook admob:AdMob unity:UnityAds is:IronSource adtiming:AdTiming klein:游可赢 fyber:Fyber chartboost:Chartboost adcolony:Adcolony | string | 是 |
mediationPlatform | 填充广告的聚合平台,变现广告由聚合平台填充时必填,其他情况默认填 custom 即可 | string | 是 |
adType | 展示广告的类型,枚举值如下(传值传前面的枚举简称即可): 1:激励视频 2:开屏 3:插屏 4:全屏视频 5:Banner 6:信息流 7:短视频信息流 8:大横幅 9:视频贴片 0:其它 | number | 是 |
adNetworkADID | 变现平台的变现广告位 ID | string | 是 |
customProperties | 开发者传入的自定义属性 | Record<string,Object> | 否 |
调用示例
import { SolarEngineManager } from '@solarengine/core'
let seAdClickEventModel = new SEAdClickEventModel();
seAdClickEventModel.checkId = "22bbCC";
seAdClickEventModel.adNetworkPlatform = "kuaishou";
seAdClickEventModel.mediationPlatform = "Mintgaral";
seAdClickEventModel.adType = 2;
seAdClickEventModel.adNetworkADID = "广告ID";
let custom_properties: Record<string, Object> = {};
custom_properties["key1"] = "value1";
custom_properties["key2"] = "value2";
seAdClickEventModel.customProperties = custom_properties;
SolarEngineManager.trackFirstEvent(seAdClickEventModel);
3.自归因事件首次事件
参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
checkId | 首次事件校验id | String | 是(如果未传checkId,则为普通事件) |
adNetwork | 投放广告的渠道 ID,需要与ROI分析匹配 | 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 | 开发者传入的自定义属性 | JSONObject | 否 |
调用示例
import { SolarEngineManager } from '@solarengine/core'
let seAttrEventModel = new SEAttributionEventModel();
//如果不传checkId则当前事件会被当成正常事件上报,若传checkId则首次事件只会被调用一次,不会重复上报
seAttrEventModel.checkId = "33ccDD"
seAttrEventModel.adNetwork = "投放广告的渠道ID";
seAttrEventModel.subChannel = "投放广告的子渠道";
seAttrEventModel.adAccountId = "投放广告的投放账号ID";
seAttrEventModel.adAccountName = "投放广告的投放账号名称";
seAttrEventModel.adCampaignId = "投放广告的广告计划ID";
seAttrEventModel.adCampaignName = "投放广告的广告计划名称";
seAttrEventModel.adOfferId = "投放广告的广告单元ID";
seAttrEventModel.adOfferName = "投放广告的广告单元名称";
seAttrEventModel.adCreativeId = "投放广告的广告创意ID";
seAttrEventModel.adCreativeName = "投放广告的广告创意名称";
seAttrEventModel.attributionPlatform = "监测平台";
let custom_properties: Record<string, Object> = {};
custom_properties["key1"] = "value1";
custom_properties["key2"] = "value2";
seAttrEventModel.customProperties = custom_properties;
SolarEngineManager.trackFirstEvent(seAttrEventModel);
4.登录事件首次事件
参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
checkId | 首次事件校验id | string | 是(如果未传checkId,则为普通事件) |
loginType | 登录类型如 WeChat、QQ 等自定义值 | string | 是 |
status | 登录状态 | string | 否 |
customProperties | 开发者传入的自定义属性 | Record<string,Object> | 否 |
调用示例
import { SolarEngineManager } from '@solarengine/core'
let seLoginEventModel = new SELoginEventModel();
seLoginEventModel.checkId = "44ddEE"
seLoginEventModel.loginType = "QQ";
seLoginEventModel.status = "success";
let custom_properties: Record<string, Object> = {};
custom_properties["key1"] = "value1";
custom_properties["key2"] = "value2";
seLoginEventModel.customProperties = custom_properties;
SolarEngineManager.trackFirstEvent(seLoginEventModel);
5.注册事件首次事件
参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
checkId | 首次事件校验id | string | 是(如果未传checkId,则为普通事件) |
regType | 注册类型如 WeChat、QQ 等自定义值 | string | 是 |
status | 注册状态 | string | 否 |
customProperties | 开发者传入的自定义属性 | Record<string,Object> | 否 |
调用示例
import { SolarEngineManager } from '@solarengine/core'
let seRegisterEventModel = new SERegisterEventModel();
//如果不传checkId则当前事件会被当成正常事件上报,若传checkId则首次事件只会被调用一次,不会重复上报
seRegisterEventModel.checkId = "55eeFF"
seRegisterEventModel.regType = "Wechat";
seRegisterEventModel.status = "success";
let custom_properties: Record<string, Object> = {};
custom_properties["key1"] = "value1";
custom_properties["key2"] = "value2";
seRegisterEventModel.customProperties = custom_properties;
SolarEngineManager.trackFirstEvent(seRegisterEventModel);
6.订单事件首次事件
参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
checkId | 首次事件校验id | string | 是(如果未传checkId,则为普通事件) |
orderId | 订单 ID | string | 否 |
payAmount | 订单金额,单位:元 | number | 是 |
currencyType | 支付的货币类型,遵循《ISO 4217国际标准》,如 CNY、USD | string | 是 |
payType | 支付方式:如 alipay、weixin、applepay、paypal 等 | string | 是 |
status | 订单状态 | string | 否 |
customProperties | 开发者传入的自定义属性 | Record<string,Object> | 否 |
调用示例
import { SolarEngineManager } from '@solarengine/core'
let seOrderEventModel = new SEOrderEventModel();
//如果不传checkId则当前事件会被当成正常事件上报,若传checkId则首次事件只会被调用一次,不会重复上报
seOrderEventModel.checkId = "66ffGG"
seOrderEventModel.orderId = "本次购买由系统生成的订单ID";
seOrderEventModel.payAmount = 10.11;
seOrderEventModel.currencyType = "USD";
seOrderEventModel.payType = "alipay";
seOrderEventModel.status = "success";
let custom_properties: Record<string, Object> = {};
custom_properties["key1"] = "value1";
custom_properties["key2"] = "value2";
seOrderEventModel.customProperties = custom_properties;
SolarEngineManager.trackFirstEvent(seOrderEventModel);
7.应用内购买事件首次事件
参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
checkId | 首次事件校验id | string | 是(如果未传checkId,则为普通事件) |
orderId | 本次购买由系统生成的订单 ID | string | 否 |
payAmount | 本次购买支付的金额,单位:元 | number | 是 |
currencyType | 支付的货币类型,遵循《ISO 4217国际标准》,如 CNY、USD | string | 是 |
payType | 支付方式:如 alipay、weixin、applepay、paypal 等 | string | 否 |
productId | 购买商品的ID | string | 否 |
productName | 商品名称 | string | 否 |
productNum | 购买商品的数量 | number | 否 |
payStatus | 支付状态,例如:成功时,只需要传入 1 1:成功 2:失败 | number | 是 |
failReason | 支付失败的原因 | string | 否 |
customProperties | 开发者传入的自定义属性 | Record<string,Object> | 否 |
调用示例
import { SolarEngineManager } from '@solarengine/core'
let sePurchaseEventModel = new SEPurchaseEventModel();
//如果不传checkId则当前事件会被当成正常事件上报,若传checkId则首次事件只会被调用一次,不会重复上报
sePurchaseEventModel.checkId = "77ggHH";
sePurchaseEventModel.orderId = "本次购买由系统生成的订单ID";
sePurchaseEventModel.payAmount = 11.01;
sePurchaseEventModel.currencyType = "CNY";
sePurchaseEventModel.payType = "alipay";
sePurchaseEventModel.productId = "购买商品的ID";
sePurchaseEventModel.productName = "购买商品的名称";
sePurchaseEventModel.productNum = 66;
sePurchaseEventModel.payStatus = 2;
sePurchaseEventModel.failReason = "failed";
let custom_properties: Record<string, Object> = {};
custom_properties["key1"] = "value1";
custom_properties["key2"] = "value2";
sePurchaseEventModel.customProperties = custom_properties;
SolarEngineManager.trackFirstEvent(sePurchaseEventModel);
注:支付失败原因 failReason 参数仅在 payStatus 参数为 2 支付失败时才会传入,其他状态传""即可。
8.自定义事件首次事件
参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
checkId | 首次事件校验id | string | 是(如果未传checkId,则为普通事件) |
eventName | 开发者自定义事件名称 | string | 是 |
preProperties
|
自定义事件预置属性,目前只支持
_pay_amount与_currency_type,其他字段会被SDK舍弃
|
Record<string,Object> | 否 |
customProperties | 开发者自定义事件属性 | Record<string,Object> | 否 |
调用示例
import { SolarEngineManager } from '@solarengine/core'
let seCustomEventModel = new SECustomEventModel();
//如果不传checkId则当前事件会被当成正常事件上报,若传checkId则首次事件只会被调用一次,不会重复上报
seCustomEventModel.checkId = "88hhII"
//如果要上报自定义事件首次事件,那么eventName字段为必传字段,否则无法上报
seCustomEventModel.eventName = "your_custom_event_name"
//设置预置属性,目前只支持_pay_amount与_currency_type,其他字段会被SDK舍弃
let preProperties: Record<string, Object> = {};
preProperties["_pay_amount"] = 11.2;
preProperties["_currency_type"] = "USD";
seCustomEventModel.preProperties = preProperties;
let custom_properties: Record<string, Object> = {};
custom_properties["key1"] = "value1";
custom_properties["key2"] = "value2";
seCustomEventModel.customProperties = custom_properties;
SolarEngineManager.trackFirstEvent(seCustomEventModel);
注:如果要上报自定义事件首次事件,那么eventName字段为必传字段,否则无法上报。