https://www.liangjianghu.com/docs/ios14-user-privarcy-idfa-skadnetwork-api-document.html
概要
2018年5月,蘋果推出了一個新API,叫做 SKAdNetwork,可以在保護用戶隱私的同時進行APP歸因,但沒有得到廣泛使用。
直至2020年,在6月22日舉行的WWDC(全球開發者大會)上,蘋果宣布了很多新的隱私政策。在 iOS 14 系統中,App 在獲取 IDFA 時將和獲取地理位置、相機權限一樣,需要明確請求用戶的許可。這就意味着如果不能經過用戶允許,數據不能被用於定向廣告,廣告商不能共享用戶的信息,這讓過去通過 IDFA 來實現的廣告歸因和效果衡量變得接近無效。
蘋果剛對 SKAdNetwork 進行了更新,根據官方最新文檔,下面對其技術實施做一個介紹。如開發者有疑問,可以聯系量江湖技術產品團隊溝通探討,QQ/微信:1098663。
這個API需要以下參與方:
- 廣告網絡(Ad Network):對廣告簽名,當廣告帶來轉化時接收安裝通知
- 來源應用(Source Apps):展示來自廣告網絡的廣告
- 廣告主應用(Advertiser Apps):出現在簽名的廣告中
廣告網絡需跟蘋果注冊,開發者們需在 APP 中配置相關的廣告網絡。更多信息參見 Registering an Ad Network。我們收集整理的 各主要廣告平台的 SKAdNetworkIdentifier 並且標明了出處,僅供參考。
以下圖表描述了安裝驗證的流程,App A 指展示廣告的來源APP,App B 指用戶安裝的廣告主APP。
圖片來自Apple
當用戶點擊廣告時,一個帶有簽名信息的APP Store產品界面呈現出來,簽名信息標記了此次廣告活動。如果用戶安裝並且打開了APP,設備發送一個安裝驗證通知給廣告網絡。這個由Apple簽名的通知包括廣告活動ID,但是不含用戶或設備相關的數據。通知還可以包含一個轉化數值和來源應用ID,這個取決於蘋果設定的一個隱私閾值。
使用廣告網絡API的各參與方需承擔以下責任。
廣告網絡的責任:
- 在蘋果注冊自己的廣告網絡ID,提供給開發者。參見 Registering an Ad Network。
- 為來源應用提供簽名的廣告。參加 Generating the Signature to Validate an Installation。
- 通過注冊時填寫的URL接收安裝驗證通知
- 驗證通知。參見 Verifying an Install Validation Postback。
來源應用的責任:
- 將廣告網絡的ID添加到應用的 Info.plist 文件。參見 Configuring the Participating Apps。
- 展示簽過名的廣告。參見 Ad Network Install Validation Keys。
廣告主應用的責任:
- 發起應用安裝驗證通知,方法:
registerAppForAdNetworkAttribution()
或updateConversionValue(_:)
。 - 可選地,更新轉化數值,方法:
updateConversionValue(_:)
。
設備在計時結束后,會自動發送安裝驗證。
廣告主 - 注冊App用於廣告網絡歸因 registerAppForAdNetworkAttribution
驗證作為廣告結果安裝的應用程序的首次啟動。
函數聲明
+ (void)registerAppForAdNetworkAttribution;
說明
應用在首次啟動時調用此函數或 updateConversionValue:
。
如果此次安裝有歸因數據,那么首次調用 registerAppForAdNetworkAttribution 會生成通知,並且啟動一個 24 小時計時器。再次調用就沒有反應了。但是你可以調用 updateConversionValue: 提供轉化數值並且重啟計時器。
在計時器結束后的 0-24 小時內設備將安裝通知發送給廣告網絡。廣告網絡在收到通知后必須進行驗證。參見 Verifying an Install Validation Postback。
廣告主 - 更新轉化數值 updateConversionValue
更新轉化數值,並且驗證作為廣告結果安裝的應用程序的首次啟動。
函數聲明
+ (void)updateConversionValue:(NSInteger)conversionValue;
參數
conversionValue
無符號的 6 bit 整數(0-63)。由廣告主應用和廣告網絡決定此值的含義。默認為0。
說明
應用在首次啟動時調用此函數或 registerAppForAdNetworkAttribution
。開發者可以在 24小時的循環周期內反復調用 updateConversionValue: 去更新轉化數值。調用此方法有兩個目的:
- 產生一個安裝通知,是一個加密簽名的數據包,用於驗證是否來自廣告
- 讓應用提供或更新一個轉化數值
轉化數值是由廣告網絡或者廣告主定義的 6 bit 值。App 來決定何時更新,在計時器結束前可以隨意調用。每次調用,只要這個值比上一次大,計時器就會重新計時。當計時器結束,最后的數值將生效,並且繼續調用 updateConversionValue: 無任何作用。
在計時器結束后的 0-24 小時內設備將安裝通知發送給廣告網絡。只有發送的數據量達到蘋果隱私的閾值,通知才會包含最后的轉化數值。廣告網絡在收到通知后必須進行驗證。參見 Verifying an Install Validation Postback。
如果你不需要轉化數值,那么只要調用 registerAppForAdNetworkAttribution
即可。
在實踐中,開發者可以仔細把握調用的時機,並且對數值做良好的定義,就能達到衡量廣告用戶質量的目的。
API文檔
Essentials
Register your ad network with Apple to use the install validation APIs for your ad campaigns.
Configuring the Participating Apps
Configure a source app and prepare an advertised app to participate in ad campaigns.
property list key SKAdNetworkItems
An array of dictionaries containing a list of ad network identifiers.
Initiating Install Validation
Generating the Signature to Validate an Installation
Initiate install validation by displaying an ad with signed parameters.
Ad Network Install Validation Keys
Specify key values that validate and associate an app installation with an ad campaign.
Providing Conversion Information
class func updateConversionValue(Int)
Updates the conversion value and verifies the first launch of an app installed as a result of an ad.
Beta
class func registerAppForAdNetworkAttribution()
Verifies the first launch of an app installed as a result of an ad.
Verifying an Ad Conversion
Verifying an Install Validation Postback
Receive and verify an app install validation message to confirm an ad conversion.