問題タブ [wkrefreshbackgroundtask]

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 に答える
4076 参照

swift - Swift 3 とバックグラウンド タスクによる複雑さの更新

watchOS 3 の場合、Apple はWKRefreshBackgroundTaskgetNextRequestedUpdateDate.

新しいアプローチを使用して、2 つの更新の間の時間をどのように判断できますか?

私は(URLから)要求しているデータをハックしgetCurrentTimelineEntryて複雑さを更新するだけですが、それはAppleが推奨するものではないと思います.

短いコード例は大きな助けになります。

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

watchkit - reloadTimeline() は合併症を更新しません

watchOS 3 アプリを作成しようとしていますが、バックグラウンド タスクでコンプリケーションを更新したいと考えています。

まず、 内のバックグラウンド タスクでサーバーから新しいデータを取得しますhandle()。その後、 を呼び出してアクティブな合併症を更新しcomplicationServer.reloadTimeline(for:)ます。

コンソールに「UPDATE COMPLICATION」というメッセージが表示されるので、コードが実行されます。

しかし、リロード後も、コンプリケーションはまだ古いデータを表示します。ウォッチフェイスを切り替えて元に戻すと、コンプリケーションがリロードされることがあります。バックグラウンド タスクからコンプリケーションをリロードするために何か他のことをする必要がありますか?

0 投票する
2 に答える
1287 参照

watchos-2 - WatchOS 3 スナップショット機能を追加するために、handleBackgroundTasks と scheduleSnapshotRefreshWithPreferredDate はトリガーされません

時計アプリのスナップショットを追加して Dock に配置する必要があります。これは新機能であるため、参考になるリソースが見つかりません。Apple のドキュメントhttps://developer.apple.com/library/prerelease/content/samplecode/WatchBackgroundRefresh/Introduction/Intro.htmlを読み、Apple ドキュメントに基づいて Watch アプリのメイン InterfaceController にこのコードを実装しました。 https://developer.apple.com/library/prerelease/content/samplecode/WatchBackgroundRefresh/Introduction/Intro.html ただし、handleBackgroundTasks は呼び出されません。私は何か間違ったことをしていますか?メインの InterfaceController ではなく、別の InterfaceController のスクリーンショットを Dock に配置できますか? どうやって?

0 投票する
2 に答える
2934 参照

watchkit - watchOS でバックグラウンド更新を実行しようとすると、WKURLSessionRefreshBackgroundTask が呼び出されない

Web サービスからスケジュールされたデータを取得するための複雑さに取り組んでいます。20 ~ 30 分ごとに (または手動で)、これを行うために WKRefreshBackgroundTask をスケジュールしています。

Apple が提案したように、OS がバックグラウンド経由でこのデータのフェッチを処理するようにしますNSURLSession

これは、必要なデータをダウンロードするために使用する関数です。

これについていくつかのこと:

  1. スケジュールすると呼び出されます。コンソールに print ステートメントが表示されます。
  2. Apple の例とほぼ同じです。
  3. URLは省略しました。同じ URL が iOS/watchOS アプリで正常に機能するため、問題はありません。

問題は、タスクを呼び出しresume()て、完了時にアプリを起動できるようにしているにもかかわらず、どちらも実行していないように見えることです。

完了すると、WKExtensionDelegate ハンドラーに戻ります。

としてWKURLSessionRefreshBackgroundTaskですが、そうではありません。

私のコードは、Apple のサンプル コードと同じで、別のセッションを作成しますが、WKURLSessionRefreshBackgroundTaskの識別子を介してセッションに再参加します。これは、ダウンロードされたデータを処理するためにデリゲートが設定される場所です。コードを確認してください:

しかし、再び、それは二度と戻ってこないようです。コードがこのプロジェクトの Apple のサンプル コードと同じであるにもかかわらず、これが機能している理由を理解できないようです: WatchBackgroundRefresh: Using WKRefreshBackgroundTask to update WatchKit apps in the background

プロジェクトに欠けている設定はありますか? このコードはすべてExtensionDelegate、watchOS 3 の新しい に入れています。また、 と にも準拠しWKExtensionDelegateURLSessionDownloadDelegateいます。

事前にご協力いただきありがとうございます。