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

将以下 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())
}