我已经跟踪这个bug好几天了,终于意识到问题是WKInterfaceController.openParentApplication
存在实际延迟。我不是指Apple Watch中的回调,而是指iPhone中的AppDelegate
事件。
以下是我在Apple Watch中所做的事情:
override func awakeWithContext(context: AnyObject?) {
var userInfo = [
"test": 123
]
WKInterfaceController.openParentApplication(userInfo, reply: nil)
}
然后在iPhone中,我在AppDelegate
中执行此操作:
func application(application: UIApplication, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]?, reply: (([NSObject : AnyObject]!) -> Void)!) {
let test = userInfo["test"]
// Do something
}
问题是当我拨打WKInterfaceController.openParentApplication
时,在iPhone中触发handleWatchKitExtensionRequest
事件之前有2或3秒的延迟。如果用户非常快速地对他们的手表执行操作并且立即放下他们的手臂,则这是有问题的。在手表发出命令之前,我无法假设用户将举起手臂3秒钟。
这是一个问题:如果用户唤醒了手表,该命令仍然无法发送到iPhone。直到用户打开发送WKInterfaceController.openParentApplication
的原始应用程序。如果没有这个捕获,我认为这不会是一个问题,命令应该排队,直到手表被唤醒,没有被唤醒并重新打开应用程序。
可以为此做的任何解决方法?我计划将此记录为一个错误,但是想知道是否有人对此有任何想法或经验?