@capacitor/watch
CapacitorLABS - 本项目为实验性项目。不提供官方支持。如有需要请提交 issue。
Capacitor Watch 插件允许你在 Web 代码中定义手表界面,并将其显示在已配对的手表上。
目前仅支持 iOS 平台。本指南假设你已在 Capacitor 项目中添加了 iOS 支持。
请注意:所有功能都需要在真实的 Apple Watch 设备上才能正常工作。模拟器无法实现与真实设备相同的应用与手表之间的通信。
安装
步骤 1
将 watch 插件添加到你的 Capacitor 项目,然后打开 Xcode 项目:
npm install @capacitor/watch
npx cap sync
npx cap open ios
步骤 2
添加应用能力:
添加 Background Modes 和 Push Notification 能力。然后在 Background Modes 选项中,选择 Background Fetch、Remote Notifications 和 Background Processing。你的应用目标配置应如下所示:
步骤 3
打开 AppDelegate.swift 文件,在文件顶部添加 import WatchConnectivity 和 import CapactiorWatch,并在 application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) 方法内添加以下代码:
assert(WCSession.isSupported(), "This sample requires Watch Connectivity support!")
WCSession.default.delegate = CapWatchSessionDelegate.shared
WCSession.default.activate()
步骤 4
在 Xcode 中选择 File -> New -> Target,然后选择 watchOS 标签页和 App:
点击 Next,然后按如下方式填写选项:
此对话框可能有些令人困惑,关键在于你的 Bundle Identifier 必须设置为 [你的应用包ID].watchapp,才能实现手表与应用的配对。你必须选择 SwiftUI 作为界面,Swift 作为语言。项目名称应为 App。
步骤 5
我们将添加使 Capacitor Watch 在手表应用中工作的代码。
如果你使用的是 Xcode 15 或更高版本,则需要从你的 node_modules 中添加 Capacitor Watch Swift Package:
首先进入项目包依赖项:
然后选择 Add Local:
然后 导航到 node_modules/@capacitor/watch/CapWatch-Watch-SPM 文件夹,点击 Add Package:
然后在右侧列选择你的手表应用作为目标,点击 Add Package:
完成后,你的包依赖项应如下所示:
对于 Xcode 14,你需要访问 https://github.com/ionic-team/CapacitorWatch/tree/main/packages/iOS-capWatch-watch/Sources/iOS-capWatch-watch,将所有文件复制到你的手表项目中,并确保目标选中了你的手表应用。应如下所示:
步骤 6
然后打开手表应用的 Main 文件(应为 watchappApp.swift)。在 @main 语句上方添加 import WatchConnectivity 和 import iOS_capWatch_watch。然后将 ContentView() 这行替换为以下内容:
完成后的文件应如下所示:
import SwiftUI
import WatchConnectivity
import iOS_capWatch_watch
@main
struct watchddgg_Watch_AppApp: App {
var body: some Scene {
WindowGroup {
CapWatchContentView()
.onAppear {
assert(WCSession.isSupported(), "This sample requires Watch Connectivity support!")
WCSession.default.delegate = WatchViewModel.shared
WCSession.default.activate()
}
}
}
}
步骤 7
为手表应用目标添加 Background Modes 能力,并启用 Remote Notifications:
现在你应该可以开始为 Capacitor Watch 进行开发了!
开发工作流
你仍然可以像开发普通的 Capacitor 应用一样开发你的 iOS 应用,但要在手表上运行,你需要在 Xcode 中更改目标和目标设备。你可以通过 Xcode 顶部中央附近的“目标下拉菜单”进行更改:
该栏的右半部分允许你选择目标设备或模拟器。你需要选择与手机配对的手表,然后点击 Run 按钮或使用 cmd+r 运行快捷键。
在同步手表和手机应用时可能会遇到一些挑战。有时 Xcode 控制台会报错,抱怨配套应用不存在。这种情况下最好的解决方案是在两个设备上重新构建并重新安装应用。