[英]Why can my Apple Watch OS app receive message from my iOS app only when it is active?
我正在尝试构建一个与 Apple Watch 应用程序通信的慢跑应用程序。 当我按下“开始”按钮时,iOS 应用程序应向我的 Watch 应用程序发出信号以开始跟踪我的锻炼。 (例如显示经过的时间、测量心率等)为了实现这一点,iOS 和 WatchOS 应用程序应该进行通信。 我的应用程序的问题是我的 WatchOS 应用程序只能在我的 iOS 应用程序打开时接收信号。 (例如手表屏幕打开)
这是来自我的 iOS 应用程序的代码:
@objc func startAction() {
if WCSession.isSupported() {
print("WC session is supported...")
let session = WCSession.default
session.delegate = self
session.activate()
session.sendMessage(["testWorkout":true], replyHandler: nil) { error in
print("ERROR: \(error.localizedDescription)")
}
}
}
这是另一端的代码(来自手表端):
func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
WKInterfaceDevice.current().play(.start)
print("message test workout")
}
当 Apple Watch 打开时,我听到播放声音和打印输出消息:“消息测试锻炼”,但当 Apple Watch 的屏幕关闭时,WatchOS 应用程序没有收到任何信号。 我可以从 iOS 应用程序端编写什么代码(或者我可以从 WatchOS 应用程序端执行的任何其他操作)来唤醒 WatchOS 应用程序?
您不应在activate
后立即调用sendMessage
- session 可能不会(也可能不会)处于活动状态。
您需要等到获得activationDidCompleteWith
委托回调,然后才能尝试通信。
在尝试发送数据之前,您应该检查.active
state 是否处于活动状态,如果不再活动,则重新激活 session。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.