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

什么是SKAdNetwork?

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

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

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

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

归因的流程

SKAdNetwork归因的整个流程的简单流程图如下:

lua 复制代码
+-----------------+      +---------------+    +--------------+
|                 |      |               |    |              |
|  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接口,以便在应用程序发生广告转化时报告数据。以下是一个示例:

swift 复制代码
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 复制代码
<?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格式:

ruby 复制代码
{
  "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时,后端需要做以下工作:

  1. 在服务器上存储广告主的SKAdNetwork ID和相关数据。当应用程序报告广告转化时,后端需要检查报告中的SKAdNetwork ID是否与服务器上存储的ID匹配,以确保报告来自有效的广告主。
  2. 处理应用程序报告的广告转化数据。当应用程序报告广告转化时,后端需要处理报告中的转化数据,并将其存储在服务器上。然后,后端可以使用这些数据来分析广告转化和用户行为。
  3. 向苹果服务器请求广告数据。广告主可以向苹果服务器请求广告数据,以了解其广告在应用程序中的效果。后端需要负责向苹果服务器发送请求,并将响应数据返回给广告主。
  4. 管理应用程序的SKAdNetwork配置。后端需要确保应用程序的SKAdNetwork配置与服务器上存储的配置匹配。如果配置不匹配,后端需要通知广告主,以便其更新其应用程序的配置。
相关推荐
汤米粥1 小时前
小皮PHP连接数据库提示could not find driver
开发语言·php
iFlyCai3 小时前
Xcode 16 pod init失败的解决方案
ios·xcode·swift
fakaifa3 小时前
CRMEB Pro版v3.1源码全开源+PC端+Uniapp前端+搭建教程
前端·小程序·uni-app·php·源码下载
万岳软件开发小城6 小时前
外卖跑腿APP开发实战:如何基于同城O2O系统源码搭建平台
php·app开发·同城o2o系统源码·同城外卖跑腿系统源码·外卖平台开发·外卖app
数勋API8 小时前
银行卡归属地查询API接口如何用PHP调用
开发语言·云计算·php
多客软件佳佳8 小时前
校园交友系统的设计与实现(开源版+三端交付+搭建+售后)
小程序·前端框架·uni-app·开源·php·交友
网络安全-海哥10 小时前
【VLANPWN】一款针对VLAN的安全研究和渗透测试工具
开发语言·javascript·安全·ecmascript·php·网安入门
豆豆11 小时前
如何选择企业网站模版来搭建网站?
服务器·开发语言·前端·php·软件构建
郝晨妤12 小时前
HarmonyOS和OpenHarmony区别是什么?鸿蒙和安卓IOS的区别是什么?
android·ios·harmonyos·鸿蒙
Hgc5588866612 小时前
iOS 18.1,未公开的新功能
ios