在WKWebView中从特定域启用外部javascript
我在app Store上维护一个应用程序,它对终端用户免费,但通过广告(我们自己销售,而不是通过谷歌获得随机广告)为自己付费。广告显示在WKWebView中,该视图在我们自己的服务器上获取包含广告的网页。我们使用Restore Adserver统计浏览量和点击量 一个假定的广告商坚持他们能够跟踪广告活动效果本身的点击量(视图和点击量),这意味着网页需要从在WKWebView中从特定域启用外部javascript,javascript,ios,wkwebview,Javascript,Ios,Wkwebview,我在app Store上维护一个应用程序,它对终端用户免费,但通过广告(我们自己销售,而不是通过谷歌获得随机广告)为自己付费。广告显示在WKWebView中,该视图在我们自己的服务器上获取包含广告的网页。我们使用Restore Adserver统计浏览量和点击量 一个假定的广告商坚持他们能够跟踪广告活动效果本身的点击量(视图和点击量),这意味着网页需要从www.googletagservices.com加载javascript,但出于隐私和安全目的,WKWebView似乎不允许来自网页自身域以外
www.googletagservices.com
加载javascript,但出于隐私和安全目的,WKWebView似乎不允许来自网页自身域以外的域的javascript。当打开广告页面的Web Inspector时,我收到错误消息说阻止了一个带有原点的帧”https://ad.doubleclick.net“从访问具有原点的帧”https://www.ourdomain.com". 协议、域和端口必须匹配。
虽然不是www.googletagservices.com
域,但我的理解是,这些消息反映了相同的基本问题
我已经阅读了WKWebView的文档,并搜索了允许特定域/javascript豁免的方法,以满足广告客户的需求,但迄今为止没有找到任何方法。我的初步结论是,没有办法做到这一点
我试过的东西到处都是,但总的来说,我试过了所有可能允许javascript运行的东西。奇怪的是,Android应用程序没有这个问题——奇怪的是,这种“同源策略”在不同浏览器中似乎非常标准
我已经看过了,但由于我们(遗憾地)没有控制谷歌的域名,这似乎是不可行的
据我所知,WKUserScript是用来运行你自己控制的脚本的——这显然不能说是来自谷歌的脚本
以下是WKWebView的配置:
lazy var webView: WKWebView = {
let config = WKWebViewConfiguration()
config.preferences.setValue(true, forKey: "developerExtrasEnabled") // This row was added while trying workarounds
config.preferences.javaScriptEnabled = true // This row was added while trying workarounds
let someWebView = WKWebView(frame: self.view.frame, configuration: config)
someWebView.scrollView.isScrollEnabled = false
someWebView.navigationDelegate = self
someWebView.translatesAutoresizingMaskIntoConstraints = false
let footerURL = URL(string: "https://www.ourdomain.com/banners/ios/footer.php")!
let request = URLRequest(url: footerURL)
someWebView.load(request)
return someWebView
}()
我承认我对当前问题的理解相当肤浅,但我仍然想问社区:
是否有任何方法可以满足广告客户的要求,理想情况下不会影响安全性和用户隐私?似乎您可以在服务器端收集统计数据,而不是使用客户端脚本。