Así que con iOS 7 el apoyo de un amplio modo de fondo, es posible que finalmente tienen un equivalente para Android de Servicio en iOS?

Lo que soy después de que básicamente consiste en ejecutar Una aplicación en segundo plano y tienen una o más aplicaciones de B y C de hablar para que la aplicación (sin mostrar la GUI de Una aplicación).

Por favor, tenga en cuenta que el uso de la conectividad y las notificaciones push no puede ser una opción aunque esta es la forma recomendada de hacerlo.
Alguna idea?

  • Te recomiendo hacer esta pregunta en otros sitios ya que iOS 7 no es liberado todavía. El mejor lugar para este tipo de cosa es el desarrollador de Apple foros. Dudo que Apple nunca simplemente dejar que su aplicación se ejecute en segundo plano, aunque. Demasiados idiota, los programadores escribir mierda servicios que chupan la batería.
InformationsquelleAutor Eloy_007 | 2013-08-20

4 Comentarios

  1. 5

    EDICIÓN: No funciona como se espera. Ver esta respuesta para la mejor solución: Las Notificaciones Push


    EDICIÓN: La siguiente solución sólo es útil mientras el usuario está en la app de mantener sincronizados.

    No hay manera de realizar las tareas en segundo plano de forma permanente, pero puede utilizar la longitud finita tareas a realizar que, al hacer una longitud finita, esto va a ejecutar siempre, mientras la aplicación está activa, pero cuando usted haga clic en botón de inicio, ios le da a sólo 10 minutos para realizar su tarea y lo invalida, pero nos da una oportunidad para hacer un ‘invalidar bloque de controlador», donde se pueden hacer las últimas acciones antes de terminar definitivamente.

    , por Lo tanto, si utiliza el controlador de bloque para llamar a una longitud finita tarea de otro tiempo, usted puede simular un servicio por ejecutar una tarea por 10 min y cuando su fin, llame a su mismo durante otros 10 min y en consecuencia.

    Puedo usar en un proyecto de creación de una interfaz de «Servicio». Os dejo aquí el código:


    • Servicio.h

    //
    // Service.h
    // Staff5Personal
    //
    // Created by Mansour Boutarbouch Mhaimeur on 30/09/13.
    // Copyright (c) 2013 Smart & Artificial Technologies. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface Service : NSObject
    
    @property (nonatomic) UIBackgroundTaskIdentifier backgroundTask;
    @property (nonatomic) NSInteger frequency;
    @property (nonatomic, strong) NSTimer *updateTimer;
    
    - (id) initWithFrequency: (NSInteger) seconds;
    - (void) startService;
    - (void) doInBackground;
    - (void) stopService;
    @end

    • Servicio.m

    //
    // Service.m
    // Staff5Personal
    //
    // Created by Mansour Boutarbouch Mhaimeur on 30/09/13.
    // Copyright (c) 2013 Smart & Artificial Technologies. All rights reserved.
    //
    
    #import "Service.h"
    
    @implementation Service
    @synthesize frequency;
    
    -(id)initWithFrequency: (NSInteger) seconds{
        if(self = [super init]){        
            self.frequency = seconds;
            return self;
        }
        return nil;
    }
    - (void)startService{
        [self startBackgroundTask];
    }
    
    - (void)doInBackground{
        //Español //Sobreescribir este metodo para hacer lo que quieras
        //English //Override this method to do whatever you want
    }
    
    - (void)stopService{
        [self.updateTimer invalidate];
        self.updateTimer = nil;
        [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
        self.backgroundTask = UIBackgroundTaskInvalid;
    }
    
    - (void) startBackgroundTask{
        self.updateTimer = [NSTimer scheduledTimerWithTimeInterval:frequency
                                                            target:self
                                                          selector:@selector(doInBackground)
                                                          userInfo:nil
                                                           repeats:YES];
        self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
            [self endBackgroundTask];
        }];
    }
    - (void) endBackgroundTask{
        [self.updateTimer invalidate];
        self.updateTimer = nil;
        [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
        self.backgroundTask = UIBackgroundTaskInvalid;
        [self startBackgroundTask];
    }
    
    @end

    Con esta clase se realizo mis servicios, pero no puedo probarlo por un tiempo muy largo. La mejor prueba de que no duró 16 horas en el simulador y todo funciona bien!

    EDICIÓN: Que fue probado en el simulador, pero en el teléfono no funciona después de la aplicación ha sido terminado.

    Te dejo un ejemplo:


    //SomeService.h
    @interface SomeService : Service
    
    @end
    
    
    //SomeService.m
    #import "SomeService.h"
    
    @implementation SomeService
    
    //The method to override
    - (void)doInBackground{
        NSLog(@"Background time remaining = %.1f seconds", [UIApplication sharedApplication].backgroundTimeRemaining);
        NSLog(@"Service running at %.1f seconds", [self getCurrentNetworkTime]);
    }
    //Your methods
    - (long) getCurrentNetworkTime{
        return ([[NSDate date] timeIntervalSince1970]);
    }
    
    @end

    Y en su aplicación delegado o donde usted necesita para elevar el servicio, debe escribir la siguiente línea:

    Service myService = [[SomeService alloc] initWithFrequency: 60]; //execute doInBackground each 60 seconds
    [myService startService];

    Y si usted necesita para detenerlo:

    [myService stopService];

    De mayo han explicado más de lo necesario, pero quiero estar claro para cualquier persona!
    Espero su ayuda y lo siento por mi inglés.

    • Puedo probar mi solución en un dispositivo real, y todo funciona bien durante más de 16 horas. Pero tengo un problema, si se establece una frecuencia de más de 10 min, el servicio se ejecuta, pero el temporizador de ejecutar el código cuando la frecuencia pasa el tiempo, por lo que si el servicio se invalida antes de ejecutar el código, nunca lo va a hacer, mientras que su aplicación en segundo plano. Así que estoy tratando de resolver el problema, si alguien lo haga, deje un comentario con la solución plz!
    • es esta la solución de apple aprobación ambiente?
    • No sé, todavía el desarrollo de la aplicación. Sólo tengo problemas con eso porque yo probar la aplicación en un iPhone 5C y servicios se detiene después de 10 min. :S
    • Gracias. Traté de que en el iPhone 4S con iOS 6.1. El trabajo se detiene en diez minutos. A pesar de que el código se vuelve a llamar a la tarea en segundo plano después de que el tiempo finalice. Cualquier ayuda :O
    • echa un vistazo a esta respuesta: las Notificaciones Push
    • ¿Alguien obtener la solución, de forma que se puede programar una tarea que se produjo digamos que después de 5 días de la app y también no debe ejecutar en segundo plano. Hay una manera en que podemos utilizar el planificador interno de ios que se utiliza en un Recordatorio?
    • Theres ninguna manera @Saty, la búsqueda de un mes para que, pero finalmente llegó a implementar las Notificaciones Push.
    • Gracias tio

  2. 2

    No, No es equivalente a un Android de Servicio. MansApps código no funciona, al menos no en iOS7. Una llamada de [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask]; en la fecha de vencimiento de controlador sólo se devolverá cuando la aplicación regresa al primer plano, es decir, la llamada de [self startBackgroundTask]; no se ejecutará cuando la aplicación se mantiene en el fondo.

    • Me utiliza notificaciones push para solucionarlo y todo funcione mejor, y el servicio que he hecho, lo guardo para actualizar o buscar cosas, mientras que el usuario está utilizando la aplicación.
  3. 0

    Me pareció la mejor y solución estándar:

    Notificaciones Push

    (post original por Matthijs Hollemans, actualización por Ali Hafizji).

    En iOS, las aplicaciones no pueden hacer mucho en el fondo. Aplicaciones sólo se le permite hacer a un conjunto limitado de actividades para la vida de la batería se conserva.
    Pero, ¿y si algo interesante sucede y desea permitir que el usuario sepa acerca de esto, incluso si no están en la actualidad el uso de la aplicación?
    Por ejemplo, tal vez el usuario ha recibido un nuevo tweet, su equipo favorito ganó el juego, o su cena está lista. Ya que la aplicación no se está ejecutando, se puede comprobar para estos eventos.
    Por suerte, Apple ha proporcionado una solución para esto. En lugar de la aplicación revisar continuamente para eventos o haciendo un trabajo en el fondo, usted puede escribir un componente de servidor para hacer de este lugar.
    Y cuando un evento de interés se produce, el componente de servidor puede enviar la aplicación de un de notificación de inserción! Hay tres cosas que un de notificación de inserción puede hacer:

    • Mostrar un mensaje corto de texto
    • Reproducir un sonido breve
    • Establecer un número en una insignia en el icono de la aplicación

    Tutorial link: http://maniacdev.com/2011/05/tutorial-ios-push-notification-services-for-beginners

    • A la pregunta original, se establece expresamente que las notificaciones push no puede ser una opción, y están muy lejos de ser la «mejor» solución para muchos sostenido de procesamiento en segundo plano o soluciones de comunicación.
  4. 0

    Básicamente es imposible si tu aplicación no aplicar ninguna de las funciones enumeradas a continuación. Y apenas investigar su aplicación antes de subir a la tienda, usted necesita para justificar el uso de que los permisos

    Esto es lo que Apple dice acerca de esto:

    La Implementación De Las Tareas De Larga Ejecución

    Para las tareas que requieren más tiempo de ejecución para aplicar, usted debe solicitar permisos específicos para que se ejecute en segundo plano, sin que hayan sido suspendidos. En iOS, sólo determinados tipos de aplicación se puede ejecutar en segundo plano:

    • Las aplicaciones que reproducen el contenido audible para el usuario, mientras en el fondo, como una aplicación de reproducción de música
    • Apps que registran el contenido de audio, mientras que en el fondo
    • Aplicaciones que mantener a los usuarios informados de su ubicación en todo momento, como una aplicación de navegación
    • Aplicaciones de apoyo de Voz sobre Protocolo de Internet (VoIP)
    • Aplicaciones que necesita para descargar y procesar a los nuevos contenidos regularmente
    • Aplicaciones que recibir actualizaciones periódicas de los accesorios externos

    Las aplicaciones que implementan estos servicios deben declarar los servicios que brindan soporte y sistema de uso de marcos para implementar los aspectos relevantes de los servicios. Declarando de los servicios permite al sistema saber que los servicios que usted utiliza, pero en algunos casos es el sistema de marcos para evitar que su aplicación se suspendió.

Dejar respuesta

Please enter your comment!
Please enter your name here