![](/img/trans.png)
[英]WatchOS2 WCSession sendMessage doesn't wake iPhone on background
[英]When does WCSession sendMessage fail to wake iOS app in background?
我正在使用WCSession对象通过sendMessage(_:replyHandler:errorHandler:)
将数据从监视应用程序(watchOS 3.3 beta 4)发送回相应的iOS应用程序。 根据Apple提供的文档 :
在WatchKit扩展程序处于活动状态且正在运行时从其调用此方法,它将在后台唤醒相应的iOS应用程序并使它可访问。
但是,我发现如果在调用sendMessage
之前WCSession
对象的isReachable
属性为false
,则消息将无法发送,并出现以下错误: Error Domain=WCErrorDomain Code=7007 "WatchConnectivity session on paired device is not reachable." UserInfo={NSLocalizedDescription=WatchConnectivity session on paired device is not reachable.}
Error Domain=WCErrorDomain Code=7007 "WatchConnectivity session on paired device is not reachable." UserInfo={NSLocalizedDescription=WatchConnectivity session on paired device is not reachable.}
该会话已激活,因此我认为此sendMessage
调用应该可以使iOS应用程序可达,然后发送该应用程序,但这没有发生。
在什么情况下会发生这种情况?有没有解决方法?
a)如果将sendMessage(_, replyHandler:_, errorHandler:_)
与非nil应答处理程序配合使用,则ios对方的WCSessionDelegate应该具有session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void)
方法已实现,一旦您在此方法中调用replyHandler(_:)
,消息将被视为已传递。 如果未实现此方法,则消息将不会获得响应,并且您将收到超时错误。
b)另外,我注意到在执行session(_ session: WCSession, didXXX: XXX)
任何session(_ session: WCSession, didXXX: XXX)
方法中的代码时,都不会传递消息。 看起来它们都在一个串行后台队列中执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.