概要:本文讲解了如何从广告主服务器向AppsFlyer发送事件数据,以衡量在应用外部发生的移动事件。
适用于移动设备的服务器到服务器事件API
对于iOS 14以上的应用版本,您需要发送OS(操作系统)参数。
AppsFlyer平台会对由AppsFlyer SDK和API发送的移动应用事件进行归因和记录,因此您可以使用S2S API上报应用程序外部发生的事件(如用户在您的网页端完成的续订)。记录到的S2S事件会反映在AF后台的所有面板/报告中,包括控制面板,原始数据和分析报告。另请参阅适用于PBA的网页S2S,了解有关PBA网页事件的详情。
AppsFlyer会将以下信息填充到S2S事件中:
- S2S消息中发送的值
- AppsFlyer的部分归因信息,例如激活时间和媒体渠道。
如需通过API发送事件,请让您的开发人员按照服务器到服务器事件API指南完成相关设置。
填充参数
自然量与非自然量的区别
AppsFlyer处理S2S应用内事件时,会通过AppsFlyer ID来识别相关应用内事件之前的激活事件,从而填充归因字段。
也就是说,AppsFlyer会将某些数据与非自然的S2S应用内事件相关联,而这些数据与自然的S2S应用内事件是不相关的。
示例
如果对比非自然和自然的S2S应用内事件原始数据报告, 会发现非自然事件中包含自然事件所没有的数据。
这些数据包括媒体渠道、广告系列、触点类型、触达时间等。
这是因为自然事件来自于自然激活,而自然激活本来就没有广告系列、媒体渠道、触点类型和触达时间等数据。
AppsFlyer ID与客户用户ID(CUID)之间的映射
需要通过后端逻辑获取相关的值来填充参数。请按以下步骤获取AppsFlyer ID:
- AppsFlyer ID是必须配置的参数,用于归因事件。
- 该ID是在用户首次激活应用时生成的。
- 如果需要将CUID映射到AppsFlyer ID,请务必在应用中设置CUID。
请部署以下链路,以便将用户关联到事件:
- 在用户激活应用时设置客户用户ID(CUID)
- AppsFlyer原始数据报告中会包含CUID和AppsFlyer ID。您可以使用任意数据传输工具或AppsFlyer的Push API来获取该数据。
- 使用原始数据报告将CUID与AppsFlyer ID进行匹配。
- 您在应用(安卓/iOS)中接入AppsFlyer SDK后,SDK会在用户激活应用时生成AppsFlyer ID。
- 将AppsFlyer ID映射到内部系统中的客户用户ID(CUID)(后续会有重要作用)。
AppsFlyer ID与CUID之间形成映射后,就可以将用户匹配到他们完成的事件。然后,您可以获取其他值(事件值,事件币种,事件时间等),并发送S2S应用内事件。
提取AppsFlyer ID
S2S事件的时间戳
AppsFlyer批量接收S2S事件,并根据其eventTime
的参数值和送达时间设置时间戳。eventTime
参数值表示应用内事件发生的时间。
事件送达AppsFlyer时,其时间戳的判定方式如下:
- 如果事件记录中不包含
eventTime
参数,则事件时间为HTTP消息的送达时间。 - 如果事件在UTC时间02:00之前送达,其时间戳为
eventTime
的参数值。 - 如果事件在UTC时间02:00之后送达,其时间戳为事件的实际送达时间。
- 如果事件中的
eventTime
参数值为未来的时间(即eventTime > 事件送达时间):- 如果
eventTime
中上报的时间和事件送达时间属于同一天,则该事件的时间戳取eventTime
的值。 - 如果
eventTime
中上报的时间在事件送达时间的次日,则该事件的时间戳取事件送达时间。
- 如果
示例
- 假设某个S2S事件中的
eventTime
= Monday 21:00(周一晚九点)。
事件送达 AppsFlyer的时间 |
AppsFlyer判定的时间戳 | 备注 |
---|---|---|
星期二01:00 | 星期一21:00 | 由于该事件在当天的营业时间结束前送达,因此其时间戳为eventTime 的值。 |
星期三09:00 | 星期三09:00 | 由于该事件在当天的营业时间结束后送达,因此其时间戳为送达时间。 |
发送负收入
您可以发送收入值为负的事件(如订单被取消)。af_revenue
参数可以通过负值来记录此信息。
如果使用af_quantity
,请根据您的系统逻辑来决定是否在其中填充负值。AppsFlyer是不使用af_quantity
的。
疑难解答
事件未显示在面板上
- 端点(endpoint):请检查您所使用的节点(endpoint)是否正确。
- 请检查Payload中是否包含必需参数。详情请见此处。
- 请确保您用来触发事件的AppsFlyer ID是真实的appsflyer_id,并且已存入应用中。这里的ID不是文档中提供的测试ID,详情请见此处。
- 一个S2S请求中不能包含多个事件,每个事件都必须单独发送。
- 可以使用异步方式发送事件,以缩短响应时间。
- 在数据总览面板中,日期范围中的日期是指应用激活日期(即LTV维度),而非事件发生日期。
- 确保您选择正确的日期范围。
- 确保面板日期范围对应于设备的激活日期(appsflyer_id),而不是事件的日期。
- 事件原始数据报告:日期范围中的日期是事件发生日期,而非应用激活日期。
事件不包含收入
如果发送的S2S事件中未记录收入:请确保JSON是字符串格式的。其中最重要的部分是事件值参数,请务必将其转化为下图示例中的格式。
"{\"af_revenue\":\"6\" ,\"af_content_type\":\"wallets\"}"
如果事件值未转化成字符串格式,则无法得到正确处理,导致记录不到收入。
收入值不能带有任何格式。该值可以包含一个小数点,但不能带有货币符号、代码或,
分隔符,数值前可以带有-
。
- 有效值示例:
123
,-123.45
,123.456
- 无效值示例:
1,234.56
,1,234
S2S事件中并非所有字段都要填充
原始数据的字段是在调用S2S事件API后根据发送的值填充的,有的字段是根据SDK侧的应用激活填充的。由AppsFlyer SDK上报的应用内事件也会出现类似情况,但不完全相同,具体差别在于S2S事件不填充以下字段:
- WIFI
- Operator(运营商)
- Language(语言)
- Device Type(设备型号)
- Device Category(设备类别)
- App Version(应用版本,您可以使用
app_version_name
参数填充该值) - App Name(应用名称)