我已经在 React 中构建了一个站点,并希望使用 iOS WKWebView 中的构建文件。
跟进
为了运行 React 构建文件夹,必须提供它,因此目前实现这一目标的唯一方法是在 iOS 应用程序中构建服务器,提供 React 构建文件,并在 WKWebView 中加载本地 url。
我为服务器找到的最佳选择是 https://criollo.io/#getting-started。
为什么是最好的?
- 适用于 Objective-C 和 Swift 代码库
- 易于使用的文档
- 来自开发者的大力支持
你不一定需要构建 react app,然后在本地加载这些文件。它可以工作,但更好的方法是启动本地服务器,即yarn start
,然后指定您的 url(通常 http://localhost:3000/,可能因您的设置而异(以加载到 WKWebView 中,如下所示,
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let configuration = WKWebViewConfiguration()
// (optional) your configuration
webView = WKWebView(frame: .zero, configuration:configuration)
view = webView
let url = URL(string: "http://localhost:3000")!
let request = URLRequest(url: url)
webView.load(request)
}
由于您的服务器通过http
加载文件,iOS的应用程序传输安全将阻止它。它只允许通过https
协议加载文件。为了允许 ATS 通过http
加载,您需要为localhost
或127.0.0.1
或运行服务器的任何本地 ipaddr 添加异常。为此,请打开info.plist
作为源代码并粘贴以下内容,
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>127.0.0.1</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
现在你应该能够在WKWebView中访问你的React应用程序。
您可以在没有服务器的情况下运行本地 React 应用程序。只需使用功能WkWebView.loadFileURL(url, allowingReadAccessTo: url)
。您可以在此答案中查看将 React 应用程序文件添加到 xcode 项目的详细步骤。
请记住通过在package.json
中设置"homepage": "./"
来配置您的 React 应用程序以使用相对路径。