Evg*_*nii 5 ios swift apple-watch watchkit watchos-2
我正在使用sendMessage方法从WatchKit扩展程序向iOS应用程序发送消息.收到回复平均需要大约230毫秒.时间不取决于iOS应用程序是在屏幕上还是在后台运行.230ms大致是光线在地球周围和背部行进所需的时间.但是当我测试时,手机距离我的手表30厘米.
问题:
观察:根据我在watchOS 1中的先前实验,通信速度有点快,往返时间约为50毫秒.
从WatchKit扩展程序发送消息
let session = WCSession.defaultSession()
session.sendMessage(["message from watch":""], replyHandler: { reply in
// Getting reply from iOS app here
}, errorHandler: nil)
Run Code Online (Sandbox Code Playgroud)
从iOS应用程序接收消息
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
replyHandler(["reply from iOS":""])
}
Run Code Online (Sandbox Code Playgroud)
演示应用程序:https://github.com/evgenyneu/WatchKitParentAppBenchmark
iOS:9.0,watchOS:2.0
AFAIK,当您向其他设备发送消息时,该消息将被存档到名为WatchDirectory.
该目录将通过蓝牙同步到其他设备,如其他 iCloud Drive 应用程序或 Drop Box。因为这种方法不需要运行iOS应用程序和watchOS应用程序,而传输将完成。
当新文件到达目录时,iOS(或watchOS)将调用WCSession相关的API来处理内容。如果需要,iOS(或 watchOS)将在发送消息之前在后台唤醒目标应用程序。
在 watchOS1 中,手表扩展在 iOS 上运行,只有远程 UI 在 AppleWatch 上运行。因此需要更简单的进程进行通信,只需进程之间的通信。
sendMessage比WCSession. iOS 在手表应用程序在前台运行之前无法使用它,并且sendMessage从 watchOS 使用它应该必须唤醒 iPhone 并在后台启动 iOS 应用程序。处理完发送的消息后,iOS 可能会杀死在后台运行的目标应用程序以收回内存。
因此,在我看来,没有理由认为它应该很快。