使用 SKAdNetwork 对 iOS 安装进行归因

Google 广告交易平台支持 Google 移动广告 SDK 用于通过 Apple SKAdNetwork API 发起 SKAdNetwork 归因的信号。您可以与 SKAdNetwork 信号集成,让广告客户在保护用户隐私的同时,衡量 iOS 设备上的应用安装广告系列的效果。

以下列表介绍了应用安装归因行为如何根据 SKAdNetwork 版本而变化:

  • 2.0-2.1:当用户点击您的广告并安装应用时,所宣传应用的安装归因由 StoreKit 呈现的 App Store 产品页面驱动。
  • 2.2+:额外支持浏览型广告,即当用户在观看您的广告后安装所宣传的应用时,系统会将安装归因于该广告。

如需详细了解 SKAdNetwork 版本之间的差异,请参阅 SKAdNetwork 版本说明。

在界面中配置 SKAdNetwork ID

若要接收包含 SKAdNetwork ID 的出价请求,您必须在 Authorized Buyers 或公开出价界面中指定您的 SKAdNetwork ID。例如,SKAdNetwork ID 的值可能类似于 a1b2c3d4e5.skadnetwork。

如需在 Authorized Buyers 或公开出价界面中指定 SKAdNetwork ID,请执行以下操作:

  1. 在出价方设置导航菜单中,点击实时出价设置。系统会显示 RTB 设置页面。
  2. 前往允许使用的 iOS SKAdNetwork ID 框,查看和配置 SKAdNetwork ID。

下图显示了允许使用的 iOS SKAdNetwork ID 框中的 SKADNetwork ID 示例:

RTB 设置中的“允许使用的 iOS SKAdNetwork ID”设置

配置广告素材以进行归因

仅当点击后到达网址指向 Apple App Store 时,Google 移动广告 SDK 才会启动 SKAdNetwork 归因。当您使用 实时出价 API 提交广告素材进行审核时,广告素材必须使用点击后到达网址,该网址要么直接链接到应用商店中宣传的应用,要么使用 HTTP 重定向,最终目的地是应用商店中宣传的应用。如果广告素材点击后到达网址的最终目标网址以前缀开头,Google 移动广告 SDK 会启动归因:

  • https://apps.apple.com
  • https://itunes.apple.com
  • itms-apps://
  • itms://

如果广告素材的点击后到达网址的最终目标页面与这些前缀不匹配,或者点击后到达网址使用了任何其他不会转到应用商店的客户端重定向方法,Google 移动广告 SDK 可能不会启动 SKAdNetwork 归因。以下列表列举了可能适用此流程的一些示例:

  • 需要用户执行操作才能重定向到应用商店的 HTML 页面。
  • 一个 HTML 页面,其中包含一个基于 JavaScript 的自动重定向脚本,可将用户重定向到应用商店。
  • 元刷新标记。

按广告类型启动归因

您可以为不同的广告类型设置点击操作,以启动 SKAdNetwork 归因,如下所示:

HTML
此网址可设置为可点击元素周围的锚标记上的目标网址,或设置为基于 JavaScript 的点击事件中 window.location 操作的目标网址。
MRAID
点击操作需要调用 Mraid.open() 才能启动 SKAdNetwork 归因。
VAST 视频
应用商店网址应在 VAST XML 的 ClickThrough 元素中设置。
原生
必须在 BidResponse.seatbid.bid.{adm/adm_native}.link.url 字段中设置应用商店网址。

识别 BidRequest 信号

您可以通过 BidRequest.imp.ext.skadn 字段找到发布商应用支持的已注册 SKAdNetwork ID 的相关信息。如果指定了 skadn 字段,您可以使用这些属性为应用安装广告或再互动广告构建响应,将安装或转化与其中一个 SKAdNetwork ID 相关联。skadn 字段是一个 SKAdNetworkRequest 对象,具有以下属性:

属性名称 说明
sourceapp 发布商应用在 Apple App Store 中的字符串 ID。如需标识发布商应用,请使用此属性。
skadnetids 一个字符串列表,表示发布商应用支持的 SKAdNetwork ID。您可以在构建响应时参考此列表,选择发布商支持的 SKAdNetwork ID,并在 BidResponse.seatbid.bid.ext.skadn.network 字段中指定。
versions 表示发布商支持的 SKAdNetwork 版本的字符串列表。您在响应中使用 BidResponse.seatbid.bid.ext.skadn.version 字段指定的 SKAdNetwork 版本必须是此字段指定的版本之一。
fidelities SKAdNetworkFidelityType 枚举值列表,表示发布商支持的保真度类型。以下内容介绍了这些枚举值,适用于配置为使用 Protobuf 和 JSON 格式的 OpenRTB 的出价端点:
  • VIEW_THROUGH_ADS (Protobuf) / 0 (JSON):当您赢得竞价并投放广告时,如果广告被观看至少 3 秒,您可以在 24 小时内收到展示归因。通常,如果支持 SKOverlay,您必须显示 SKOverlay,以便广告客户获得这种形式的归因。
  • STOREKIT_RENDERED_ADS (Protobuf) / 1 (JSON):当您赢得竞价并投放广告时,如果用户点击广告,系统会通过 StoreKit 呈现的 App Store 产品页面启动应用安装或转化的归因。
skoverlay 以 OpenRTB Protobuf 格式表示时为布尔值,以 OpenRTB JSON 格式表示时为整数。您可以使用此布尔值来确定是否支持 SKOverlay。Google 仅支持对投放到插页式或激励广告资源的视频和 HTML 代码段广告素材使用 SKOverlay。

以下示例展示了针对移动广告资源的出价请求,其中发布商的应用支持您的 SKAdNetwork ID:

{
  "id": "9NaI48SmPW7Zf3MAHR43DY",
  "imp": [
    {
      "id": "1",
      // OMITTED...
      "ext": {
        // OMITTED...
        "skadn": {
          "sourceapp": "com.google.testapp",
          "skadnetids": [
            "cF58w81X"
          ],
          "versions": [
            "2.0",
            "2.1",
            "4.0"
          ],
          "fidelities": [
            1,
            0
          ]
        }
        // OMITTED...
      }
    }
  ],
  "app": {
    "name": "Test App",
    "ver": "5.6.0",
    "bundle": "com.google.testapp",
    "publisher": {
      "id": "pub-6156239328255091",
      "ext": {
        "country": "JP"
      }
    },
    "content": {
      "url": "https://www.google.com",
      "livestream": 0,
      "language": "ja"
    },
    "storeurl": "https://www.google.com"
  }
  // OMITTED...
}

填充 BidResponse 个字段

您可以在出价响应中添加归因信息,以便广告客户在用户与广告客户的广告互动时收到回传通知。如需详细了解回传通知,请参阅接收广告标示和回传。

您必须传递与出价请求中包含的信息一致的归因信息。归因信息在 BidResponse.seatbid.bid.ext.skadn 字段中指定,该字段是一个 SKAdNetworkResponse 对象,具有以下属性:

属性名称 说明
version 一个字符串,表示广告客户支持的 SKAdNetwork 版本。您必须指定发布商支持的 SKAdNetwork 版本之一,该版本在 BidRequest.imp.ext.skadn.versions 中指定。
network 广告客户的字符串 SKAdNetwork ID。您必须指定 BidRequest.imp.ext.skadn.skadnetids 中包含的 SKAdNetwork ID 之一。
campaign 一个由两位数字组成的字符串 ID,表示广告客户的广告系列。如果您的出价响应包含使用 SKAdNetwork 3.0 或更早版本的归因信息,则必须指定此属性,而不是 sourceidentifier。
sourceidentifier 一个四位数字字符串 ID,表示广告客户的广告系列。如果您的出价响应包含使用 SKAdNetwork 4.0 或更高版本的归因信息,则必须指定此属性,而不是 campaign。
itunesitem 广告客户的应用在 Apple App Store 中的字符串 ID。此值必须与 BidResponse.seatbid.bid.bundle 中指定的值一致。
productpageid 一个可选的字符串 ID,表示要为使用 iOS 15 或更高版本的设备显示的自定义产品页面。如需详细了解自定义产品页面,请参阅 App Store 上的自定义产品页面。如果未指定,则会显示默认商品页面。
fidelities Fidelity 对象的列表,用于标识哪些保真度类型适用于已投放的广告,并提供加密签名,以便在广告客户收到回传通知时识别广告客户的广告系列。您必须仅使用 BidRequest.imp.ext.skadn.fidelities 中包含的值指定 fidelity 属性。
sourceapp 一个字符串,代表 Apple 应用商店中的发布商应用。您必须使用在 BidRequest.imp.ext.skadn.sourceapp 中找到的 ID 指定此参数。
skoverlay 一个 SKOverlay 对象,表示所宣传的应用在 SKOverlay 中的呈现方式。只有当 BidRequest.imp.ext.skadn.skoverlay 设为 true(对于使用 OpenRTB Protobuf 格式的出价端点)或 1(对于使用 OpenRTB JSON 格式的出价端点)时,您才能指定此属性。

以下示例展示了包含应用安装归因信息的出价响应:

{
  "id": "9NaI48SmPW7Zf3MAHR43DY",
  "seatbid": [
    {
      "bid": [
        {
          "id": "9NaI48SmPW7Zf3MAHR43DY",
          // OMITTED...
          "ext": {
            // OMITTED...
            "skadn": {
              "version": "4.0",
              "network": "cF58w81X",
              "itunesitem": "788729094",
              "sourceapp": "1422994973",
              "fidelities": [
                {
                  "fidelity": 0,
                  "nonce": "017e597c-3c7d-4a44-afeb-41cd9a17066f",
                  "timestamp": "1757235407882",
                  "signature": "11iF1L96q2cw8tu790p301c10530ogr7h250k1P9pLxqcJ2qe37klG8xB3M592YbpafQ9861493838C521XA6AEF4A40DK8X"
                },
                {
                  "fidelity": 1,
                  "nonce": "017e597c-3c7d-4a44-afeb-41cd9a17066f",
                  "timestamp": "1757235407882",
                  "signature": "f67L3C138Y6XB7940141011Pd58AZbdBk9Xo1Mlf1973706DsB5808ILLKumU2ic9fr72b9bSs3CD25CCZo8DJB65JB0615L"
                }
              ],
              "sourceidentifier": "5507"
            },
            "app_promotion_type": 1
            // OMITTED...
          }
        }
      ]
      // OMITTED...
    }
  ]
  // OMITTED...
}

以下列表分享了与出价响应对应的 SKAdNetwork 预期行为:

  • 如果用户在观看广告至少 3 秒后的 24 小时内安装了所宣传的应用,系统会向广告客户发送 SKAdNetwork 完整观看归因回传通知。
  • 当用户点击广告时,系统会显示所宣传应用的内嵌商店叠加层;如果用户安装并打开所宣传的应用,系统会向广告客户发送 SKAdNetwork 点击型归因回传通知。

利用 SKOverlay 提高归因准确性

您可以在支持 SKOverlay 时显示 SKOverlay,从而提高您投放的 StoreKit 呈现广告的归因。SKOverlay 可让发布商的应用显示一个叠加层,让用户无需离开发布商的应用即可下载所宣传的应用。如需详细了解 SKOverlay,请参阅 SKOverlay。

当满足以下所有条件时,您会收到所宣传应用的安装归因:

  • SKOverlay 的展示时间不少于 3 秒。
  • 在 SKOverlay 显示后的 30 天内,用户安装了所宣传的应用。
  • 您的 SKOverlay 是在所宣传的应用安装之前最后显示的。

Google 支持为插页式广告或激励广告中投放的 HTML 代码段和 VAST 视频广告素材使用 SKOverlay。

确定是否支持 SKOverlay

收到出价请求后,您可以通过检查 BidRequest.imp.ext.skadn.skoverlay 字段的值来了解是否支持 SKOverlay。如果使用 OpenRTB Protobuf 格式的出价端点将 skoverlay 字段设置为 true,或者使用 OpenRTB JSON 格式的出价端点将该字段设置为 1,则支持 SKOverlay。

使用 SKOverlay 放置广告

如果支持 SKOverlay,您可以指定 BidResponse.seatbid.bid.ext.skadn.skoverlay 字段,以指明您要展示 SKOverlay。skoverlay 字段具有以下属性:

  • delay:一个整数,表示广告展示时间与 SKOverlay 展示时间之间的延迟时间(以秒为单位)。对于视频广告素材,展示时间是指视频开始播放的时间。如果未设置此字段,则不会显示 SKOverlay。
  • endcarddelay:一个整数,表示从视频广告素材的片尾卡片显示到 SKOverlay 显示之间的延迟时间(以秒为单位)。 如果未设置此字段,则 SKOverlay 不会在片尾卡片之后显示。仅适用于投放到插页式广告或激励广告中的 VAST 视频广告素材。
  • dismissible:一个布尔值,表示用户是否可以关闭 SKOverlay。

以下示例展示了出价响应:

{
  // OMITTED...
  "seatbid": [
    {
      "bid": [
        {
          // OMITTED...
          "ext": {
            // OMITTED...
            "skadn": {
              // OMITTED...
              "itunesitem": "422689480",
              "skoverlay": {
                "delay": 5,
                "endcarddelay": 0
              },
              "productpageid": "some_id"
            }
          }
        }
      ]
    }
  ]
}

查看预期的 SKOverlay 行为

以下是与上述出价响应对应的 SKOverlay 的预期行为:

  • 在视频开始播放 5 秒后显示 SKOverlay。
  • 在片尾卡片之后立即显示 SKOverlay。
  • 当用户点击 SKOverlay 时打开应用商店。

  • 如果指定了 BidResponse.seatbid.bid.ext.skadn.productpageid,SKOverlay 上的应用详情数据就是自定义产品页面中的图标。

  • 对于 VAST 视频广告素材,当用户点击 SDK 叠加广告时,系统会 ping 点击后到达网址和点击跟踪网址。

  • 对于 VAST 视频广告素材,即使用户在视频播放期间关闭了 SKOverlay,如果设置了 BidResponse.seatbid.bid.ext.skadn.skoverlay.endcarddelay 字段,SKOverlay 仍会在片尾卡片之后显示。