什么是SKAdNetwork?
SKAdNetwork是苹果公司推出的一种广告盯梢解决方案。它是一种依据隐私维护的广告转化盯梢办法,旨在维护用户的隐私,同时仍然允许广告主取得有关其广告活动的有用数据。
运用SKAdNetwork,广告主能够通过苹果服务器获取有关其广告活动的数据,而无需直接拜访用户的设备或隐私数据。此外,SKAdNetwork还能够协助广告主遵守不同国家和地区的隐私维护法规,例如欧盟的GDPR和加拿大的PIPEDA。
另外,SKAdNetwork归因还能够协助运用开发者更好地了解他们的广告系列作用,尤其是在iOS 14及以上版别中,因为苹果公司现已限制了第三方盯梢和数据搜集。通过运用SKAdNetwork归因,运用开发者能够获取运用的装置和转化数据,而无需运用设备标识符或其他灵敏信息。这能够协助他们更好地优化广告系列,并提高广告出资的回报率。
SKAdNetwork适用于iOS 14.0以上体系版别,低于iOS 14.0的版别能够考虑运用其他广告归因解决方案,例如IDFA或设备ID。
归因的流程
SKAdNetwork归因的整个流程的简略流程图如下:
+-----------------+ +---------------+ +--------------+
| | | | | |
| Advertiser App +--->--+ Ad Network SDK+--->+ Apple Store |
| | | | | |
+-----------------+ +---------------+ +--------------+
| |
| |
| |
| |
+---------------+ +--------------+
| | | |
| Ad Network API+<-----+Apple Search Ads|
| | | |
+---------------+ +--------------+
| |
| |
| |
| |
+---------------+ +--------------+
| | | |
| Ad Server +<-----+ Install |
| | | Validation |
+---------------+ +--------------+
该流程的主要步骤如下:
-
Advertiser App中嵌入Ad Network SDK,向用户展现广告,当用户点击广告时,SDK将获取有关广告的信息并提交给Ad Network API。
-
Ad Network API将广告数据发送到Apple Search Ads,若广告被识别为带有SKAdNetwork ID的广告,则Apple Search Ads将回来一个带有SKAdNetwork ID的呼应。
-
Ad Network SDK将SKAdNetwork ID和其他广告数据存储在设备上,并将这些信息发送回Ad Server。
-
Ad Server将运用SKAdNetwork ID和其他广告数据来验证运用装置并陈述转化事情。
请注意,该流程供给了有限的归因数据,例如运用装置数量、广告系列ID和转化事情。该流程仅适用于运用SKAdNetwork归因的广告,而不适用于传统的广告追寻办法。由于SKAdNetwork归因不搜集个人身份信息,因而无法进行准确的用户盯梢和定向。
尽管它供给了有限的归因数据,但它能够协助运用开发者更好地了解他们的广告系列作用,并一定程度上提高广告出资的回报率。
SKAdNetwork的运用
要运用SKAdNetwork,需求在以下几个方面进行设置和装备:
- 在Xcode中添加SKAdNetwork框架。
- 在运用程序中完成SKAdNetwork接口,以便在运用程序产生广告转化时陈述数据。
- 在苹果开发者账户中注册SKAdNetwork ID,并在info.plist文件中添加SKAdNetworkItems数组来包括注册的ID。
- 后端需求存储广告主的SKAdNetwork ID和相关数据,处理运用程序陈述的广告转化数据,向苹果服务器恳求广告数据,以及办理运用程序的SKAdNetwork装备。
- 为了取得广告数据和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
替换为自己的拜访令牌,并依据需求修正恳求参数。
该接口回来的元数据包括有关恳求和呼应的信息,例如恳求的时间范围、恳求的字段和挑选条件等。实际的广告数据包括所恳求的广告系列、广告组和广告的具体数据,例如展现量、点击量、转化事情、花费、收入等指标。
以下是一个示例API呼应的JSON格局:
{
"version": "4.0", // SKAdNetwork版别号
"ad-network-id": "com.example", // 广告平台ID
"source-identifier": "xx", // 取代 campaign-id 的分层来历标识符。此字符串表明原始值的两位数、三位数或四位数。
"app-id": xxxxxx, // 投进广告的 App Store App ID
"transaction-id": "xxxxxxxxxxxxxxxx", // 用于转化验证,去重装置验证回传。
"redownload": false, // 是否重复下载
"source-domain": "example.com", // 仅适用于 Web 广告。SKAdNetwork for Web Ads 投进广告的来历域名,字段值与 source-app-id 是对立,两者只会回来其一。
"fidelity-type": 1, // 值为 0 表明页面展现类型的广告;值为 1 表明 StoreKit 渲染的广告或 SKAdNetwork 归因的 Web 广告。
"did-win": true, // 假如广告网络赢得归因,则为 true,假如回传代表没有赢得归因的合格广告作用,则为 false。(注意:只有为 ture 时,才会包括字段 source-app-id 和值。)
"conversion-value":66, // 转化值。只有当已装置的 app 供给转化值,而且供给参数满足苹果的隐私阈值时,conversion-value 才会出现在回传中。
"coarse-conversion-value": "high", // 粗粒度的转化值,或许的值为字符串 "low"、"medium" 和 "high"。体系在较低的回传数据层以及第二次和第三次回传中发送该值,且不会回来转化值(conversion-value)。
"postback-sequence-index": 0, // 或许的整数值 0、1 和 2。别离表明由三个转化窗口产生的回传次序
"attribution-signature": "xxxxxxxxxxxxxxxxxxx" // 需求验证的 Apple 的归因签名。
}
在实践中,开发者需求考虑调用的时机,而且对conversion-value
数值做良好的界说,就能达到衡量广告用户质量的意图。
后端需求做些什么
在运用SKAdNetwork时,后端需求做以下作业:
- 在服务器上存储广告主的SKAdNetwork ID和相关数据。当运用程序陈述广告转化时,后端需求检查陈述中的SKAdNetwork ID是否与服务器上存储的ID匹配,以保证陈述来自有用的广告主。
- 处理运用程序陈述的广告转化数据。当运用程序陈述广告转化时,后端需求处理陈述中的转化数据,并将其存储在服务器上。然后,后端能够运用这些数据来剖析广告转化和用户行为。
- 向苹果服务器恳求广告数据。广告主能够向苹果服务器恳求广告数据,以了解其广告在运用程序中的作用。后端需求负责向苹果服务器发送恳求,并将呼应数据回来给广告主。
- 办理运用程序的SKAdNetwork装备。后端需求保证运用程序的SKAdNetwork装备与服务器上存储的装备匹配。假如装备不匹配,后端需求告诉广告主,以便其更新其运用程序的装备。