iOS14關(guān)于IDFA獲取權(quán)限調(diào)研

場(chǎng)景

Apple宣布 2020-9-16 發(fā)布iOS14新系統(tǒng),iOS14系統(tǒng)具官網(wǎng)了解,如果需要獲取IDFA(廣告符),需要用戶授權(quán)。我們公司合作的第三方廣告目前都是通過IDFA在跟蹤用戶。
iOS13之前的版本可以直接獲取,只要用戶不手動(dòng)去設(shè)置頁面關(guān)閉。

所以小調(diào)研了一下。

測(cè)試設(shè)備:iPhone6,iOS14Beta7
開發(fā)工具:Xcode11

調(diào)用判斷IDFA是否開啟開關(guān),無論設(shè)置里限制廣告跟蹤的開關(guān)是否打開,都是返回 false,但是直接獲取卻是正確的IDFA值。(不知道是不是iOS14Beta系統(tǒng)的bug)

import AdSupport
 
    // 是否可以獲取IDFA,iOS14永遠(yuǎn)返回 false,但是打印 ASIdentifierManager.shared().advertisingIdentifier.uuidString 有值
    if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
        debugPrint("開著:\(ASIdentifierManager.shared().advertisingIdentifier.uuidString)")
    } else {
        debugPrint("關(guān)了:\(ASIdentifierManager.shared().advertisingIdentifier.uuidString)")
    }

打印結(jié)果:

"關(guān)了:7DE78ED0-3854-4840-A49C-2F33B9DC201B"

iOS14后正確的獲取方式:

測(cè)試設(shè)備:iPhone6,iOS14Beta7
開發(fā)工具:Xcode12,Beta2

Xcode12引入新的Framework AppTrackingTransparency,代碼如下:

import AdSupport
import AppTrackingTransparency
 
    if #available(iOS 14, *) {
             
        ATTrackingManager.requestTrackingAuthorization { (status) in
            switch status {
             case .denied:
                debugPrint("用戶拒絕")
                break
            case .authorized:
                 debugPrint("用戶允許")
                debugPrint("IDFA:\(ASIdentifierManager.shared().advertisingIdentifier.uuidString)")
                break
            case .notDetermined:
                debugPrint("用戶沒有選擇")
            default:
                break
            }
        }
    } else {
        // iOS13及之前版本,繼續(xù)用以前的方式
        if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
            debugPrint("可以獲取:\(ASIdentifierManager.shared().advertisingIdentifier.uuidString)")
        } else {
            debugPrint("用戶未打開IDFA開關(guān)")
        }
    }

同時(shí) info.plist也要添加一個(gè)權(quán)限提示配置:
NSUserTrackingUsageDescription:Vaule為要提示用戶授權(quán)的一句話,配置完成。

還有一個(gè)變動(dòng)是,iOS14的廣告跟蹤權(quán)限放到了每個(gè)App的設(shè)置中,而不像之前在隱私全局設(shè)置中。


IMG_2EC8D9B22F3C-1.jpeg

啟動(dòng)App后,會(huì)類似推送或者定位的權(quán)限提示一樣,有一個(gè)系統(tǒng)彈窗。


IMG_2294.PNG

結(jié)論:

如果有需要使用IDFA的App,或者和第三方廣告有合作的App,需要產(chǎn)品層面設(shè)計(jì)上考慮,如果用戶需選擇“要求App不跟蹤”,引導(dǎo)用戶跳轉(zhuǎn)到設(shè)置打開的流程。

技術(shù)需要考慮的問題

是要使用 AppTrackingTransparency,必須升級(jí)到Xcode12,如果升級(jí)到意味著要兼容iOS14,是否還有別的坑。
目前已經(jīng)發(fā)現(xiàn)的坑是,UITableViewCell直接 cell.addSubView(viewTest), viewTest會(huì)無法觸發(fā)到手勢(shì)響應(yīng)(像是被cell.contentView遮蓋住了)。
必須改為 cell.contentView.sddSubView(viewTest),我們項(xiàng)目是通過這種方式全局兼容的。
不太清楚是不是 Xcode12Beta版本問題,因?yàn)槟壳罢桨鎄code12還未發(fā)布。

也可以嘗試:

如果我們不著急升級(jí)Xcode12,依然使用Xcode11暫時(shí)先打包;不判斷廣告符是否授權(quán),直接獲取,是不是依然可以獲取到iOS14設(shè)備的真實(shí)IDFA?

目前拿一臺(tái)iPhone6的iOS14Beta7測(cè)試是可以的,需要更多的測(cè)試結(jié)果來證明猜測(cè)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容