Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCSession sendMessage何时无法在后台唤醒iOS应用程序?_Ios_Iphone_Watchkit_Watchos 3_Wcsession - Fatal编程技术网

WCSession sendMessage何时无法在后台唤醒iOS应用程序?

WCSession sendMessage何时无法在后台唤醒iOS应用程序?,ios,iphone,watchkit,watchos-3,wcsession,Ios,Iphone,Watchkit,Watchos 3,Wcsession,我正在使用WCSession对象,通过sendMessage(uu2;:replyHandler:errorHandler:)将数据从手表应用程序(watchOS 3.3 beta 4)发送回相应的iOS应用程序。根据报告: 在WatchKit扩展处于活动状态时从其调用此方法 运行会在后台唤醒相应的iOS应用程序 使它可以到达 但是,我发现,如果在调用sendMessage之前WCSession对象的isReachable属性为false,则消息无法发送,并出现以下错误: Error Domai

我正在使用WCSession对象,通过
sendMessage(uu2;:replyHandler:errorHandler:)
将数据从手表应用程序(watchOS 3.3 beta 4)发送回相应的iOS应用程序。根据报告:

在WatchKit扩展处于活动状态时从其调用此方法 运行会在后台唤醒相应的iOS应用程序 使它可以到达

但是,我发现,如果在调用
sendMessage
之前
WCSession
对象的
isReachable
属性为
false
,则消息无法发送,并出现以下错误:
Error Domain=WCErrorDomain code=7007“无法访问配对设备上的WatchConnectivity会话。”UserInfo={NSLocalizedDescription=WatchConnectivity会话无法访问配对设备。}

会话被激活了,所以我相信这个
sendMessage
调用应该是让iOS应用程序可以访问,然后被发送,但这并没有发生

在什么情况下会发生这种情况,有什么解决办法吗?

a)如果您使用的是
sendMessage(u,replyHandler:u,errorHandler:u)
和非nil回复处理程序,ios对应方的WCSessionLegate应该有
会话(u会话:WCSession,didReceiveMessage:[String:any],replyHandler:@escaping)([String:Any]->Void)
方法已实现,一旦在此方法内调用
replyHandler(:)
,消息将被称为已传递。如果未实现此方法,消息将不会得到响应,您将得到超时错误


b) 另外,我注意到,在任何
会话(session:WCSession,didXXX:XXX)中编写代码时,都不会传递消息
正在执行WCSessionDelegate的方法。看起来所有这些方法都在一个串行后台队列中执行。

您如何测试?这是否在设备上,以及手机和手表当前是否与蓝牙连接?是的,这是在与手机有蓝牙连接的设备上。它通常使手机可以访问,但失败<10%的时间。