iOS 13 Planen Sie iOS-Hintergrundaufgaben

8

Ich implementiere das BackgroundTasks Framework zum Aktualisieren der Daten. Aber ich habe das folgende Problem

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.
Gurjinder Singh
quelle

Antworten:

15

Hier sind mögliche Fehlercodes zum Domain=BGTaskSchedulerErrorDomainExtrahieren aus ObjC-Headern mit einigen Erläuterungen.

BGTaskSchedulerErrorCodeUnavailable = 1// Die Planungsfunktion für Hintergrundaufgaben ist für diese App / Erweiterung nicht verfügbar. Die Aktualisierung der Hintergrund-App wurde möglicherweise in den Einstellungen deaktiviert.

BGTaskSchedulerErrorCodeTooManyPendingTaskRequests = 2// Die Aufgabenanforderung konnte nicht gesendet werden, da zu viele ausstehende Aufgabenanforderungen dieses Typs vorhanden sind. Brechen Sie einige vorhandene Aufgabenanforderungen ab, bevor Sie es erneut versuchen.

BGTaskSchedulerErrorCodeNotPermitted = 3 // Die Aufgabenanforderung konnte nicht gesendet werden, da der entsprechende Hintergrundmodus nicht im UIBackgroundModes-Array enthalten ist oder seine Kennung im BGTaskSchedulerPermittedIdentifiers-Array in der Info.plist der App nicht vorhanden war.

demosten
quelle
11

Die Lösung besteht darin, auf einem Gerät ausgeführt zu werden. Ich lief auf Simulator. Es wurde jedoch angezeigt, dass die Aktualisierung der Hintergrund-App in den Einstellungen aktiviert wurde, während sie auf dem Simulator ausgeführt wurde.

Gurjinder Singh
quelle
2

Ich habe auf einem realen Gerät (iOS13.2 und iOS13.2.2) getestet, aber es ist das gleiche Ergebnis.

Error Domain = BGTaskSchedulerErrorDomain Code = 2 "(null)" BackgroundTask kann nicht beendet werden: Es gibt keine Hintergrundaufgabe mit der Kennung 37 (0x25) oder sie wurde möglicherweise bereits beendet. Brechen Sie UIApplicationEndBackgroundTaskError () zum Debuggen ein.

Error Domain = BGTaskSchedulerErrorDomain Code = 1 "(null)" BackgroundTask kann nicht beendet werden: Es gibt keine Hintergrundaufgabe mit der Kennung 113 (0x71) oder sie wurde möglicherweise bereits beendet. Brechen Sie UIApplicationEndBackgroundTaskError () zum Debuggen ein.

Es scheint, dass es noch einen Fehler gibt.

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

James Chan
quelle
Wenn ich den Debug-Befehl ausführe, ist der Zeitplan erfolgreich, aber ich erhalte den gleichen Fehler (Code 1) auf dem realen Gerät, wenn es eine Aufgabe plant. (iOS 13.2.3)
Teo
@Teo was hast du gemeint? erfolgreich auf Simulator? und auf echtem Gerät fehlgeschlagen?
user1462586
0

Bitte überprüfen Sie, ob Sie die Registrierung BGTaskSchedulerPermittedIdentifiersin der Datei info.plist Ihres Projekts verpassen .

iCoder86
quelle
0

Zum:

BGTaskSchedulerErrorDomain error 3

Suchen Sie in der Projektdatei .xcodeprojnach dem entsprechenden Ziel. Wechseln Sie dann zur Registerkarte "Info" und zu den benutzerdefinierten iOS-Zieleigenschaften, und überprüfen Sie, ob die zulässigen IDs ( BGTaskSchedulerPermittedIdentifiers) für den Hintergrund-Taskplaner ( ) hinzugefügt wurden.

Dies löste mein Problem beim Hinzufügen BackgroundTaskszu einem vorhandenen Projekt.

eric.rl
quelle