什么是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  |
                      +---------------+      +--------------+

该流程的主要步骤如下:

  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替换为自己的拜访令牌,并依据需求修正恳求参数。

该接口回来的元数据包括有关恳求和呼应的信息,例如恳求的时间范围、恳求的字段和挑选条件等。实际的广告数据包括所恳求的广告系列、广告组和广告的具体数据,例如展现量、点击量、转化事情、花费、收入等指标。

以下是一个示例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, // 或许的整数值 012。别离表明由三个转化窗口产生的回传次序
  "attribution-signature": "xxxxxxxxxxxxxxxxxxx" // 需求验证的 Apple 的归因签名。
}

在实践中,开发者需求考虑调用的时机,而且对conversion-value数值做良好的界说,就能达到衡量广告用户质量的意图。

后端需求做些什么

在运用SKAdNetwork时,后端需求做以下作业:

  1. 在服务器上存储广告主的SKAdNetwork ID和相关数据。当运用程序陈述广告转化时,后端需求检查陈述中的SKAdNetwork ID是否与服务器上存储的ID匹配,以保证陈述来自有用的广告主。
  2. 处理运用程序陈述的广告转化数据。当运用程序陈述广告转化时,后端需求处理陈述中的转化数据,并将其存储在服务器上。然后,后端能够运用这些数据来剖析广告转化和用户行为。
  3. 向苹果服务器恳求广告数据。广告主能够向苹果服务器恳求广告数据,以了解其广告在运用程序中的作用。后端需求负责向苹果服务器发送恳求,并将呼应数据回来给广告主。
  4. 办理运用程序的SKAdNetwork装备。后端需求保证运用程序的SKAdNetwork装备与服务器上存储的装备匹配。假如装备不匹配,后端需求告诉广告主,以便其更新其运用程序的装备。