2017-03-06 51 views
0

WCSessionオブジェクトを使用して時計アプリ(watchOS 3.3 beta 4)から対応するiOSアプリにデータをsendMessage(_:replyHandler:errorHandler:)経由で送信しています。 documentation from Appleによると:いつ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であれば、メッセージがこのエラーで送信できなかったことを見つける: 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アプリを到達可能にしてから送信することになっていると信じていますが、これは起こっていません。

これはどのような状況で起こりますか?回避策はありますか?

+0

どのようにテストしていますか?これは端末に搭載されていて、携帯電話と時計は現在Bluetoothと接続されていますか? – Cobra

+0

はい、これは電話機とBluetooth接続しているデバイス上にあります。通常、電話機は到達可能になりますが、時間の10%未満で失敗します。 –

答えて

0

あなたが非nilの応答ハンドラーとsendMessage(_, replyHandler:_, errorHandler:_)を使用している場合a)は、IOSの対応のWCSessionDelegateはsession(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void)メソッドを実装している必要があり、そしてあなたは、このメソッド内でreplyHandler(_:)と呼ぶことにします後、メッセージが配信と呼ぶことにします。このメソッドが実装されていないと、メッセージは応答されず、タイムアウトエラーが発生します。

b)また、WCSessionDelegateのsession(_ session: WCSession, didXXX: XXX)メソッドのコードが実行中にメッセージが配信されないことに気付きました。それらのすべてが1つの連続したバックグラウンドキューで実行されているように見えます。

関連する問題