問題タブ [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.
swift - Swift 3 とバックグラウンド タスクによる複雑さの更新
watchOS 3 の場合、Apple はWKRefreshBackgroundTask
、getNextRequestedUpdateDate
.
新しいアプローチを使用して、2 つの更新の間の時間をどのように判断できますか?
私は(URLから)要求しているデータをハックしgetCurrentTimelineEntry
て複雑さを更新するだけですが、それはAppleが推奨するものではないと思います.
短いコード例は大きな助けになります。
watchkit - reloadTimeline() は合併症を更新しません
watchOS 3 アプリを作成しようとしていますが、バックグラウンド タスクでコンプリケーションを更新したいと考えています。
まず、 内のバックグラウンド タスクでサーバーから新しいデータを取得しますhandle()
。その後、 を呼び出してアクティブな合併症を更新しcomplicationServer.reloadTimeline(for:)
ます。
コンソールに「UPDATE COMPLICATION」というメッセージが表示されるので、コードが実行されます。
しかし、リロード後も、コンプリケーションはまだ古いデータを表示します。ウォッチフェイスを切り替えて元に戻すと、コンプリケーションがリロードされることがあります。バックグラウンド タスクからコンプリケーションをリロードするために何か他のことをする必要がありますか?
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 に配置できますか? どうやって?
watchkit - watchOS でバックグラウンド更新を実行しようとすると、WKURLSessionRefreshBackgroundTask が呼び出されない
Web サービスからスケジュールされたデータを取得するための複雑さに取り組んでいます。20 ~ 30 分ごとに (または手動で)、これを行うために WKRefreshBackgroundTask をスケジュールしています。
Apple が提案したように、OS がバックグラウンド経由でこのデータのフェッチを処理するようにしますNSURLSession
。
これは、必要なデータをダウンロードするために使用する関数です。
これについていくつかのこと:
- スケジュールすると呼び出されます。コンソールに print ステートメントが表示されます。
- Apple の例とほぼ同じです。
- URLは省略しました。同じ URL が iOS/watchOS アプリで正常に機能するため、問題はありません。
問題は、タスクを呼び出しresume()
て、完了時にアプリを起動できるようにしているにもかかわらず、どちらも実行していないように見えることです。
完了すると、WKExtensionDelegate ハンドラーに戻ります。
としてWKURLSessionRefreshBackgroundTask
ですが、そうではありません。
私のコードは、Apple のサンプル コードと同じで、別のセッションを作成しますが、WKURLSessionRefreshBackgroundTask
の識別子を介してセッションに再参加します。これは、ダウンロードされたデータを処理するためにデリゲートが設定される場所です。コードを確認してください:
しかし、再び、それは二度と戻ってこないようです。コードがこのプロジェクトの Apple のサンプル コードと同じであるにもかかわらず、これが機能している理由を理解できないようです: WatchBackgroundRefresh: Using WKRefreshBackgroundTask to update WatchKit apps in the background。
プロジェクトに欠けている設定はありますか? このコードはすべてExtensionDelegate
、watchOS 3 の新しい に入れています。また、 と にも準拠しWKExtensionDelegate
てURLSessionDownloadDelegate
います。
事前にご協力いただきありがとうございます。