自定义原生 iOS 代码
使用 Capacitor,我们鼓励你编写 Swift 或 Objective-C 代码来实现应用所需的原生功能。
可能并非所有功能都有对应的 Capacitor 插件——但这没关系!你可以在应用中直接编写 WebView 可访问的原生代码。
WebView 可访问的原生代码
在 JavaScript 和原生代码之间进行通信的最简单方法是构建一个属于你应用的自定义 Capacitor 插件。
EchoPlugin.swift
首先,通过打开 Xcode,右键单击 App 组(在 App target 下),从上下文菜单中选择 New File...,在窗口中选择 Swift File,然后创建文件来创建 EchoPlugin.swift 文件。

将以下 Swift 代码复制到 EchoPlugin.swift 中:
import Capacitor
@objc(EchoPlugin)
public class EchoPlugin: CAPPlugin, CAPBridgedPlugin {
public let identifier = "EchoPlugin"
public let jsName = "Echo"
public let pluginMethods: [CAPPluginMethod] = [
CAPPluginMethod(name: "echo", returnType: CAPPluginReturnPromise)
]
@objc func echo(_ call: CAPPluginCall) {
let value = call.getString("value") ?? ""
call.resolve(["value": value])
}
}
@objc装饰器是必需的,以确保 Capacitor 运行时(必须使用 Objective-C 以支持动态插件)能够看到它。
注册插件
我们必须在 iOS 和 Web 两端都注册自定义插件,以便 Capacitor 能够在 Swift 和 JavaScript 之间建立桥接。
MyViewController.swift
创建一个自定义的 MyViewController.swift。
然后添加一个 capacitorDidLoad() 方法覆盖并注册插件:
override open func capacitorDidLoad() {
bridge?.registerPluginInstance(EchoPlugin())
}