3

iOS 9.3/watchOS 2.2 アプリで複数の時計とペアリングするための新機能をサポートしようとしています。ペアリングされた iPhone が別の Apple Watch に切り替えられたかどうかを watchOS アプリがどのように判断できるかを理解できないことを除けば、うまく機能しているようです。

ドキュメントによると、切り替えライフサイクル全体を通じて WatchKit 拡張機能の観点からアクティブ化されたままWCSessionであり、Xcode でのテストから、電話が別の時計に切り替えられた場合でも iPhone にも到達可能であることが監視セッションで報告されているようです。

現在、実際のデバイスで動作が同じかどうかを確認できる複数の時計はありません。

4

1 に答える 1

4

あなたの質問に対する具体的な答え:

即時メッセージを含むすべての転送方法を使用できるため、時計が接続されていないという事実はすぐにはわかりません。転送は、ユーザーがその時計に戻るまで延期されます。

接続されていない時計でもペアリングされた iPhone への転送を開始できるため、何らかのハンドシェイクまたはタイムアウト検出を実装し、電話が時間内に応答しないかどうかを確認する必要があります。

私の調査結果:

接続されていない時計は、ユーザーが別の時計に切り替えたことを知るためのものではないようです。ご指摘のとおり、時計アプリのセッションはまだアクティブであり、時計 (シミュレーター) は電話が到達可能であると報告しています。

接続されていないウォッチ アプリは、インタラクティブ メッセージングを含むすべての転送方法を引き続き使用できます(ただし、送信データはシステムによってキューに入れられ、ユーザーがそのウォッチに戻るまで転送されません)。

2 つの異なるアプローチを使用して、データがキューに入れられていることを確認しました。

  • ウォッチからディクショナリを使用しtransferUserInfo、実行ループを実行させ、そのプロセスを数回繰り返してから、outstandingUserInfoTransfers配列を調べます。
  • sendMessageユーザーがその時計に戻った後にのみ実行される応答ハンドラーを使用し、応答を受信します。

元に戻すと、キューに入れられたすべての転送がすぐに電話に送信され、インタラクティブな応答があれば時計が受信します。

接続されていない時計はペアリングされた iPhone にデータをキューに入れることができますが (そのセッションはまだアクティブであるため)、電話は接続されている時計としか通信できません。

新しいサンプル コード:

新しいQuickSwitch サンプル コードを試すことができます。updateApplicationContext任意の時計から電話に指定子と色を渡すために使用します。

未使用のウォッチの指定子と色を変更し、[Xcode デバイス] ペインを使用してそのウォッチに切り替えると、iOS アプリがそのウォッチの新しい指定子と色 (ウォッチが使用されていない間にキューに入れられた) をすぐに表示することに注意してください。

reachableドキュメントの不一致の可能性:

WatchKit 拡張機能では、一致するセッションがユーザーの iPhone でアクティブであり、デバイスが範囲内にあるため通信が行われる可能性がある場合、このプロパティの値は YES になります。

私は 2 つ目の時計を持っていないので、携帯電話が範囲外に移動すると、未使用の時計の到達可能性が false に変わるかどうかをテストできませんでした。

于 2016-03-29T19:28:03.543 に答える