使用 NSCrossWebsiteTrackingUsageDescription 请求用户为 WKWebView 禁用 ITP
Posted
技术标签:
【中文标题】使用 NSCrossWebsiteTrackingUsageDescription 请求用户为 WKWebView 禁用 ITP【英文标题】:Using NSCrossWebsiteTrackingUsageDescription to request user disable ITP for WKWebView 【发布时间】:2020-11-18 16:19:41 【问题描述】:ios 14 版本正在捕获第三方身份验证/设备 cookie,我们似乎需要禁用智能跟踪预防 (ITP)。可用的文档(planet.webkit.org)建议我们在项目的 Info.plist 中设置一个特定的设置键和“Purpose String”:
WKWebView 中的智能跟踪预防
另外在 iOS 14.0 和 macOS Big Sur 中,智能跟踪预防 (ITP) 已启用 默认情况下在所有 WKWebView 应用程序中。 [...]
在某些极端情况下,用户可能需要禁用 ITP 保护, 例如,当依赖应用程序开发人员之外的 Web 内容时 控制。 应用程序可以发出信号,允许用户禁用 ITP 通过为密钥添加目的字符串
NSCrossWebsiteTrackingUsageDescription
应用程序的 Info.plist。 何时 目前,此键会导致应用程序的设置屏幕显示 禁用 ITP 的用户控件。无法读取或更改设置 通过 API 调用。
https://planet.webkit.org/
我相信我已经做到了:
<!-- Info.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>NSCrossWebsiteTrackingUsageDescription</key>
<string>Allow authentication and device trackers.</string>
...
</dict>
</plist>
我希望一个模态 iOS 对话框显示请求权限,使用该文本来解释权限请求。但是,我从未收到任何对话或请求,而且 ITP 仍在干扰身份验证/设备识别过程。
这可能取决于以下在实践中的含义。
此键使应用程序的设置屏幕显示一个用户控件以禁用 ITP。
我如何让这个过程工作并允许禁用 ITP?
【问题讨论】:
【参考方案1】:这里的解决方案是添加一个设置包(或类似的包),允许 iOS 设备从设备的设置应用程序中显示设置页面。基本上,遵循Settings.bundle
tutorial 和Info.plist
设置NSCrossWebsiteTrackingUsageDescription
将触发下面屏幕截图中的设置切换。
但不知道为什么它不使用“Purpose String”值。
【讨论】:
有效吗?看我的问题:***.com/questions/65886177/… 添加设置包是它起作用的原因。 我们必须在设置包中做任何事情吗?同样的事情,我们可以通过将 NSCrossWebsiteTrackingUsageDescription 添加到 plist 文件中来实现同样的事情。我面临的问题是开关不能正常工作,当你回到设置屏幕时它会刷新。 @NamanVaishnav 我导入了包并在项目的Info.plist
中有设置。就是这样。
它对我不起作用。在我的情况下,我们正在加载嵌入式画面视图(在 iframe 中)以上是关于使用 NSCrossWebsiteTrackingUsageDescription 请求用户为 WKWebView 禁用 ITP的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)