如何通过 WKWebVIew 或 JSC 在 iOS 应用程序中加载 WebAssembly

How to load WebAssembly in iOS app via WKWebVIew or JSC

我正在尝试从基于 Swift 的 iOS 应用程序中加载并执行 WebAssembly .wasm。我首先尝试使用 JavaScriptCore Framework,但是当我尝试评估一个简单的脚本时,WebAssembly.* 模块在上下文中不可用。我能够确认 WebAssembly 不是通过 Safari 调试器控制台定义的。

然后我尝试使用 WKWebView,因为我被引导相信缺少 WebAssembly 是由于 JSC not supporting JIT,而 WKWebView 应该如此。我得到了相同的结果。

这是在 iPhone X 12.4 模拟器、Xcode 10.3 和手动添加到项目的 WebKit 框架上的一个简单应用程序 运行。确保为 WKWebView 调试器打开 Safari 和 Select "Developer>Simulator"。

import UIKit
import WebKit

class ViewController: UIViewController {
    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    @IBAction func onClick(_ sender: UIButton) {
        let testWasm = """
            if(typeof WebAssembly !== 'undefined') {
                console.log("Hello, Wasm.");
            } else {
                console.log("No Wasm for you!");
            }
        """

        webView.evaluateJavaScript(testWasm)
    }
}

iOS 真的有办法将 WebAssembly 加载到基于 Swift 的应用程序中吗?

我想 运行 使用 JSC 进行一些基准测试以将其与 Wasm3 进行比较。
基本上我 运行 遇到了同样的情况,但到目前为止无法解决。

Wasm3 runs perfectly fine on iOS,可能会满足您目前的需求。

目前你不能运行 WebAssembly with JSC on the simulator according to this comment.

截至 2020 年 2 月,似乎 JavaScriptCore now has a WebAssembly interpreter