少し混乱してWatchConnectivity
です。iOSアプリの起動時にApple Watchアプリがデータを取得する
iOSアプリから時計アプリにデータを送信できます。ただし、iOSアプリの起動時または有効時にのみデータを送信します。
時計アプリがiOSアプリからデータをリクエストするようにします。ウォッチ・アプリケーションは、開始時に情報を要求する必要があります。
少し混乱してWatchConnectivity
です。iOSアプリの起動時にApple Watchアプリがデータを取得する
iOSアプリから時計アプリにデータを送信できます。ただし、iOSアプリの起動時または有効時にのみデータを送信します。
時計アプリがiOSアプリからデータをリクエストするようにします。ウォッチ・アプリケーションは、開始時に情報を要求する必要があります。
ユーザー情報があり、ウォッチ・アプリケーションがこれらの情報を要求する必要があります。
ユーザーが時計を見ると、データがリクエストされ、受信され、アプリでアップデートされている間に、なぜ待つ必要がありますか?
ユーザーがアプリを起動したときに情報を取得するように時計アプリを設計する代わりに、keep your watch app up to dateに他のアプローチを考慮する必要があります。 watchOS 2について
、例えばupdateApplicationContext
、which Ahmed mentionedとしてバックグラウンドで現在の内容を転送する他の方法があります。
watchOS 3では、リフレッシュタスクを使用して、バックグラウンドで時計アプリを更新することもできます。
これらのアプローチはいずれも、情報がすでに手持ちのなので、ユーザーは自分自身を更新するための時計アプリを待って耐えていないことを確認してください。
私はupdateApplicationContextを使っていましたが、最初はwatch appがユーザーのデータを要求する必要がありました。 iOSアプリで特定のイベント(ログアウトまたはログイン)が発生したときにアプリケーションのコンテキストを更新しています。実際に私は構造と混同しています。例えば、時計接続のためのシングルトンクラスを実装しました。私はappdelegateでオブジェクトを作成します。このシナリオで正しいアプローチですか? – TheZipper
コメントはあなたのコードに関する無関係な質問をする場所ではありません。ユーザーがログインまたはログアウトしたときに電話機がアプリケーション(ユーザーデータ)コンテキストを更新する場合、ウォッチはなぜデータを要求する必要がありますか?ユーザーがログインしていて、時計に既にそのデータがあるか、ユーザーがログアウトしていて、時計がそれを知っています。 *時計はまだ電話からリクエストする必要がありますか?質問に答えられない場合は、それを編集して特定の詳細を追加する必要があります(例:時計が具体的に何を要求する必要があるかを説明し、コードを示し、期待どおりに機能しないことを説明してください)。 –
sendMessage
link to documentationという方法を使用できます。これはWCSession classの一部です。このメソッドは応答ハンドラを取ります。
相手からの応答を受け取る応答ハンドラです。返信を受け取らない場合は、nilを指定します。
iOSアプリケーションがデータを返信するために使用する返信ハンドラでメッセージを送信することで、効果的にiOSアプリケーションに通知することができます。
同じ問題が発生しました。 iOSアプリを起動した場合にのみデータが時計に送信されました。 私は、replyhandlerを持つメッセージを、セッションのactivateDidCompleteWithメソッドでiOSアプリに送信して解決しました。特定のメッセージや返信を送る必要はありません。メッセージがiOSアプリケーションに送信された後、updateApplicationContextが起動してデータを送信して監視しました。
EDIT:iOS側のセッションは、時計の最初のデータが「到着」しているために応答できないようになったときにアクティブにされないようです。
iOSからwatchOSに 'updateApplicationContext'を使用し、watchOSアプリケーションが起動されたときにデータを取得してみましょう。あなたは好きなようにデータを変更することができ、watchOSアプリケーションが最新のデータを取得することが保証されます。 –