問題タブ [wcsession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
850 参照

ios - WCSession sendMessageData が watchOS 3 で機能しない

iOS から watchOS に画像を送信しようとしていますが、以下のエラーが発生しています。

sendMessageData 取得エラー: エラー Domain=WCErrorDomain Code=7014 "ペイロードを配信できませんでした。" UserInfo={NSLocalizedDescription=ペイロードを配信できませんでした。

ViewController クラスの私のコード

InterfaceController クラス内

ありがとう、

0 投票する
0 に答える
714 参照

ios - iOS と watchOS の間で認証データを同期する最良の方法は何ですか?

iOS と watchOS の間でユーザー資格情報を同期する際に問題が発生しました。

私の基本的なセットアップは、iOS アプリと watchOS アプリの両方がバックエンド サーバーと通信する必要があり、そのためにアクセス トークンが必要であるということです。ただし、ユーザーは iOS アプリでのみサインインできます (ユーザーとパスワードを入力する必要があるため)。

ここで、ユーザーが iOS にサインインする (またはその後アプリを開く) と、updateApplicationContext() を使用してユーザーの資格情報を watchOS に送信します。ユーザーがログアウトすると、次のように同様のことが行われます。

次に、データを受信し、時計側のインターフェイスを次のように更新します。

これは、ユーザーがログインするときとユーザーがログアウトするときにすべて正常に機能します。

ただし、ログイン後にアプリを使用すると、時々、時計がルートコントローラーをログアウトしたコントローラーに切り替えます(おそらく、ユーザーのデフォルトからログインフラグを削除することを伝えるメッセージを受信したため、ログアウトするように指示したためです) )。

Xcode を使用してこれが発生した場合にキャッチする良い方法はありませんが、散発的に発生します。さらに悪いことに、iOS でアプリ (タブ バー コントローラーの viewDidAppear から logInOnWatch() を呼び出す) を開くと、時計が更新されません。ウォッチを更新する唯一の方法は、iOS でログアウトして再度ログインすることです。その後、時計は認証情報とログイン フラグを受け取ります。

ユーザーがログインすると、iOS から watchOS にユーザー データを送信するアプリのライフ サイクル全体で他のインスタンスがあり、それらは問題なく動作します。Apple が時計でユーザーのデフォルトを処理する方法に問題があるのか​​ 、それとも WatchConnectivity に問題があるのか​​ 疑問に思っています。

このデータの同期をより一貫して維持するためのより良い方法はありますか?

0 投票する
1 に答える
1209 参照

ios - WCSession sendMessage がバックグラウンドで iOS アプリの起動に失敗するのはいつですか?

WCSession オブジェクトを使用して、watch アプリ (watchOS 3.3 ベータ 4) から対応する iOS アプリにデータを送信していますsendMessage(_:replyHandler:errorHandler:)Appleのドキュメントによると:

アクティブで実行中の WatchKit 拡張機能からこのメソッドを呼び出すと、対応する iOS アプリがバックグラウンドで起動され、到達可能になります。

ただし、オブジェクトのisReachableプロパティが を呼び出す前にある場合、メッセージは次のエラーで送信に失敗することが わかりました。WCSessionfalsesendMessageError Domain=WCErrorDomain Code=7007 "WatchConnectivity session on paired device is not reachable." UserInfo={NSLocalizedDescription=WatchConnectivity session on paired device is not reachable.}

セッションがアクティブ化されているため、このsendMessage呼び出しは iOS アプリに到達可能にしてから送信されるはずですが、これは行われていません。

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