問題タブ [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.
objective-c - WatchConnectivity の sendMessageData を介してカスタム オブジェクトの NSArray を NSData として渡す
WKInterfaceController の didAppear 関数が起動したら、sendMessageData コールバック関数を使用して空の NSData を WCSession のデフォルト セッションに送信します。
sendMessageData: は非 null 引数であるため、emptyData NSData オブジェクトが送信されます。私は、iOS アプリで WCSession の Delegate メソッド didReceiveMessageData を起動できるようにするためにのみ使用します。次に、まさにその関数内の replyHandler が、適切なデータを replyHandler の WKInterfaceController に送り返します。
私が抱えている問題は、WKInterfaceController の次の行でクラッシュすることです
エラーは次のとおりです。
* キャッチされていない例外 'NSInvalidUnarchiveOperationException' が原因でアプリを終了して います。クラスは、リンクされていないソース コードまたはライブラリで定義されている可能性があります。
私がこれまでに見つけたもの:
- 渡そうとしている NSArray は、カスタム オブジェクト (Tip.m) で構成されています。私は、NSArray 内のすべてのオブジェクトが NSCoding プロトコル ( NSArray を NSData に変換する方法は? ) に準拠している必要があることを知っています。initWithCoder と encodeWithCoder を使用して、オブジェクト内のすべての変数とオブジェクトをエンコードおよびデコードしました。
- Tip.m オブジェクトを WatchKit 拡張機能に追加する必要があります ( NSInvalidUnarchiveOperationException は、Apple Watch 拡張機能でオブジェクト エラーをデコードできません)。Tip.m ファイルを追加すると、他のオブジェクトから「アーキテクチャ i386 の未定義シンボル」のみが表示されます。
長い投稿で申し訳ありませんが、この問題の解決策を見つけるためにあらゆることを試みましたが、成功しませんでした。これが、WatchConnectivity Framework で問題を抱えているより多くの人々に役立つことを願っています。
watchkit - ApplicationContext プロパティは常に空の辞書を返します
から最新のデータを取得しようとしていますが、電話WCSessionを受けたばかりでも理由がわかりません。didReceiveApplicationContext詳細はコードで直接利用できます。
iOS アプリと Watch アプリの両方で常に同じものを使用するため、プロパティは常にを使用applicationContextして設定された最新の情報で更新されることを期待しています。接続性について誤解しているものはありますか?!updateApplicationContextWCSessionWCSession.defaultSession
watchkit - WCSession エラー ドメイン コード 7005: デバイスがペアリングされていません
WCSession sendMessage を使用することで、自分のプロジェクトの 1 つで常に ErrorDomainCode 7005 を取得しています。
すべてのシミュレーターでテストし、実際の iPhone とペアリングされた Apple Watch でもこのエラーが発生します。デバイスは確実にペアリングされています。
Watch 拡張機能を使用してゼロから作成した他の (新しい) プロジェクトでも、まったく同じコードが正常に機能します。
最近ウォッチ拡張機能を追加した古いプロジェクトでのみ、この問題が発生します。
watch アプリは単に iPhone アプリと通信しません。
以下は私のコードです:
didFinishLaunchingWithOptions の AppDelegate:
AppDelegate: メッセージの受信者
拡張 InterfaceController を見る: awakeWithContext
これは私が今まで試したことです:
- すべてのシミュレーターのコンテンツと設定をリセットします
- 時計とiPhoneから時計アプリを削除
- 電話の Watch アプリの設定経由: 電話アプリの Watch 拡張機能を削除し、再インストールしました。
- AppDelegate INIT メソッドで iPhone WCSession をセットアップしてみました
私は今、この問題に何日も苦労しています。したがって、すべてのヒントは高く評価されます。
watchkit - インスタンス メソッドの代わりにシングルトン WCSession デリゲートを使用する
WatchOS で奇妙な問題が発生しています (ただし、この問題は iOS と OSX で似ていると思います)。
デリゲートを処理するためにシングルトンを使用していWCSessionます (完全なコードは NatashaTheRobot によるものです。彼女のコードの一部のみをここに貼り付けます。完全なコードはここにあります)。このクラスにはstartSession、シングルトンがセッションのデリゲートとして関連付けられる関数があります。
すべてのデリゲート関数は、同じクラス内で定義されています。session:didReceiveMessage:replyHandler:
Watch アプリが現在の InterfaceController によって個別にメッセージを受信するたびに、デリゲートを呼び出せるようにしたいと考えています。
ExtensionDelegateこの目標を達成するのに適した場所はクラスかもしれないと思いました:
このコードは機能していないようで、デリゲート関数は呼び出されません。
次に、一般的ではない方法を選択することにし、すべての InterfaceController 内のシングルトン インスタンスへの参照を追加し始めましたが、やはり機能せず、デリゲート メソッドが呼び出されません。次に、前回の試みで、セッション デリゲート プロトコルを InterfaceController コード内に直接実装しました。その場合、iOS アプリからメッセージを受け取ります...正しく動作していました (明らかに、時計アプリがその特定の InterfaceController を提示している場合のみ)。
私の質問は、なぜ一般的なシングルトン オブジェクトの実装が機能しないのですか? デリゲートを動作させるために InterfaceController に直接実装する必要があるのはなぜですか?
apple-watch - Apple Watch がバックグラウンドの場合、sendMessage の replyHandler が受信されない
私は Apple Watch OS2 用のアプリを作成しています。このアプリでは、sendMessage:replyHandler を使用して iPhone と Watch の通信に使用しています。今問題は、時計から iPhone にメッセージを送信し、時計のバックグラウンドに移動すると、時計に返信ハンドラーが返されないことです。時計アプリがフォアグラウンドにある場合、これは正常に機能しています。任意の提案をいただければ幸いです。
ios - 動的通知コントローラーから Watch Connectivity メッセージを送信できません
このメッセージを書いているのは、 Dynamic Notification ControllerとWatch Connectivityの呼び出しを混在させているときに奇妙な問題が発生したためです。
ここで問題を再現したサンプル プロジェクトを見つけることができます: https://gitlab.6minutecanoe.com/baptiste.leguelvouit/watch-connectivity-issue
問題はクラスのdidReceiveRemoteNotificationメソッドに関連しているようです。NotificationControllerこのメソッドをオーバーライドし、クラスを介してWatch Connectivityメッセージを送信しようとすると、 Digital Crown ボタンを押さない限り Watch アプリが動かなくなります。handleActionWithIdentifierExtensionDelegate
このメソッドをオーバーライドしなければ、すべてが正常に機能するため、これは非常に奇妙です。WKUserNotificationInterfaceTypeDefaultまた、このメソッドで直接返そうとしましたが、何も変わりませんでした。
誰もこの問題を抱えていますか?
ありがとう。
再現手順: サンプル プロジェクトを実際のデバイス (iPhone + Watch) で起動し、カスタム カテゴリを含むリモート通知を特定のデバイス トークンに送信します。カスタム アクション ボタンをクリックすると、問題が発生します。
バージョン: watchOS 2.0.1 の Apple Watch 38mm (13S428) + iOS 9.1 の iPhone 5S (13B143)
構成:この問題は、メソッドで返される動的通知コントローラー
を使用しようとしたときに特に発生しました。WKUserNotificationInterfaceTypeCustomdidReceiveRemoteNotification
ios - Swift を使用して Apple Watch から iPhone にデータを同期する
iOS と Apple Watch 用のアプリケーションを作成しており、Apple Watch と iPhone の間でデータを同期する必要があります。
私はiPhoneからApple Watchにデータを送信するためにこれを行いました: http://telliott.io/2015/08/11/how-to-communicate-between-ios-and-watchos2.html
逆に、時計アプリでデータを変更し、更新されたデータを iPhone に送信すると、メッセージが受信された ViewController が開かれている場合に奇妙な警告が表示されます。閉じて時計から更新されたデータを送信すると、コンソールに警告は表示されず、ViewController を開くとデータが更新されます。
誰でもこの奇妙な警告で私を助けることができますか?
これは私がメッセージを受け取る方法です
ios - Apple WatchでURLを呼び出すベストプラクティスは何ですか?
Apple Watch から API を呼び出すベスト プラクティスは何ですか
- sendMessage "watchConnectivity" を使用して Apple Watch から iPhone に API を呼び出します
また
- NSURLSession を使用して、ウォッチ自体から API を呼び出しますか?
ios - 既存の iPhone アプリに WatchApp を実装し、API 呼び出しを iPhone アプリでバックグラウンド モードで実行したい
既存の iPhone アプリに WatchApp を実装しており、iPhone アプリでバックグラウンド モードで API 呼び出しを行いたいと考えています。それを行う方法を提案してください。私の iPhone コードは Obj-C にあり、Watch コードを Swift にしたいと考えています。Watch からのネットワーク クエリは、バックグラウンドで iPhone で処理する必要があります。それは可能ですか?