我正在构建一个简单的 WKWebView 应用程序,该应用程序加载用 Construct (HTML5) 编写的游戏。
游戏存储在服务器上,当我在常规浏览器(移动和桌面)中玩游戏时,游戏本身会存储在本地,并且高分也会存储在本地。重新启动游戏后不需要重新下载也可以看到之前的高分。
我不知道 Construct 究竟使用什么来存储本地数据,但是当我在 WKWebView 中运行完全相同的游戏时,游戏不会存储在本地,高分也不会存储在本地。
我的斯威夫特代码是这样的:
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 显然缺少一些允许其存储离线数据的功能或设置。
你需要添加这个
webConfiguration.websiteDataStore = WKWebsiteDataStore.default()
Apple 文档没有明确说明,但我认为默认的 WKWebsiteDataStore 是持久的。
阅读此处有关 WKWebsiteDataStore/ 本地存储的信息 https://developer.apple.com/documentation/webkit/wkwebsitedatastore
此外,您还可以检查数据存储是否持久化 https://developer.apple.com/documentation/webkit/wkwebsitedatastore/1532928-ispersistent or not.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)