2017-03-06 1 views
0

WCSession 객체를 사용하여 시계 app (watchOS 3.3 베타 4)에서 sendMessage(_:replyHandler:errorHandler:)을 통해 해당 iOS 앱으로 데이터를 보냅니다. documentation from Apple에있어서, 상기 세션이 활성화 Error Domain=WCErrorDomain Code=7007 "WatchConnectivity session on paired device is not reachable." UserInfo={NSLocalizedDescription=WatchConnectivity session on paired device is not reachable.}WCSession sendMessage는 백그라운드에서 iOS 앱을 깨우지 못합니다.

그러나

Calling this method from your WatchKit extension while it is active and running wakes up the corresponding iOS app in the background and makes it reachable.

, 나는 WCSession 개체의 isReachable 속성 sendMessage를 호출하기 전에 false 경우, 메시지가이 오류와 함께 보낼 실패 발견 따라서이 sendMessage 전화가 iOS 앱을 연결할 수있게 만든 다음 전송해야한다고 생각합니다. 그러나 이것은 일어나지 않습니다.

어떤 상황에서 이러한 상황이 발생하며 어떤 해결 방법이 있습니까?

+0

테스트 방법은 무엇입니까? 기기에 있나요? 휴대 전화와 시계가 현재 블루투스에 연결되어 있나요? – Cobra

+0

예, 휴대 전화와 블루투스가 연결된 기기에 있습니다. 대개 전화를 연결할 수는 있지만 시간의 10 % 미만은 실패합니다. –

답변

0

A)이 아닌 무기 호 응답 핸들러 sendMessage(_, replyHandler:_, errorHandler:_)를 사용하는 경우, IOS 대응의 WCSessionDelegate가 있어야한다 session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) 방법 구현 및 메시지는이 방법 안에 replyHandler(_:) 전화 할게 일단 전달이라한다. 이 방법을 구현하지 않으면 메시지가 응답을받지 못하고 시간 초과 오류가 발생합니다.

b) 또한, WCSessionDelegate의 session(_ session: WCSession, didXXX: XXX) 메소드 중 하나의 코드가 실행되는 동안 메시지가 전달되지 않는 것으로 나타났습니다. 모두가 하나의 연속 백그라운드 대기열에서 실행되는 것처럼 보입니다.

관련 문제