大多数浏览器和
Developer App 均支持流媒体播放。
-
了解 AdAttributionKit
为你介绍 AdAttributionKit — 助力实现隐私保护广告归因的全新 iOS 框架。了解 AdAttributionKit 如何为众多功能提供支持,例如再互动、点按型归因 (包括支持自定广告素材)、JWS 格式的展示次数和回传。我们将深入介绍如何测试你的 AdAttributionKit 实现,并深入探索代码片段以及 AdAttributionKit 应用方面的推荐做法。
章节
- 0:00 - Introduction
- 2:05 - Fetching ads
- 3:55 - Displaying ads
- 8:18 - Postbacks
- 16:28 - Re-engagement
- 21:09 - Testing AdAttributionKit
资源
- AdAttributionKit
- Attributing ads with SKAdNetwork and Private Click Measurement
- Forum: App & System Services
相关视频
WWDC22
-
下载
大家好 我叫 Nikhil 来自 App Store Engineering 团队 今天我们来探讨 AdAttributionKit 在 Apple 隐私是我们 一切工作的重中之重 隐私保护广告归因 能够在保护用户隐私的同时 实现广告归因
隐私保护广告归因 基于人群匿名性而构建
总的来说 人群匿名性 会在转化率较低的情况下 向广告网络和广告主 发回较少的数据
随着人群规模的扩大 系统会发回更多数据
一旦人群规模超过最高水平 将向广告网络和广告主 返回最大数据量
SKAdNetwork 是 Apple 的首个 隐私保护广告归因框架 由人群匿名性提供支持 今天 我很高兴 向大家介绍 AdAttributionKit 我们基于 SKAdNetwork 基本原理 为 iOS 和 iPadOS 开发了这个 全新的广告归因框架 首先 让我们来简要 了解一下广告归因
广告网络会生成和签署广告 并向发布商 App 投放广告
发布商 App 向他们的 用户展示广告
用户安装所推广的 App 随着他们使用一段时间 并在衡量期结束后 将向广告网络发送 包含转化信息的回传数据
了解整个流程后 接下来看看今天我将介绍的主题 首先 我们会讨论如何获取广告 以及 AdAttributionKit 中 新的广告展示格式 然后 我们会探讨如何展示广告 之后再谈谈回传 最后 我们会讨论重新吸引用户 并简要介绍 AdAttributionKit 测试
现在我们来谈谈获取广告 广告是归因流程的输入 发布商 App 会从 广告网络获取广告数据 这些广告数据采用紧凑型 JWS 格式 接下来我将介绍一下各个字段 这是一次 JSON 形式的广告展示
我来介绍几个重要的字段
“advertised-item-identifier” 是所推广 App 的 App ID
“publisher-item-identifier” 是展示广告的 App 的 App ID
“source-identifier” 是一个 4 位整数 用于表示广告系列的相关信息 这个字段保留了 SKAdNetwork 4.0 中的相同行为
有关 JSON 字段的详细信息 可参阅本讲座所链接的 AdAttributionKit 文档
了解这个结构后 我们来继续讨论一下广告展示 AppImpression 实例 代表广告展示 这些实例使用上一部分中介绍的 广告的紧凑型 JWS 表示形式 进行了初始化
现在我将演示如何利用 紧凑型 JWS 创建 App 展示
首先 获取广告的 紧凑型 JWS 表示形式 请注意 fetchAdImpressionJWS() 方法未显示已实现 因为这完全取决于 与广告提供商或广告网络的 集成方式
然后 将这个 jwsString 传递到 AppImpression 的构造器 在下一部分中 讨论广告展示时 将使用这个 AppImpression 实例
AdAttributionKit 支持 3 种不同的广告展示方法 下面我们来看看 我要展示哪些广告来推广我的 App
第一个广告是可点按的 自定创意广告 轻点自定点按广告 会引导用户进入一个市场 他们可以从中安装所推广的 App
这是另一个屏幕上的浏览型广告 例如 视频广告便属于 这类广告内容
另一种广告类型 会直接推荐所推广的 App 为此 我可以使用 SKOverlay 它在我的 App 上下文中 显示为横幅
或者 也可以使用 SKStoreProductViewController 它具有更多的全屏展示模式 但仍在 App 的范围内 SKOverlay 和 SKStoreProductViewController 都采用 iOS 设计语言 非常容易采用 并插入我的 App 中
下面介绍一下如何实现 自定点按广告
首先 创建 customAdView
然后 创建 UIEventAttributionView 的实例 并将它添加为广告视图的子视图
请注意 UIEventAttributionView 必须位于任何接收用户互动的 视图之上
设置广告视图后 让我们来处理点按事件 当用户轻点广告视图时 我会获取 appImpression 实例 并对它调用 handleTap() 方法
请注意 必须 在 appImpression 实例 初始化后 15 分钟内 调用 handleTap 超过 15 分钟后 需创建 一个新的 appImpression 实例
当发生点按 并调用 handleTap 方法时 AdAttributionKit 会引导用户进入一个市场 他们可以从中安装所推广的 App
对于浏览型广告 我之前提到过视频广告的用法 但是 浏览型广告 可以涵盖各种自定广告展示形式
我使用一个简单的时间线 来帮助直观地了解所涉及的 事件和 API 调用
当广告展示开始时 在 appImpression 实例上 调用 beginView() API
当广告展示结束时 在 appImpression 实例上 调用 endView() API
在浏览型视频广告的具体案例中 视频开始播放时 对 appImpression 实例调用 beginView()
视频播放结束时 对 appImpression 实例调用 endView() 关于浏览型广告有几点需要注意 自定广告内容 至少需要展示 2 秒钟 也就是说 从调用 beginView() 到调用 endView() 之间的时间 应至少为 2 秒钟 这符合这类广告内容的行业标准
beginView 和 endView 需要 在同一 appImpression 实例上调用
并且同一个广告网络 不能同时为同一推广 App 打开多个浏览型广告展示 每一个开始调用都必须 与一个结束调用相平衡
接下来是 SKOverlay
在 AdAttributionKit 中 SKOverlay 的实现遵循 与 SKAdNetwork 相同的模式 我们使用 AppConfiguration 实例来设置 SKOverlay
你需要将 appImpression 实例设置为 AppConfiguration 上 新的 appImpression 属性
最后是 SKStoreProductViewController SKStoreProductViewController 的设置 与 SKAdNetwork 中的设置类似
调用 loadProduct 方法 来准备产品页面 UI 以供展示
主要区别在于 loadProduct 方法 中的 impression 参数 你将向它传递 appImpression 实例
现在来了解一下回传
回传是归因系统的输出 它们是发送到 广告网络的转化信号 也可以选择发送到 所推广的 App 的开发者
AdAttributionKit 以签名的 紧凑型 JWS 和一些未签名字段的 组合形式发送回传 这是签名部分
我们来重点了解几个重要的字段
“conversion-type”字段包含 有关创建这个回传的 转化类型信息 这个字段的值可以是 download、 redownload 或 re-engagement
“marketplace-identifier”字段 包含发生转化的 市场的标识符 在我们的示例中 由于下载 是在 Apple App Store 上进行的 这个字段的值为 “com.apple.AppStore”
“publisher-item-identifier” 是展示原始广告的 App 的标识符 对于低级别的人群匿名性 这将不会被包括在回传中
“source-identifier” 最少为 2 位数 最多为 4 位数 人群匿名性决定了 回传中包含的位数
现在我们来看看 回传请求正文的其他部分
“jws-string”键 包含我们刚刚介绍的 JSON 字段的 JWS 紧凑型表示形式 请注意 为简洁起见 这里只显示了一个占位符 而不是实际字符串
“ad-interaction-type”键 包含用户 如何与广告互动的信息 可能的值为 “click”和“view” 我将在后面的章节中 详细介绍这个键
“conversion-value”键包含 由所推广 App 对 AdAttributionKit 进行 API 调用所确定的转化值
请注意“conversion-value”也是 受人群匿名性控制的字段 因此不保证一定会出现在回传中
如果人群匿名性确定数据限额不高 你可能会收到 “coarse-conversion-value” 而不是“conversion-value”
或者可能根本不会收到转化值
回到完整的回传请求正文 我想更深入地探讨两个主题 “conversion-value” 和“ad-interaction-type”
首先来看看转化值 转化值可用于衡量广告效果 换言之 这个广告系列 对我的推广需求来说有多大价值? 转化值还可用于推导 广告支出回报率 (ROAS) 信息 这是确定未来广告支出 和相关优化的重要启发式方法 请注意 转化值可精细可粗略 这由人群匿名性决定 我将介绍 3 个 希望通过 AdAttributionKit 衡量用户参与度 并更新“conversion-value”的场景
我们先来看一个账户创建场景
假设我们在 App 中使用 处理账户创建的方法
我先创建 一个 PostbackUpdate 结构 然后针对 Postback 类型 调用 updateConversionValue 方法 以执行更新
我们来详细了解一下 PostbackUpdate 结构的属性
第一个参数是 fineConversionValue 这是一个介于 0 到 63 之间的 正整数 包括 0 和 63 请注意 fineConversionValue 的值 需要在语义上对我的广告系列 以及它的效果衡量具有意义 通常情况下 转化值的架构 将在所推广 App 的开发者、 选择的广告网络 以及可能选择合作的任何 MMP 之间进行讨论和规划后确定
第二个参数用于锁定回传 锁定是 告知 AdAttributionKit 我已完成对特定转化窗口的 转化值的衡量和记录的 一种方式 这样 AdAttributionKit 就可以冻结回传 并立即安排传输
另一种理解方式是 发生了一个价值极高的事件 我希望尽快了解 这个事件的时间紧迫性 胜过在这一转化窗口内 衡量的任何其他指标 因此 我调用锁定 AdAttributionKit 知道要冻结 并安排回传
账户创建对我来说 没有足够的价值来锁定回传 因此我对 lock 参数使用 false
最后一个参数是粗略转化值 可以是以下三个字符串值之一: low、medium 或 high 如前所述 当人群匿名性决定 无法发送精细值时 将在回传中发送粗略值
创建账户后 用户观看了第一段视频 我认为这是一个价值较高的事件 因此将 fineConversionValue 更新为 38
用户观看视频的价值 还不足以让我锁定回传 因此这个参数为 false
如果人群匿名性导致无法传递精细值 我会将 coarseConversionValue 设置为“medium”作为回退衡量标准
最后 用户上传了一段视频 我认为这是价值极高的参与 因此将精细值更新为 42
视频创作是一个价值极高的事件 我希望尽快收到回传 因此 我通过 API 中的 lockPostback 参数锁定了回传
请注意 锁定回传不会导致即时传输 这种延迟传输行为是为了 进一步保护用户隐私
同样 我将 coarseConversionValue 设置为“high”作为回退衡量标准
你可以使用 PostbackUpdate 结构 为 App 中的不同场景 设置转化值
关于回传的最后一个要点 是广告互动类型
AdAttributionKit 会区分 用户轻点广告 和仅查看广告 这一信息对于 选择促成转化的广告至关重要
根据用户与广告的互动情况 回传中的广告互动类型值为 “click”或“view” 让我们回顾一下这个字段 在不同展示方式下的值
对于自定点按广告 查看广告不会产生展示次数
轻点这个广告 会产生“click”类型的广告互动
对于浏览型广告 查看广告 会产生“view”类型的广告互动 轻点广告不会产生展示次数
对于 SKOverlay 展示广告会产生 “view”类型的广告互动 轻点它则产生“click”互动
同样 对于 SKStoreProductViewController 展示广告会产生“view”类型互动 轻点广告会产生“click”类型互动
转化值和广告互动类型 提供有关用户 与你的 App 和推动安装的广告 互动的详细信息 下面我们来了解一下较新的事件 即重新吸引用户 广告归因的主要目的 是将转化事件归因于 一次展示事件 在目前的示例中 我均使用 安装作为转化事件 许多广告系列的初始目标 是推动安装 App 这很容易理解 因为安装是用户 使用 App 的第一步
现在 我们来谈谈 一种新的转化事件类型 重新吸引 对于重新吸引用户的广告系列 目的是吸引用户再次使用 所推广的 App
设想一下 已安装所推广 App 的用户 停止了使用 而所推广 App 希望找回这个用户
于是 他们投放了一则限时优惠广告 当用户轻点广告时 AdAttributionKit 会打开 所推广的 App 并显示优惠页面 开始重新吸引用户
我们来看看 重新吸引用户的广告展示 为了选择重新吸引用户 我将向有效负载中再添加一个参数
“eligible-for-re-engagement”
这个参数告知 AdAttributionKit 相应广告展示应被视为 重新吸引转化
带“eligible-for-re-engagement” 属性的广告展示 被视为重新吸引或安装转化 具体取决于是否安装了 所推广的 App
对于没有选择重新吸引用户的 普通广告展示 仅考虑将它纳入安装转化
这里展示了如何在代码中 启动重新吸引
我使用 jwsString 创建了 AppImpression 实例 请注意 这是已选择 重新吸引的 JWS 展示
然后 在广告视图的点按处理程序中 首先我会获取 希望用户在所推广 App 中 访问的通用链接
然后 在 appImpression 实例上 调用 handleTap() 方法 并传入 reengagementURL 这项调用会让 AdAttributionKit 打开所推广的 App
在打开所推广的 App 时 系统会将重新吸引 URL 传递给它 注意附加到重新吸引 URL 的 查询参数 AdAttributionKit 会在重新吸引 过程中将这个参数附加到 URL
所推广的 App 可以查看这个参数 以确定是否是由 AdAttributionKit 的重新吸引促成打开事件
SKOverlay 和 SKStoreProductViewController 也与重新吸引用户兼容
这两者的设置与 install 非常相似
要在所推广的 App 中 打开通用链接 可以使用 SKOverlay 上的 adAttributionReengagementURL 属性
对于 SKStoreProductViewController 可以在 loadProduct 方法中 使用 reengagementURL 参数 让我们来谈谈为重新吸引转化 发送的回传
回传中的转化类型键的值 将是 re-engagement
重新吸引转化 只能有“click”广告互动类型 AdAttributionKit 不支持 浏览型重新吸引
更新转化值的第一次调用 必须在转化后 48 小时内进行
可以有选择性地更新 重新吸引回传 与安装回传分开 我来展示一下如何操作
回到之前看到的 PostbackUpdate 结构
使用 conversionTypes 参数 可控制要更新哪些回传
对于仅更新重新吸引回传 我针对 conversionTypes 使用 .reengagement 值
对于仅更新安装回传 我针对 conversionTypes 使用 .install 值
对于更新所有回传 我针对 conversionTypes 同时使用 .install 和 .reengagement 值 如果 conversionTypes 参数为 nil AdAttributionKit 还会更新所有回传
这就涵盖了重新吸引 除了安装之外 还能全面展示用户与 App 的 互动情况 由于异步设计的必要性和目的 测试 AdAttributionKit 可能会很困难
为加强隐私行为 而进行的时间随机化 进一步加剧了这种异步性 为了提高可测试性 我们为 AdAttributionKit 提供了新的开发者模式
开发者模式取消了 系统中的时间随机化 使它具有时间确定性 这缩短了转换窗口 因此可以在便于测试的时间范围内 对所有三个窗口中的 转换值更新进行测试
开发者模式还能加快回传速度 以协助测试 下面我们来了解一下如何 启用开发者模式
在 iOS“设置”中 导航到“开发者”菜单 向下滚动到“AdAttributionKit 开发者模式”切换开关
打开开关后 AdAttributionkit 即开始 以开发者模式运行 系统中的持续时间会缩短 以便更快进行测试
以上就是我今天为大家介绍的 有关 AdAttributionKit 的全部内容 它是 Apple 为 iOS 和 iPadOS 推出的 全新隐私保护广告归因框架
作为广告网络 如果你已注册使用 SKAdNetwork 则无需再注册 如果没有注册 首先要通过 AdAttributionKit 注册广告网络
注册之后 下一步是 使用 AdAttributionKit 提供 新的 JWS 格式广告并进行展示
对于所推广的 App 采用新的 AdAttributionKit API 来更新转化值
在服务器端 接收新的 JWS 格式回传 并进行解析以供分析
对于今天讨论的所有功能 请注意 AdAttributionKit 与 SKAdNetwork 完全可互操作 有关 SKAdNetwork 的更多信息 请观看 WWDC22 讲座 “SKAdNetwork 的新功能”
最后 我们的 AdAttributionKit 文档 是帮助你开始整合 AdAttributionKit 的绝佳资源 非常感谢大家观看
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。