likes
comments
collection
share

iOS平台广告归因优化——使用SKAdNetwork归因

作者站长头像
站长
· 阅读数 3

什么是SKAdNetwork?

SKAdNetwork是苹果公司推出的一种广告追踪解决方案。它是一种基于隐私保护的广告转化追踪方式,旨在保护用户的隐私,同时仍然允许广告主获得有关其广告活动的有用数据。

使用SKAdNetwork,广告主可以通过苹果服务器获取有关其广告活动的数据,而无需直接访问用户的设备或隐私数据。此外,SKAdNetwork还可以帮助广告主遵守不同国家和地区的隐私保护法规,例如欧盟的GDPR和加拿大的PIPEDA。

SKAdNetwork归因可以帮助应用开发者更好地了解他们的广告系列效果,尤其是在iOS 14及以上版本中,因为苹果公司已经限制了第三方追踪和数据收集。通过使用SKAdNetwork归因,应用开发者可以获取应用的安装和转化数据,而无需使用设备标识符或其他敏感信息。这可以帮助他们更好地优化广告系列,并提高广告投资的回报率。

SKAdNetwork适用于iOS 14.0以上系统版本,低于iOS 14.0的版本可以考虑使用其他广告归因解决方案,例如IDFA或设备ID。

归因的流程

SKAdNetwork归因的整个流程的简单流程图如下: iOS平台广告归因优化——使用SKAdNetwork归因 该流程的主要步骤如下:

  1. Advertiser App中嵌入Ad Network SDK,向用户展示广告,当用户点击广告时,SDK将获取有关广告的信息并提交给Ad Network API。
  2. Ad Network API将广告数据发送到Apple Search Ads,若广告被识别为带有SKAdNetwork ID的广告,则Apple Search Ads将返回一个带有SKAdNetwork ID的响应。
  3. Ad Network SDK将SKAdNetwork ID和其他广告数据存储在设备上,并将这些信息发送回Ad Server。
  4. Ad Server将使用SKAdNetwork ID和其他广告数据来验证应用安装并报告转化事件。

请注意,该流程提供了有限的归因数据,例如应用安装数量、广告系列ID和转化事件。该流程仅适用于使用SKAdNetwork归因的广告,而不适用于传统的广告追踪方法。由于SKAdNetwork归因不收集个人身份信息,因此无法进行准确的用户追踪和定向。

虽然它提供了有限的归因数据,但它可以帮助应用开发者更好地了解他们的广告系列效果,并一定程度上提高广告投资的回报率。

SKAdNetwork的使用

要使用SKAdNetwork,需要在以下几个方面进行设置和配置:

  1. 在Xcode中添加SKAdNetwork框架。
  2. 在应用程序中实现SKAdNetwork接口,以便在应用程序发生广告转化时报告数据。
  3. 在苹果开发者账户中注册SKAdNetwork ID,并在info.plist文件中添加SKAdNetworkItems数组来包含注册的ID。
  4. 后端需要存储广告主的SKAdNetwork ID和相关数据,处理应用程序报告的广告转化数据,向苹果服务器请求广告数据,以及管理应用程序的SKAdNetwork配置。
  5. 为了获得广告数据和SKAdNetwork数据,可以使用Apple Search Ads API,需要在苹果开发者账户中注册,并在注册后获得API密钥和访问令牌。

以下是使用SKAdNetwork的示例代码:

在应用程序中实现SKAdNetwork接口

需要在应用程序中实现SKAdNetwork接口,以便在应用程序发生广告转化时报告数据。以下是一个示例:

import StoreKit
class MyViewController: UIViewController, SKAdNetworkDelegate {

override func viewDidLoad() {
super.viewDidLoad()

// Set the SKAdNetwork delegate
SKAdNetwork.registerAppForAdNetworkAttribution()
SKAdNetwork.registerAppForAdNetworkAttribution(self)
}

func updateConversionValue() {
// Get the current conversion value
var conversionValue = SKAdNetwork.conversionValue

// Update the conversion value
conversionValue += 1

// Set the new conversion value
SKAdNetwork.updateConversionValue(conversionValue)
}

// SKAdNetworkDelegate methods

func networkDidBecomeActive() {
// This method is called when the SKAdNetwork framework becomes active.
}

func didUpdateConversionValue(_ conversionValue: Int, for adNetwork: SKAdNetwork) {
// This method is called when the conversion value is updated.
}

func didFailWithError(_ error: Error, for adNetwork: SKAdNetwork) {
// This method is called when an error occurs.
}
}

在此示例中,我们创建了一个名为MyViewController的视图控制器,并将其设置为SKAdNetwork的委托。此外,我们还实现了updateConversionValue()方法,该方法用于更新广告转化值。

viewDidLoad()方法中,我们调用了registerAppForAdNetworkAttribution()方法,以便将应用程序注册到SKAdNetwork。我们还将self作为SKAdNetwork的委托对象,以便在广告转化事件发生时接收通知。

updateConversionValue()方法中,我们获取当前的广告转化值,并将其增加1。然后,我们使用updateConversionValue()方法将新的广告转化值设置回SKAdNetwork。

使用Server-to-Server的API获取广告数据

以下是使用Apple Search Ads API获取广告数据和SKAdNetwork数据的PHP示例代码:

<?php
// 设置授权信息
$access_token = "Your access token";
$header = array(
"Authorization: Bearer " . $access_token,
"Content-Type: application/json"
);
// 设置请求参数
$data = array(
"startTime" => "2023-07-20T00:00:00Z",
"endTime" => "2023-07-26T00:00:00Z",
"selector" => array(
"orderBy" => array(
array(
"field" => "date",
"sortOrder" => "ASCENDING"
)
),
"groupBy" => array(
"field" => "campaignId"
),
"conditions" => array(
array(
"field" => "countryCode",
"operator" => "EQUALS",
"values" => array("US")
)
)
),
"reportType" => "SA_APP_INSTALLS"
);
// 发送API请求
$url = "https://api.searchads.apple.com/api/v6/reports";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
// 解析API响应
$result = json_decode($response, true);
if (!empty($result['data'])) {
foreach ($result['data'] as $row) {
// 处理每一行数据
$date = $row['metadata']['date'];
$campaign_id = $row['metadata']['campaignId'];
$installs = $row['metrics']['installs'];
$skadnetwork_data = $row['skadNetworkData'];
// 处理SKAdNetwork数据
if (!empty($skadnetwork_data)) {
foreach ($skadnetwork_data as $network) {
$skadnetwork_id = $network['skadNetworkIdentifier'];
$skad_version = $network['version'];
$conversions = $network['conversions'];
// 处理每个SKAdNetwork的数据
}
}
}
}

以上代码演示如何使用PHP发送API请求以获取指定日期范围内的广告数据和SKAdNetwork数据。将Your access token替换为自己的访问令牌,并根据需求修改请求参数。

该接口返回的元数据包含有关请求和响应的信息,例如请求的时间范围、请求的字段和筛选条件等。实际的广告数据包含所请求的广告系列、广告组和广告的详细数据,例如展示量、点击量、转化事件、花费、收入等指标。

以下是一个JSON格式的示例API响应:

{
"version": "4.0",
"ad-network-id": "com.example", 
"source-identifier": "xx",
"app-id": "xxxxxxxx",
"transaction-id": "xxxxxxxxxxxxxxxx",
"redownload": false,
"source-domain": "example.com",
"fidelity-type": 1,
"did-win": true,
"conversion-value":66,
"coarse-conversion-value": "high",
"postback-sequence-index": 0,
"attribution-signature": "xxxxxxxxxxxxxxxxxxx"
}

返回参数说明:

参数说明
versionSKAdNetwork版本号
ad-network-id广告平台ID
source-identifier取代 campaign-id 的分层来源标识符。此字符串表示原始值的两位数、三位数或四位数。
app-id投放广告的 App Store App ID
transaction-id用于转化验证,去重安装验证回传。
redownload是否重复下载
source-domain仅适用于 Web 广告。SKAdNetwork for Web Ads 投放广告的来源域名,字段值与 source-app-id 是对立,两者只会返回其一。
fidelity-type值为 0 表示页面展示类型的广告;值为 1 表示 StoreKit 渲染的广告或 SKAdNetwork 归因的 Web 广告。
did-win如果广告网络赢得归因,则为 true,如果回传代表没有赢得归因的合格广告效果,则为 false。(注意:只有为 ture 时,才会包含字段 source-app-id 和值。)
conversion-value转化值。只有当已安装的 app 提供转换值,并且提供参数满足苹果的隐私阈值时,conversion-value 才会出现在回传中。
coarse-conversion-value粗粒度的转换值,可能的值为字符串 "low"、"medium" 和 "high"。系统在较低的回传数据层以及第二次和第三次回传中发送该值,且不会返回转化值(conversion-value)。
postback-sequence-index可能的整数值 0、1 和 2。分别表示由三个转换窗口产生的回传顺序
attribution-signature需要验证的 Apple 的归因签名。

在实践中,开发者需要思考调用的时机,并且对conversion-value数值做良好的定义,就能达到衡量广告用户质量的目的。

后端需要做些什么

在使用SKAdNetwork时,后端需要做以下工作:

  1. 在服务器上存储广告主的SKAdNetwork ID和相关数据。当应用程序报告广告转化时,后端需要检查报告中的SKAdNetwork ID是否与服务器上存储的ID匹配,以确保报告来自有效的广告主。
  2. 处理应用程序报告的广告转化数据。当应用程序报告广告转化时,后端需要处理报告中的转化数据,并将其存储在服务器上。然后,后端可以使用这些数据来分析广告转化和用户行为。
  3. 向苹果服务器请求广告数据。广告主可以向苹果服务器请求广告数据,以了解其广告在应用程序中的效果。后端需要负责向苹果服务器发送请求,并将响应数据返回给广告主。
  4. 管理应用程序的SKAdNetwork配置。后端需要确保应用程序的SKAdNetwork配置与服务器上存储的配置匹配。如果配置不匹配,后端需要通知广告主,以便其更新其应用程序的配置。