iOS 13 Programe tareas en segundo plano de iOS

9

Estoy implementando BackgroundTasks Framework para actualizar los datos. Pero tengo el siguiente problema

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
fuente

Respuestas:

17

Aquí hay posibles códigos de error para Domain=BGTaskSchedulerErrorDomainextraídos de los encabezados de ObjC con alguna explicación.

BGTaskSchedulerErrorCodeUnavailable = 1// La funcionalidad de programación de tareas en segundo plano no está disponible para esta aplicación / extensión. La actualización de la aplicación en segundo plano puede haberse deshabilitado en Configuración.

BGTaskSchedulerErrorCodeTooManyPendingTaskRequests = 2// La solicitud de tarea no se pudo enviar porque hay demasiadas solicitudes de tarea pendientes de este tipo. Cancele algunas solicitudes de tareas existentes antes de volver a intentarlo.

BGTaskSchedulerErrorCodeNotPermitted = 3 // La solicitud de tarea no se pudo enviar porque el modo de fondo apropiado no está incluido en la matriz UIBackgroundModes, o su identificador no estaba presente en la matriz BGTaskSchedulerPermittedIdentifiers en la lista de información de la aplicación.

demosten
fuente
13

La solución es ejecutar en un dispositivo. Estaba corriendo en el simulador. Sin embargo, mostraba que la actualización de la aplicación en segundo plano se ha habilitado en Configuración mientras se ejecuta en el simulador.

Gurjinder Singh
fuente
2

Lo he probado en un dispositivo real (iOS13.2 e iOS13.2.2), pero es el mismo resultado.

Error Domain = BGTaskSchedulerErrorDomain Code = 2 "(nulo)" No se puede finalizar BackgroundTask: no existe una tarea en segundo plano con el identificador 37 (0x25), o puede que ya se haya finalizado. Romper en UIApplicationEndBackgroundTaskError () para depurar.

Error Domain = BGTaskSchedulerErrorDomain Code = 1 "(nulo)" No se puede finalizar BackgroundTask: no existe una tarea en segundo plano con el identificador 113 (0x71), o puede que ya se haya finalizado. Romper en UIApplicationEndBackgroundTaskError () para depurar.

Parece que todavía existe error.

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

James Chan
fuente
Cuando ejecuto la programación del comando de depuración es exitosa, pero obtengo el mismo error (Código 1) en el dispositivo real cuando se programa una tarea. (iOS 13.2.3)
Teo
@Teo, ¿qué quisiste decir? tuvo éxito en el simulador? y falló en un dispositivo real?
user1462586
0

Verifique si no se registra BGTaskSchedulerPermittedIdentifiersen el archivo info.plist de su proyecto.

iCoder86
fuente
0

Por:

BGTaskSchedulerErrorDomain error 3

Verifique dentro del .xcodeprojarchivo del proyecto el objetivo apropiado. Luego vaya a la pestaña de información y a las Propiedades de destino de iOS personalizadas y verifique que BGTaskSchedulerPermittedIdentifiersse agreguen los identificadores permitidos del planificador de tareas en segundo plano ( ).

Esto resolvió mi problema al agregar BackgroundTasksa un proyecto existente.

eric.rl
fuente