iOS WKWebView不支持本地存储

时间:2018-02-05 11:53:38

标签: local-storage wkwebview

我正在构建一个简单的WKWebView应用程序,它可以加载用Construct(HTML5)编写的游戏。

游戏存储在服务器上,当我在常规浏览器(包括移动设备和桌面设备)中玩游戏时,游戏本身会存储在本地,并且高分也会存储在本地。重新启动后,游戏不需要重新下载,我可以看到之前的高分。

我不知道Construct用于存储本地数据究竟是什么,但是当我在WKWebView中运行完全相同的游戏时,游戏不会存储在本地,也不会获得高分。

我的Swift代码就是这样:

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate, {
    var webView: WKWebView!

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        webView.navigationDelegate = self
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let htmlPath = Bundle.main.path(forResource: "game", ofType:"html")
        let url = URL(fileURLWithPath: htmlPath!)
        let request = URLRequest(url: url)
        webView.load(request)
    }
}

我的WKWebView显然缺少某些功能或设置,允许它存储离线数据。

1 个答案:

答案 0 :(得分:1)

您需要添加此

webConfiguration.websiteDataStore = WKWebsiteDataStore.default()

Apple文档没有明确说明,但我认为默认的WKWebsiteDataStore是持久的。

Read here about WKWebsiteDataStore/ Local Storage

此外,您还可以选择是否选中whether the data store is persistent