Server-to-Server - 移动应用 S2S 指南

概述

本指南介绍在共享 S2S 机制之上叠加的移动端专属归因信号:Apple Search Ads、Google Play 和 Meta 安装引荐来源、卸载追踪以及 iOS 安装收据。它适用于以 server-to-server 方式上报会话和事件的 iOS 和 Android 应用集成。

开始之前: 这些功能构建于共享的 S2S 请求流程之上。有关核心概念,请参阅 S2S 基础知识中心;有关身份验证和通用参数,请参阅 SESSION 端点参考EVENT 端点参考

相关移动指南: 要将用户从广告系列引导至您的应用,请参阅深度链接指南了解通过 S2S 实现的深度链接和延迟深度链接。


Apple Search Ads 归因

iOS Search Ads 集成

Apple Search Ads 是一种自归因网络 (SAN),需要通过 Apple 框架进行平台专属的归因实现。

框架支持:

  • AdServices(iOS 14.3 及以上): AdServices 框架. 当前推荐的集成方式。
  • iAd(iOS 14.2 及以下): iAd 框架. 旧版框架,已被 Apple 弃用;不建议用于新集成。

完整指南: Apple Search Ads 集成文档


AdServices 框架实现

针对 iOS 14.3 及以上版本,通过 AdServices 框架检索并发送归因令牌。

第 1 步:检索归因令牌

Objective-C
#import <AdServices/AdServices.h>

NSError *error = nil;
Class AAAttributionClass = NSClassFromString(@"AAAttribution");
if (AAAttributionClass) {
    NSString *attributionToken = [AAAttributionClass attributionTokenWithError:&error];
    if (!error && attributionToken) {
        // Handle attributionToken
    }
}

令牌特性:

  • 在设备上生成
  • 缓存 5 分钟——如果调用 attributionToken() ,则会在过期后生成新令牌
  • 有效期为 24 小时

第 2 步:发送至 Singular

对令牌进行 URL 编码,并在每次安装和重装后的首个会话上,将其作为 attribution_token 参数附加到 SESSION 端点


Google Play 安装引荐来源

Android 安装归因

Google Play 安装引荐来源提供最准确的 Android 安装归因,其中包含用户在到达 Play Store 之前的来源信息。

在以下情况下为必需项:

更多信息: Google 安装引荐来源文档

实现步骤:

  1. 在首次打开应用时,使用 Play Install Referrer API 检索安装引荐来源
  2. 通过 SESSION 端点 上报会话,其中包含带有必需属性的 install_ref JSON 参数

install_ref 属性:

参数 详情
referrer

来自 Play Install Referrer API 的引荐来源值(JSON 对象——编码为字符串)

referrer_source

指定为 service

clickTimestampSeconds

来自 API 的点击时间戳(例如 1550420123

installBeginTimestampSeconds

来自 API 的安装开始时间

current_device_time

当前设备时间(毫秒,例如 1550420454906


Meta 安装引荐来源

Facebook 归因增强

自 2025 年 6 月 18 日起: Meta 的 高级移动测量 (AMM) 消除了实现 Meta 安装引荐来源的需求。如果已启用 AMM,则不推荐使用。

Meta Referrer 是 Android 专属的测量解决方案,结合了 Google Play 安装引荐来源和 Meta 安装引荐来源技术,为应用安装提供精细的用户级归因数据。

了解更多: Meta Referrer 常见问题

实现步骤:

  1. 在首次打开应用时,根据 Meta 的文档 检索 Meta 安装引荐来源
  2. 通过 SESSION 端点 上报会话,其中包含带有必需属性的 meta_ref JSON 参数

meta_ref 属性:

参数 详情
is_ct

来自 Meta 安装引荐来源的 is_ct(01

install_referrer

来自 Meta 安装引荐来源的 install_referrer

actual_timestamp

来自 Meta 安装引荐来源的 actual_timestamp(例如 1693978124


卸载追踪

静默推送通知设置

通过在每次会话通知中发送推送令牌,使用设备静默推送通知来追踪卸载。

设置要求:

  1. 遵循平台专属的卸载追踪设置:
  2. 将平台专属的令牌附加到 SESSION 请求:

iOS 安装收据

收据验证

在上报 iOS 会话时,将 iOS 安装收据传入 install_receipt 参数。

Swift
import Foundation
import StoreKit

class ReceiptManager {
    static func getInstallReceipt() -> String? {
        if #available(iOS 18.0, *) {
            let semaphore = DispatchSemaphore(value: 0)
            var result: String?

            Task {
                do {
                    let transaction = try await AppTransaction.shared
                    result = transaction.jwsRepresentation
                    semaphore.signal()
                } catch {
                    debugPrint("Failed to get app transaction: \(error.localizedDescription)")
                    semaphore.signal()
                }
            }

            semaphore.wait()
            return result

        } else {
            guard let receiptURL = Bundle.main.appStoreReceiptURL else {
                debugPrint("Receipt URL not found")
                return nil
            }

            do {
                let receiptData = try Data(contentsOf: receiptURL, options: .uncached)
                return receiptData.base64EncodedString(options: [])
            } catch {
                debugPrint("Failed to read receipt: \(error.localizedDescription)")
                return nil
            }
        }
    }
}