检测是不是禁用了 iOS 智能跟踪预防

Posted

技术标签:

【中文标题】检测是不是禁用了 iOS 智能跟踪预防【英文标题】:Detect if iOS Intelligent Tracking Prevention is disabled检测是否禁用了 iOS 智能跟踪预防 【发布时间】:2020-11-18 22:59:31 【问题描述】:

由于 ios 14 默认启用智能跟踪预防 (ITP),我想在 WKWebView 中显示一条消息,说明如何禁用 ITP。我不希望他们以其他方式看到该消息(尽管他们必须看到一次)。

似乎没有办法检查 ITP 是否正在运行,如果用户更改了设置,我想阻止用户看到该消息。

如果他们更改了设置,我该如何阻止消息显示?

【问题讨论】:

【参考方案1】:

我解决这个问题的方法是检测是否真的写入了 cookie,并相应地修改登陆/直通 url。

private func loadWebView() 
    load(skipInstructions: false)
    
    webView?.configuration.websiteDataStore.httpCookieStore.getAllCookies( (cookies) in
        var skipInstructions:Bool = false
        
        cookies.forEach  (cookie) in
            skipInstructions = skipInstructions ? skipInstructions : cookie.domain == "api.example.com"
        
        
        self.load(skipInstructions: skipInstructions)
    )


private func load(skipInstructions: Bool) 
    let url = skipInstructions ? URL(string: "\(self.landingUrl)?skip-instructions")! : URL(string: "\(self.landingUrl)")!
    let request = URLRequest(url: url)
    
    self.view.bringSubviewToFront(self.splashScreen)
    self.webView?.load(request)

【讨论】:

以上是关于检测是不是禁用了 iOS 智能跟踪预防的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSCrossWebsiteTrackingUsageDescription 请求用户为 WKWebView 禁用 ITP

如何在 TSLint 中启用“仅错误预防”? (禁用样式检查等)

计算机毕业设计之java+ssm新冠病例智能统计与相应预防措施分析系统

死锁的预防检测与修复

死锁处理策略和死锁预防

死锁的处理策略—预防死锁避免死锁检测和解除死锁