将iOS混合应用程序从UIWebView迁移到WKWebview

问题描述 投票:0回答:1

我不希望将IOS混合应用程序从UIWebView迁移到WKWebView,因为前者已被弃用。在Stack Overflow上已经解决了许多类似的问题,但是这些问题集中在一个相当简单的主题上,即只显示Web视图而不处理本地文件的加载或目标C之间所需的双向交互。包装程序和用于混合应用程序以提供任何功能的Javascript代码。

到目前为止,我已经确定需要执行以下操作

  1. 用WebKit替换UIKit的import语句。

  2. 在创建wkwebview之前,必须创建一个配置对象并将其键allowFileAccessFromFileURLs设置为TRUE。

  3. 创建wkwebview之后,将其navigationDelegate和UIDelegate设置为self。

  4. 当加载html / ccc / js文件位置的url时,指定允许readAccessToURL删除最后一个路径组件(我认为是文件://)

  5. 将wkwebview设置为主视图的子视图(我认为这在UIWebView中不是必需的)]] >>

  6. 通过在上面2中提到的wkwebview配置对象中创建脚本消息处理程序,将现有的通信通道从javascrtipt代码替换为使用“ shouldStartLoadWithRequest”的Objective C代码,然后使用此消息处理程序来调用处理过去是由“ shouldStartLoadWithRequest”完成的。

  7. 将所有现有的通信渠道替换为使用“ stringByEvaluatingJavaScriptFromString”和“ evaluateJavaScript”的Objective C代码中的javascript代码,该代码现在需要一个完成处理程序,该处理程序可以设置为nil,因为我没有使用任何回调值。

  8. 添加解决方案以允许在无需用户选择输入文本字段的情况下显示键盘。到目前为止,我能看到的最好的是Programmatically focus on a form in a webview (WKWebView)。我有点担心它似乎需要更改每个IOS版本。

  9. 解决CORS问题。我了解WKWebView在实现从不同URL加载远程文件方面比UIWebView严格得多,但是我不清楚是否还需要将要加载的本地文件列入白名单。

  10. [如果有人知道需要更改的清单,请提供提示/示例并提供准确的详细信息,或者可以提供答案,例如,这样的回答将是极好的。

    另外,我想通过保留UIWebView来继续为IOS 11之前的用户提供支持,因为我相信WKWebView在那些早期版本中存在问题。有谁知道这是否会引起其他问题的解决,如果可以,怎么办?

我不希望将IOS混合应用程序从UIWebView迁移到WKWebView,因为前者已被弃用。关于堆栈溢出,有许多类似的问题已得到解答,但...

ios objective-c wkwebview hybrid-mobile-app
1个回答
0
投票
  1. allowFileAccessFromFileURLs未公开,因此它可能会在iOS 13中工作或可能无法工作。
© www.soinside.com 2019 - 2024. All rights reserved.