无Extension目标,如何在Xcode14中配置独立watchOS应用的WKExtendedRuntimeSession?
独立watchOS应用配置WKExtendedRuntimeSession的方法
在Xcode 14.2创建的无Extension目标的独立watchOS应用,完全可以配置并使用WKExtendedRuntimeSession,具体操作步骤如下:
- 选中你的独立watchOS应用目标,打开「Signing & Capabilities」标签页
- 点击右上角的「+ Capability」按钮,搜索并添加「Background Modes」能力
- 在Background Modes的选项列表中,勾选你需要的WKExtendedRuntimeSession会话类型(比如「Location updates」「Voice over IP」等,需匹配你的业务需求)
- 配置完成后,在代码中正常初始化并启动会话即可,示例代码:
import WatchKit class ExtensionDelegate: NSObject, WKExtensionDelegate { private var extendedSession: WKExtendedRuntimeSession? func applicationDidFinishLaunching() { extendedSession = WKExtendedRuntimeSession() extendedSession?.delegate = self // 启动会话 extendedSession?.start() } } // 实现会话代理方法处理生命周期事件 extension ExtensionDelegate: WKExtendedRuntimeSessionDelegate { func extendedRuntimeSession(_ session: WKExtendedRuntimeSession, didInvalidateWith reason: WKExtendedRuntimeSessionInvalidationReason, error: Error?) { // 处理会话失效逻辑,比如重新启动或记录错误 if reason == .systemInitiated { extendedSession?.start() } } }
注意事项
- 若会话类型涉及系统权限(如位置),需在Info.plist中添加对应的权限描述,并在代码中主动请求用户授权
- 后台会话功能仅能在真实Apple Watch设备上测试,模拟器不支持完整的后台运行逻辑
内容的提问来源于stack exchange,提问作者smoyth
相关产品推荐
相关产品推荐

