問題タブ [watchconnectivity]
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.
ios - タイプ「配列」の値を変換できません' を期待される引数の型 'String?' に
フレームワークを使用して、文字列値WatchConnectivityの配列をwatchItems電話からApple Watchに送信しています。送信された辞書からを追加し、ウォッチでwatchItems呼び出される配列に追加して、で使用します。itemsWKInterfaceTable
ラベルのテキストをtheItemに設定すると、次の行でエラーが発生しています。
Heresは私がやっていることの完全な説明です。
iPhone
self.itemsは の配列でNSManagedObjectあり、各アイテムにはtitle文字列であるというプロパティがあります。そこで、配列をループして、objectsすべての文字列値を という配列に追加しますwatchItems。
アップルウォッチ
ここでは、受信したメッセージ ディクショナリの watchItems 配列をウォッチの配列に追加しますitems。watchItems配列は文字列値の配列であり、時計の配列もそうですitems。
WKInterfaceTableアイテム配列の各アイテムとしてラベルを再ロードして設定する関数。
に文字列値を追加するとエラーが発生しますcellLabel。私がどこで間違っているのか誰か知っていますか?
swift - Watch Connectivity によって iPhone から送信された [String] 配列を使用して、テーブルの行を設定する方法は?
基本的に、配列をうまく渡しています。列挙された配列をテーブル行として使用しようとすると、nil found と表示されます。
電話
ウォッチキット
私の問題は、TableView をロードしようとするたびに、このコンソール出力 + エラーが発生することです。
アンラップされた値がまだゼロである理由を誰かが知っていますか? 設定して[String]配列に値があることを確認できたら、それを列挙できることを望んでいましたが、それらは見えないようです。
watchos-2 - WCSession をアクティブ化した後、WCSessionDelegate は最初の sessionReachabilityDidChange を取得しますか?
watchOS アプリで WCSession を設定するとき、WCSessionDelegate のsessionReachabilityDidChange:メソッドは常に呼び出しの直後に呼び出されactivateSessionますか? 私のテストでは、これは本当のようですが、ドキュメントでこれを確認することはできません.
sessionReachabilityDidChange:セッションをアクティブ化した直後に呼び出されることを信頼できる場合は、到達可能なセッションをチェックして iPhone アプリにいくつかの初期メッセージを送信する applicationDidBecomeActive から冗長なコードを削除できるためです。
ios - transferCurrentComplicationUserInfo を使用して複雑さを更新する接続を見る
WatchConnectivity と、潜在的に Clockkit フレームワークに問題があります。transferCurrentComplicationUserInfoiOS アプリで使用して、時計にデータを送信し、複雑さを更新しようとしています。ウォッチの拡張デリゲート内にデリゲート メソッドを実装しましたdidReceiveUserInfo。ここでデータを処理し、呼び出して複雑さを更新します。
シミュレーターで iOS アプリを実行すると、問題なく動作します。ただし、実際のデバイスで実行すると、電話からの送信が開始され、合併症が呼び出されますrequestedUpdateDidBegin()がdidReceiveUserInfo、時計の内線番号は呼び出されないため、合併症のデータがありません。
助言がありますか?または、バグレポートを提出する必要がありますか?
apple-watch - Apple Watch で NSNotifications を使用して WCSession メッセージを配信する
私は Kugel を使用して NSNotifications を使用しており、ウォッチ シミュレーターと iPhone および iPhone シミュレーターの両方でうまく機能しており、UI/状態を更新するメッセージを配信していますが、これらはデバイスでテストするときにウォッチ側で配信できません。
私が信じている問題は、iPhone からの WCSession メッセージに基づいて NSNotifications がトリガーされることです。シミュレーターと iPhone 側ですべてが正常に動作するのは、おそらく、sim が監視アプリを常にアクティブに保ち、iPhone が完全なセッションをサポートしているため、接続と通知が常に配信されるためです。ウォッチでは、ウォッチの状態に基づいて、セッションとおそらく通知の両方が失敗する可能性があります。
時計でのデバッグは非常に遅いです。デバッグ プロセスを開始するだけで 5 ~ 10 分かかります。
電話メッセージが時計で受信され、メッセージに基づいて更新する必要があることを時計アプリに通知するための最良の方法について、誰かが私にいくつかの読書を指摘できますか? それとも、後で確認できる WCSession および NSNotification 情報を記録できる優れたデバッグ コードでしょうか?
私のコードはかなり単純ですが、まだ進行中の作業です....
両側で、セッションを管理するシングルトンを作成します。電話側のコードは次のとおりです。
そしてこれは時計側です:
iPhone 側の AppDelegate と時計側の ExtensionDelegate にシングルトンを作成します。電話側は次のとおりです。
メッセージを送信するときの基本的なロジックは、相手側が到達可能かどうか、到達可能である場合は sendMessage が使用され、到達可能でない場合は sendApplicationContext が使用されることです。
電話側でメッセージが受信されると、アプリがフォアグラウンドにあるかバックグラウンドにあるかを確認する追加のロジックがあり、フォアグラウンドの場合はメイン スレッドに通知をプッシュし、バックグラウンドの場合は情報だけが更新されます。私の理解では、メッセージはバックグラウンドで受信されないため、時計側では常にメインスレッドにプッシュされます。
watchos-2 - 間違った WCSessionDelegate コールバック関数が呼び出されました
私は WCSession.defaultSession().sendMessage 関数を使用して、時計から iPhone にメッセージを送信します。
アイフォンで、
が呼び出され、呼び出されるべきコールバックではありません:
したがって、replyHandlerを呼び出すことはできません:-(
理由はありますか?どうもありがとう!
編集:呼び出しに使用されるコード:
ios - didReceiveApplicationContext が呼び出されていない
チュートリアル/サンプル コードを使用してアプリに WCConnectivity を設定したところ、正しく実装できたと感じています。シミュレーターを使用してテストしていません。何らかの理由で、すべてが正しく設定されているにもかかわらず、didReceiveApplicationContext が監視アプリで呼び出されていません。
ExtensionDelegate で WatchKit アプリのインターフェイス コントローラーを呼び出し、代わりに NSUserDefaults を使用してインターフェイス コントローラー データを設定しようとしました。
iOS アプリ
ViewController.m
延長コードを見る
ExtensionDelegate.m
InterfaceController.m