問題タブ [apple-watch-complication]
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 - complicationController からの sendMessage で iOS 親アプリを起動する方法
ウォッチキット拡張機能からメッセージを送信して、iOS 親アプリを起動しようとしています。
これは、以下の sendMessage 関数が watchApp / ViewController から呼び出された場合にのみ機能します。ComplicationController から呼び出されるとメッセージが送信されますが、iOS の親アプリが起動するようになりました。
アドバイスをいただければ幸いです。(Swiftのコード参照をお願いします)
ここに簡略化されたコード:
AppDelegate と ExtensionDelegate では:
ExtensionDelegate の場合: (ここでは問題ありません。メッセージは正常に送信されます)
AppDelegate の場合: (iOS アプリが実行されていない/フォアグラウンドでない場合は受信されません)
これは、Complication Controller から関数が呼び出される方法です (メッセージは送信されますが、親アプリは起動されません)。
ios - iOS アプリから watchOS2 コンプリケーションへの設定の転送を正しく実装する方法
私が達成したいことは次のとおりです。
- コンプリケーションは 30 分間隔でバックグラウンドで更新されます
- 時計アプリが実行され、独自の更新されたデータを受信するたびに、コンプリケーションが更新されます
- コンプリケーションは、iOS アプリが実行され、ユーザーが時計データに影響する設定を変更するたびに更新されます (気象観測の場所や表示単位の変更など)。
項目 1. と 2. はわかりやすいように見えますが、ここで適切に対処されています: Apple Watch のコンプリケーション データを更新するフローは何ですか?
ただし、項目 3 については、iOS アプリで WCSession インスタンスをセットアップし、transferCurrentComplicationUserInfo を呼び出して、新しい設定を NSDictionary として送信します。ウォッチ拡張機能では、これにより WCSessionDelegate で didReceiveUserInfo が呼び出されます。
私が抱えている問題は、watchOS が、didReceiveUserInfo を呼び出した直後に、requestedUpdateDidBegin を別のスレッドで呼び出しており、アプリから新しく受信した UserInfo ディクショナリの新しい設定を使用して更新されたデータを取得する前に、これが実行を開始することです。
その結果、コンプリケーションは短時間で 2 回連続して更新されます。1 回目は、WatchOS が requestedUpdateDidBegin を呼び出して、既存の (古い) データでコンプリケーションを再更新した後、すぐに Web から新しいデータを受け取り、それらを更新する必要があります。再び自分のコードで。
これは不必要であり、リソースの浪費であり、Apple が許可している限られた更新の予算 (おそらく 1 時間に 2 回) は言うまでもありません。
私はここで何か悪いことをしていますか? Web から新しいデータを取得する前に、watchOS2 が requestedUpdateDidBegin を呼び出さないようにするにはどうすればよいですか?
ios - Apple Watch - コンプリケーションの更新をプッシュ通知と同期させるにはどうすればよいですか?
参加者が時間と部屋番号で講演のスケジュールを確認できる会議アプリを書いています。ユーザーは興味のある講演を選択します。時計アプリは、ユーザーの次回の講演をコンプリケーションとして表示します。
講演が遅れたり部屋が変更になったりした場合、その講演のすべての出席者にプッシュ通知を送信します。また、アプリはコンプリケーションを定期的に (30 分ごとに) 更新します。ユーザーがアプリまたはウォッチでプッシュ通知を選択すると、コンプリケーションが更新されます。
このセットアップには、ジャイブしない使用例が 1 つあります。プッシュ通知が電話またはアプリで受信され、ユーザーがプッシュでルームタイムの変更を確認し、プッシュを選択しない場合、プッシュのメッセージは次のようになります。コンプリケーションと同期していません。
例: コンプリケーションの表示: 1:15p Rm 1F コンプリケーションは 30 分間隔で更新されるようにスケジュールされています。プッシュは午後 1 時 10 分に「次のイベント '地球温暖化' は午後 1 時 45 分に延期されます」と表示されますが、ユーザーはそれを選択しません。コンプリケーションは午後 1:15 から午後 1:30 まで引き続き表示されます
これを回避する方法はありますか?
swift2 - watchOS 2 画像付きの複雑化
そこで、watchOS 2 のコンプリケーションに画像を表示させようとしました。調査により、次のリンクが表示されました。
https://www.bignerdranch.com/blog/watchkit-2-complications/ http://techotopia.com/index.php/A_watchOS_2_Complication_Tutorial https://developer.apple.com/library/prerelease/watchos/documentation/ClockKit /Reference/CLKImageProvider_class/index.html#//apple_ref/occ/cl/CLKImageProvider https://forums.developer.apple.com/thread/7426
個々の画像をプロジェクトにインポートするだけでなく、コンプリケーションに画像アセットを使用してみました。画像をロードするための私のコードは次のとおりです。
しかし、それはこの画像になるだけです:
読み込もうとしている画像は次のとおりです。
カラー画像とモノクロ画像の両方を試しましたが、常に同じ結果が得られます。
ios - SendMessage コンプリケーション コントローラ Wake iOS App
そのため、ウォッチキットの複雑さがrequestUpdateDidBegin () を呼び出してsendMessage ()を使用して iOS アプリを起動し、複雑なデータを計算し、transferCurrentComplicationUserInfo () を使用して複雑さを更新するときに、この機会を使用しようとしています。拡張デリゲートからsendMessage ()を呼び出します。これが実際にiOSアプリに到達するという複雑な運を経験しています。iPhone を時計の横に置いても、パフォーマンスはさまざまです。ある時、自分の携帯電話にアプリをビルドしたところ、sendMessage () とtransferCurrentComplicationUserInfoを介して 30 を超える更新が正常に配信されました。()、2 日間にわたって。次に、時計アプリを使用して時計からアプリをアンインストールし、時計アプリから再インストールしました(コードやビルドの変更はまったくありません)が、機能しなくなりました。sendMessage ()の呼び出しには、明らかにいくつかのバグと信頼性の欠如があると思われます。他の誰かがこれを見つけていますか、回避策はありますか? コンプリケーション コントローラがrequestUpdateDidBegin ()を呼び出したときに iPhone アプリを起動するにはどうすればよいですか?
prediction - 将来の値を予測し、時間に依存するデータを表示する Apple Watch コンプリケーションを作成する
WatchOS 2 用の Apple Watch コンプリケーションを作成中です。表示しようとしている特定のデータは、3 ~ 6 分の間隔で (Web リクエストを介して) 提供されます。データ値がどのようになるかを予測できる予測アルゴリズムがあります。これは私に問題を提示します。
タイムトラベルで予測アルゴリズムが提供するデータを表示したいので、getTimelineEntriesForComplication (特定の日付以降のデータを要求するバージョン) を使用して、タイムラインに忠実であるとアルゴリズムが信じる将来の値を提供したいと考えています。 . ただし、時間が進むと (よくあることですが)、これらの予測データ ポイントのいずれかが発生するように設定された時間に達すると、予測値は正確ではなくなります。
たとえば、午後 12 時で、現在 A の (正確な) データ値があるとします。予測アルゴリズムは、次の 2 時間の次のデータ値を予測する可能性があります。
- 午後 12 時 30 分 | B
- 午後 1 時 | C
- 午後 1 時 30 分 | D
- 午後 2 時 | え
ただし、実際に午後 12 時 30 分になると、実際のデータ値は F になる可能性があります。さらに、アルゴリズムは、午後 2 時 30 分まで新しい予測セットを生成します。updateTimelineForComplication
タイムラインを再構築する必要があることを示すために使用できることは理解していますが、この方法には 2 つの問題があります。
- 実行時間の制限をすぐに超えてしまうのではないかと心配しています
updateTimelineForComplication
タイムライン全体をフラッシュします。これは、過去のすべてのデータが完全に有効であることを考えると無駄に思えます。次の 4 つほどの値を更新する必要があるだけです。
この問題を処理するより良い方法はありますか?