我正在开发的iPhone应用程序使用WKWebView,但是(我的客户要求...)它必须具有自定义用户代理。我们希望用户代理字符串模仿Safari的样子,大致如下:Mozilla/5.0(iPhone; CPU iPhone OS 9_0_2 like Mac OS X) AppleWebKit/601.1.46(KHTML, like Gecko) Version/9.0 Mobile/13A452 Safari/601.1。我知道如何设置用户代理字符串,最简单的方法就是在标准用户默认值中设置UserAgent。[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent": userAgent}];然而,我遇到的问题是使用苹果在Safari的用户代理中使用的版本号,特别是在Mobile(13A452)之后的那个代码和Safari版本号。我想到的唯一解决办法涉及以下步骤:
1.实例化一个WKWebView 2.从字符串加载一个虚拟页面 3.在didFinishNavigation委托调用中,评估一个javascript来返回当前的用户代理 4.拆分UA以提取这些版本号 5.构建一个类似于Safari的新字符串,但在应用程序的自己的名称/版本末尾,并将Safari版本放在带有“like”的括号中,结果如下:Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13A452 (like Safari/601.1) TheAppName/1.12
除了请求Web视图实例的用户代理字符串之外,是否有其他方法可以获取那些AppleWebKit/Mobile/Safari版本号?显然,步骤3-4可以用通过javascript提取版本号来替换,但这只是在不同环节上进行了转移。
简而言之,除了使用WebView实例请求其自身的用户代理字符串外,还有其他方法可以获取AppleWebKit/Mobile/Safari版本号吗?如果您无法跟随上述步骤,我可以提供一些示例代码或甚至一个示例项目,但我的意图应该是清楚的。
1.实例化一个WKWebView 2.从字符串加载一个虚拟页面 3.在didFinishNavigation委托调用中,评估一个javascript来返回当前的用户代理 4.拆分UA以提取这些版本号 5.构建一个类似于Safari的新字符串,但在应用程序的自己的名称/版本末尾,并将Safari版本放在带有“like”的括号中,结果如下:Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13A452 (like Safari/601.1) TheAppName/1.12
除了请求Web视图实例的用户代理字符串之外,是否有其他方法可以获取那些AppleWebKit/Mobile/Safari版本号?显然,步骤3-4可以用通过javascript提取版本号来替换,但这只是在不同环节上进行了转移。
简而言之,除了使用WebView实例请求其自身的用户代理字符串外,还有其他方法可以获取AppleWebKit/Mobile/Safari版本号吗?如果您无法跟随上述步骤,我可以提供一些示例代码或甚至一个示例项目,但我的意图应该是清楚的。