移动设备的S2S事件API(S2S-mobile)

概要:本文讲解了如何从广告主服务器向AppsFlyer发送事件数据,以衡量在应用外部发生的移动事件。

S2S_us-zh.png

适用于移动设备的服务器到服务器事件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

appsflyer_id是服务器到服务器事件消息中的必须配置的参数。AppsFlyer需要使用该参数才能将事件归因到原始设备和媒体渠道。您可以使用以下任一种方法获取该ID:

 提示

测试S2S消息时,如果您使用的是原始数据,请查找媒体渠道为“s2s_test”的记录。由于这是您的测试设备,因此您需要用到的ID是其AppsFlyer Device 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.45123.456 
  • 无效值示例: 1,234.561,234

S2S事件中并非所有字段都要填充

原始数据的字段是在调用S2S事件API后根据发送的值填充的,有的字段是根据SDK侧的应用激活填充的。由AppsFlyer SDK上报的应用内事件也会出现类似情况,但不完全相同,具体差别在于S2S事件不填充以下字段:

  • WIFI
  • Operator(运营商)
  • Language(语言)
  • Device Type(设备型号)
  • Device Category(设备类别)
  • App Version(应用版本,您可以使用app_version_name参数填充该值)
  • App Name(应用名称)