同时支持 SKAN + 设备级

概述

Branch 将继续提供符合 Apple 最新隐私政策的设备级归因,并着眼于数据简化和用户隐私。为了做到这一点,我们要求我们的平台合作伙伴认真审阅此规范,并确保他们通过所述的格式和宏将所需的所有数据发送给 Branch。目的是使您能够同时使用具有设备级归因的 SKAdNetwork(若允许)。

这使我们能够提供附加数据,例如准确的点击次数和设备级归因(在允许的情况下,即当用户通过 AppTrackingTransparency 框架同意时),以及为广告点击者提供深度链接。

保持不变的事项

  • 网络库存
    如果您在使用了 Branch 追踪链接的网站上执行清单,则无需进行任何更改。假设目标应用通过 AppTrackingTransparency 提示获得同意,Branch 将继续像以前一样执行归因。如果用户未收到提示或拒绝同意,尽管深度链接将像以前一样继续运行,但 Branch 不会归因于付费广告链接点击。

  • Campaign Data
    您应该继续发送 campaign 数据以及您今天已经发送的任何其他 metadata。这包括所有标准参数,例如〜campaign,〜ad_set_name,〜ad_name 等。

  • IDFA
    如果有 IDFA,则应像在 iOS14.5 之前一样发送 IDFA(使用 $idfa 宏)。Branch 将使用 IDFA 进行确定性的设备级归因。尽管如此,请确保您仍然发送正确的设备元数据(即用户代理,IP 等)!我们会将这些数据用于欺诈检测等其他重要事情,并使用诸如品牌和模型之类的元数据正确标记点击。

发生改变的事项

只需要进行最小的更改即可顺利进行归因。

遵循三个关键步骤:

  1. 确保发送所有所需数据。
  2. 如果您向我们发送服务器到服务器的点击,请确保您发送的是设备元数据,而不是服务器元数据,并且格式正确。
  3. 如果您支持同时具有设备级归因的 SKAdNetwork,请确保与 SKAdNetwork 请求同时向 Branch 发送点击。我们支持在客户端和服务器端接受这些点击。

需要以下参数:

  • IP 地址
  • 用户代理
  • 同样也是必需的,但根据 user-agent 推断(如果您无法发送 user-agent,而是需要改为发送这些参数,请与 Branch 联系)
    • 操作系统
    • 操作系统版本
    • 模型
    • 品牌

除了以上基本元数据(Branch 在 iOS14 之后进行预测建模所需的基本元数据)之外,您还可以选择向 Branch 发送以下内容作为链接数据参数,以进行更准确的建模:

  • 本地 IP

🚧

发送设备元数据

确保发送设备元数据,而不是服务器元数据!例如,使用服务器的 IP 发送服务器到服务器的点击可能导致匹配失败,并且可能中断,例如深度链接您必须发送设备的 IP、用户代理等。在此文档中,我们将继续重申这一点,因为这一点非常重要。

📘

同时支持 SKAdNetwork 和设备级归因

If you plan to support SKAdNetwork and device-level attribution via IDFA or Predictive Modeling together, please read through the documentation in the Using SKAdNetwork and Device-level Attribution section below.

metadata 详细信息

IP 地址

String. 必要项。
点击设备的外部 IP 地址。

❗️

  • 不要发送服务器 IP。客户端 Branch 链接会自动查看设备 IP—但是,如果您向我们发送服务器到服务器的事件,则必须确保使用下面的链接宏或 header 方法向我们发送设备 IP(而不是服务器 IP)。

  • Make sure any IP macro you use is being properly populated at the time of click. If we receive something like device_ip=$(IP) various important workflows will fail, e.g. deep linking, country detection, and others.

将 IP 传给 Branch

  • 查询参数:device_ip = {IP_ADDRESS}
  • TUNE 链接查询参数:: device_ip= {IP_ADDRESS}
  • Header:X-IP-Override: {IP_ADDRESS}

格式

  • IPV4 :格式为x.x.x.x,其中 x 是介于0到255之间的十进制值。以下是一些有效示例:
    • 190.128.100.37
    • 112.79.51.87
    • 111.65.45.208
  • IPV6 :格式为 y:y:y:y:y:y:y:y,其中 y 是介于 0 和 FFFF 之间的任一十六进制值。可能包含或不包含前导零,因此所有这些均有效
    • 2001:db8:3333:4444:5555:6666:7777:8888
  • 2001:db8:3333:4444:CCCC:DDDD:EEEE:FFFF
  • 2001:db8::1234:5678
  • 2001:0db8:0001:0000:0000:0ab9:C0A8:0102
  • 2001:db8:1::ab9:C0A8:102

示例

  • 链接查询参数:
    • https://branch.app.link/abc123?device_ip=1.2.3.4
  • Header:
    • GET https://branch.app.link/abc123
    • X-IP-Override: 1.2.3.4

用户代理

String. 必要项。
点击设备的 user-agent。

❗️

  • 不要发送服务器用户代理!客户端 Branch 链接会自动查看设备 IP—但是,如果您向我们发送服务器到服务器的事件,则必须确保使用下面的链接宏或 header 方法向我们发送设备 IP(而不是服务器 IP)。

  • 发送正确的 user-agent 非常重要,因为我们会从中推断出许多其他重要的 metadata,例如 OS,OS 版本,品牌,型号等。

将 User Agent 传递给 Branch

  • 通常来说,如果您使用的是 Branch Link,Branch 则会自动收集 user-agent。如果发送服务器间 (server-to-server)点击量,则必须使用下列方法之一。
    • Branch/Tune 链接查询参数:user_agent = {USER_AGENT} (注意:请确保对该值进行 URL 编码)
    • Header:用户代理: {USER_AGENT}注意:不要对该值进行 URL 编码)

如果发送点击 URL,则以未经修改的原始格式发送,并进行 URL 编码。

示例

  • 原始 user-agent
    • Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15(KHTML, like Gecko) Version/13.1.1Mobile/15E148 Safari/604.1
  • 网址
    https://branch.app.link/abc123?user_agent=Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2013_5_1%20like%20Mac%20OS%20X)%20AppleWebKit%2F605.1.15%20(KHTML%2C%20like%20Gecko)%20Version%2F13.1.1%20Mobile%2F15E148%20Safari%2F604.1
  • 标头
    • GET https://branch.app.link/abc123
    • User-Agent:Mozilla / 5.0(iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15(KHTML, like Gecko) Version/13.1.1Mobile/15E148 Safari/604.1

本地 IP 地址

字符串。可选。
点击设备的本地 IP 地址。假设设备可用,这是设备的 LAN IP 地址。

将本地 IP 传送到 Branch

  • 查询参数:local_ip = {LOCAL_IP_ADDRESS}

格式

Same as formatting for regular device IP address. See the IP Address Formatting section above for more information.

示例

  • 链接查询参数:
    • https://branch.app.link/abc123?local_ip=5.6.7.8

完整事例

链接参数方法

https://branch.app.link/abc123?user_agent=Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2013_5_1%20like%20Mac%20OS%20X)%20AppleWebKit%2F605.1.15%20(KHTML%2C%20like%20Gecko)%20Version%2F13.1.1%20Mobile%2F15E148%20Safari%2F604.1&device_ip=1.2.3.4&local_ip=5.6.7.8

Header 方法

GET https://branch.app.link/abc123?local_ip=5.6.7.8 
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1
X-IP-Override: 1.2.3.4

同时使用 SKAdNetwork 和设备级归因

同时支持 SKAdNetwork 和设备级归因/深度链接非常简单。基本上,您将在向 SKAdNetwork 发送 loadProduct 请求的同时向 Branch 发送点击。有两种方法可以实现:

  1. 服务器端:从您的服务器向 Branch 发送点击请求。向我们传送所有必要的数据,以归因于点击请求。
  2. 客户端:打开隐藏的网页视图,并点击设置为不打开 App Store 的真实 Branch 链接。这将通过我们的 app.link 域进行重定向,并使我们直接获取归因所需的(有限)数据。

无论哪种情况,上面概述的所有必填字段和可选字段均保持为必填/可选项 — 将其发送到 Branch 的方法无关紧要。

服务器端

服务器端点击流概述如下:

12701270

用户点击您的广告时,您有 3 个任务:

  1. 注册点击以及上面所有必需的设备元数据及所有广告活动数据。
  2. 同时:
    1. 继续执行 SKAdNetwork 流程(即加载产品()等)。
    2. Send the click to Branch server-to-server. This works just like a regular client-side Branch link, but with the addition of the $s2s=true query string that tells Branch it’s a server-side click request.

客户端

客户端点击流程概述如下。请注意,大多数同时支持 SKAN 和 PREM 的合作伙伴都将使用上面的服务器到服务器方法,因此,主要出于完整性考虑,将其包括在内。

12861286

用户点击您的广告时,您有四个任务:

  1. 打开一个隐藏的网页视图。
  2. Click the Branch link corresponding to that ad. This is just like the Branch links you use today, with one addition: you must include $web_only=true as an additional query parameter to prevent the link from opening the App Store directly, which would prevent you from finishing the SKAdNetwork flow.
  3. 关闭隐藏的网页视图。
  4. 继续执行 SKAdNetwork 流程(即加载产品()等)。

筛选项