iOS 13 iOSバックグラウンドタスクのスケジュール


8

データを更新するためにBackgroundTasks Frameworkを実装しています。しかし、私は以下の問題を得ました

Could not schedule refreshApp: Error Domain=BGTaskSchedulerErrorDomain Code=1 "(null)"
Could not schedule data featch: Error Domain=BGTaskSchedulerErrorDomain Code=1 "(null)"
2019-10-01 19:19:32.550320+0530 SOBackgroundTask[34131:1129470] Can't end BackgroundTask: no background task exists with identifier 3 (0x3), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.

回答:


16

以下はDomain=BGTaskSchedulerErrorDomain、ObjCヘッダーから抽出された可能性のあるエラーコードとその説明です。

BGTaskSchedulerErrorCodeUnavailable = 1//このアプリ/拡張機能では、バックグラウンドタスクスケジューリング機能は利用できません。アプリのバックグラウンド更新が[設定]で無効にされている可能性があります。

BGTaskSchedulerErrorCodeTooManyPendingTaskRequests = 2//このタイプの保留中のタスク要求が多すぎるため、タスク要求を送信できませんでした。再試行する前に、いくつかの既存のタスク要求をキャンセルしてください。

BGTaskSchedulerErrorCodeNotPermitted = 3 //適切なバックグラウンドモードがUIBackgroundModes配列に含まれていないか、その識別子がアプリのInfo.plistのBGTaskSchedulerPermittedIdentifiers配列に存在しないため、タスクリクエストを送信できませんでした。


12

解決策は、デバイス上で実行することです。私はシミュレーターで走っていました。ただし、シミュレーターで実行中に、設定でバックグラウンドアプリの更新が有効になっていることが示されていました。


2

実際のデバイス(iOS13.2、iOS13.2.2)でテストしましたが、同じ結果です。

エラードメイン= BGTaskSchedulerErrorDomainコード= 2 "(null)"バックグラウンドタスクを終了できません:識別子37(0x25)のバックグラウンドタスクが存在しないか、既に終了している可能性があります。デバッグするには、UIApplicationEndBackgroundTaskError()で中断します。

エラードメイン= BGTaskSchedulerErrorDomainコード= 1 "(null)" BackgroundTaskを終了できません:識別子113(0x71)のバックグラウンドタスクが存在しないか、既に終了している可能性があります。デバッグするには、UIApplicationEndBackgroundTaskError()で中断します。

まだバグがあるようです。

https://forums.developer.apple.com/thread/121990


debugコマンドを実行すると、スケジュールは成功しますが、実際のデバイスがタスクをスケジュールするときに同じエラー(コード1)が発生します。(iOS 13.2.3)
Teo

@Teoどういう意味ですか?シミュレータで成功しましたか?実際のデバイスで失敗しましたか?
user1462586

0

BGTaskSchedulerPermittedIdentifiersプロジェクトのinfo.plistファイルに登録し忘れていないか確認してください。


0

ために:

BGTaskSchedulerErrorDomain error 3

プロジェクトの.xcodeprojファイル内で適切なターゲットを確認してください。次に、情報タブとカスタムiOSターゲットプロパティに移動し、許可されたバックグラウンドタスクスケジューラ識別子(BGTaskSchedulerPermittedIdentifiers)が追加されていることを確認します

これはBackgroundTasks、既存のプロジェクトに追加するときの私の問題を解決しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.