Estoy en el proceso de investigación de AFNetworking como un reemplazo para ASIHTTPRequest, y se nota una total falta de información sobre si admite descargas de fondo/uploads.

Con un ASIHTTPReqeust objeto, todo lo que tienes que hacer es llamar a [request setShouldContinueWhenAppEntersBackground:YES] y la solicitud de continuar en el fondo. Hay algún apoyo para que este en AFNetworking?

  • Si no la hay (no estoy seguro de si existe el apoyo para la ejecución de fondo en AFNetworking), siempre se podía puerto a través de cualquiera de las características adicionales que usted quiere de AFNetworking en ASIHTTPRequest, o agregar un fondo de apoyo a la ejecución relativamente sencilla para AFNetworking.
InformationsquelleAutor Andy Riordan | 2011-10-17

1 Comentario

  1. 48

    EDITAR: Como de AFNetworking 1.0RC1, este es un explícita característica. AFURLConnectionOperation ahora tiene el método setShouldExecuteAsBackgroundTaskWithExpirationHandler:, que gestiona de forma transparente todo esto para usted.


    Es una característica implícita, así que realmente no creo que la publicidad es. Todo lo que tendríamos que hacer es:

    
    - (void)applicationWillResignActive:(UIApplication *)application {
        __block UIBackgroundTaskIdentifier backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
            [application endBackgroundTask:backgroundTaskIdentifier];
            [[YourRestClient sharedClient] cancelAllHTTPOperations];
        }];
    }
     
    

    O, si usted maneja sus operaciones en su propio NSOperationQueue, sólo -cancelAllOperations aquí en su lugar.

    • Mattt – suena como que usted está dando una solución para la cancelación de las redes cuando se mueve en el fondo, aunque la pregunta era acerca de desove/permanente AFNetworking ops cuando se mueve en el fondo. Pensamientos acerca de eso? Dado que la mayoría de los métodos de AF están basados en bloques / regresar inmediatamente, he encontrado que el sistema cree que se completa antes de que realmente se sigan su curso… tal vez sólo el uso de waitUntilFinished cuando se ejecuta en un modo de fondo?
    • Creo que se entiende mal. Llamar beginBackgroundTaskWithExpirationhandler asegura que las solicitudes de continuar en el fondo. Las solicitudes no se cancelará hasta que la aplicación está inactiva durante un largo tiempo (10 min).
    • Sí, tienes toda la razón. Yo no sé en qué estaba pensando cuando escribí el anterior.
    • ADVERTENCIA: no utilice mattt del beginBackgroundTaskWithExpirationhandler código en applicationWillResignActive SIN ADICIÓN de una llamada de concordancia para endBackgroundTask – de lo contrario, IOS va a matar a su aplicación después de 600 segundos, y poniendo en primer relanzará su aplicación.
    • - (void)applicationWillResignActive:(UIApplication *)application { UIBackgroundTaskIdentifier backgroundIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) { [[AFHTTPClient sharedClient] cancelAllHTTPOperations]; }]; [application endBackgroundTask:backgroundIdentifier]; }
    • Sólo estoy mirando ahora en AFNetworking, pero parece que a partir de su ejemplo, que sólo puede hacer el fondo de la página en un nivel global, en contraste con ASIHTTPRequest la capacidad de especificar que las solicitudes para el fondo. Es esto correcto?
    • Esto probabilidades de ser añadido a la próxima versión (1.0)
    • es posible que desee actualizar su respuesta a la mención de la setShouldExecuteAsBackgroundTaskWithExpirationHandler: que has añadido. No me di cuenta de que estaba allí en la versión que he descargado un par de semanas atrás.
    • Usted debe agregar __block modificador de UIBackgroundTaskIdentifier backgroundTaskIdentifier, o el bloque de captura de su valor inicializado.
    • Simplemente me encanta AFNetworking, pero en un «legado», proyecto en el que estoy usando un NSOperationQueue objeto. Tengo una pregunta para usted y si usted puede responder lo agradecería. Dentro de la main método de un NSOperation subclase, me descargue una de un servicio a través de +sendSynchronousRequest:returningResponse:error. Una vez que descarga, el archivo importado dentro de los datos de los núcleos. Una solicitud de cancelación puede suceder en cualquier momento. Así, ¿la cancelación debe ser manejado de la manera correcta o qué necesito para utilizar aync patrón de acuerdo con la solicitud de cancelación? Gracias por su apoyo.
    • ¿Cuál es la [[YourRestClient sharedClient] cancelAllHTTPOperations]; línea refiriendo?
    • cancelAllHTTPOperations parece no ser incluido ya en el AFHTTPClient clase. En lugar de utilizar [[[YourHTTPClient sharedClient] operationQueue] cancelAllOperations];
    • por favor, actualice la respuesta para AFN 3.0

Dejar respuesta

Please enter your comment!
Please enter your name here