Es posible hacer uso de geo-base de las notificaciones push en iOS cuando la aplicación está muerto (no en el fondo)?

Estoy interesado en construir una aplicación, donde el usuario podrá elegir una posición en un mapa y, a continuación, si él/ella, por ejemplo, es cercana a la zona de un local geo-base de la notificación de inserción pondrían en marcha.

Sin embargo, es esta «idea» incluso posible? Puede que el GPS ejecutar y comparar las coordenadas cuando la aplicación está muerto y ejecutar y notificar al usuario cuando está en su lugar? Hay un tutorial/artículo/más información de ningún tipo sobre el tema que he podido leer?

La mayoría de la información que he leído en línea eran más como ideas generales de la aplicación sin nada específico, aunque en el asunto.

  • ¿Por qué usted no desea ejecutar la aplicación en segundo plano (es decir, después de matar app)? He aplicado el mismo concepto en mi app corriendo en segundo plano característica. Usted puede elaborar más .
  • por ejemplo. Digamos que el usuario hace un recordatorio, y él quiere ver que cuando él va a su abuelas de la casa. Esta podría ser la próxima semana. para asegurarse de que el teléfono podría ser reseteado o podría haber eliminado la aplicación del fondo. Así que tengo la necesidad de empujar para trigered incluso cuando la aplicación no se está ejecutando en segundo plano. Me puedes decir el nombre de la app que estoy muy interesado en ver lo que se han implementado 🙂
  • 1. El GPS no está en ejecución cuando la aplicación asesinados en lo que no es posible. 2. Como comentario un ejemplo, desde la CMS lado puede configurar notificaciones push en tiempo de aviso. En el servicio web se puede diseñar un algoritmo que envía notificaciones push como se establece a través del móvil recordatorio.
InformationsquelleAutor donparalias | 2013-03-23

1 Comentario

  1. 34

    Para el seguimiento de la ubicación del usuario, mientras que la aplicación no se está ejecutando (es decir. anteriormente se ha terminado), hay dos opciones:

    1. De la la aplicación de iOS guía de programación en «Seguimiento de la Ubicación del Usuario»:

      El significativo cambio de ubicación de servicio es altamente recomendado para aplicaciones que no necesitan la localización de alta precisión de los datos. Con este servicio, las actualizaciones de ubicación se generan sólo cuando la ubicación del usuario cambia de manera significativa; por lo tanto, es ideal para aplicaciones sociales o aplicaciones que proporcionan al usuario con no críticos, la localización de información relevante. Si se suspende la aplicación cuando se produce una actualización, el sistema se despierta en el fondo de la manija de la actualización. Si se inicia la aplicación de este servicio y se termina entonces, el sistema arranca de nuevo la aplicación automáticamente cuando una nueva ubicación disponible. Este servicio está disponible en iOS 4 y posteriores, y sólo está disponible en dispositivos que contienen un radio celular.

      Sin embargo, de acuerdo a la CLLocationManager de referencia de la clase, no es demasiado preciso y actualizaciones poco frecuentes:

      Nota: las Aplicaciones, se puede esperar una notificación tan pronto como el dispositivo se mueve a 500 metros o más desde su notificación anterior. No debería esperar las notificaciones más frecuentemente que una vez cada cinco minutos. Si el dispositivo es capaz de recuperar datos desde la red, la ubicación manager es mucho más probable para entregar notificaciones de una manera oportuna.

    2. Región De Vigilancia funciona de una manera similar – incluyendo el reinicio de la aplicación después de ser despedido, pero con mayor precisión (dependiendo de la disponibilidad de las redes wi-fi y torres de telefonía celular):

      El umbral específico distancias son determinados por el hardware y la ubicación de las tecnologías que están disponibles actualmente. Por ejemplo, si el Wi-Fi está desactivada, región de vigilancia es significativamente menos precisos. Sin embargo, para propósitos de prueba, se puede asumir que la distancia mínima es de aproximadamente 200 metros.

      Otra región de vigilancia consideración es que (de acuerdo a la CLLocationManager de referencia de la clase) de la región de entrada y salida de notificaciones podría ser sólo recibió 3 a 5 minutos o así después de cruzar los límites regionales.

      Dependiendo de las necesidades reales, de la región de seguimiento pueden ser utilizados para la obtención de un «rough» ubicación y, a continuación, cuando el usuario está dentro de una región específica, hay que iniciar la más precisa GPS servicio basado en la ubicación del administrador. Cuando el usuario sale de la región de interés, desactivar el GPS de servicio para preservar la batería y volver a la ubicación aproximada servicio de supervisión (es decir. región de vigilancia) una vez más. Aquí está una implementación básica:

      SomeViewController.m:

      ...
      @interface SomeViewController () <CLLocationManagerDelegate>
      @property (nonatomic, strong) CLLocationManager *locationManager;
      @property (nonatomic, strong) CLRegion *someRegion;
      @end
      @implementation SomeViewController
      - (void)viewDidLoad
      {
      [super viewDidLoad];
      self.locationManager = [[CLLocationManager alloc] init];
      CLLocationDistance radius = 10; //10 metre sensitivity
      self.someRegion = [[CLRegion alloc] initCircularRegionWithCenter:someCoordinates radius:radius identifier:@"Smithtown Dry Cleaners"];
      self.locationManager.delegate = self;
      [self.locationManager startMonitoringForRegion:self.someRegion];
      self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
      self.locationManager.distanceFilter = 10;
      [self.locationManager startUpdatingLocation];
      }
      - (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
      {
      [self.locationManager startUpdatingLocation];
      }
      - (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
      {
      [self.locationManager stopUpdatingLocation];
      }
      //Delegate method from the CLLocationManagerDelegate protocol.
      - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
      {
      CLLocation* location = [locations lastObject];
      //If the user's current location is not within the region anymore, stop updating
      if ([self.someRegion containsCoordinate:location.coordinate] == NO) {
      [self.locationManager stopUpdatingLocation];
      }
      NSString *locationData = [NSString stringWithFormat:@"latitude %+.6f, longitude %+.6f\n",
      location.coordinate.latitude,
      location.coordinate.longitude];
      NSLog(@"%@", locationData);
      UILocalNotification *localNotification = [[UILocalNotification alloc] init];
      localNotification.alertBody = locationData;
      localNotification.alertAction = @"Location data received";
      localNotification.hasAction = YES;
      [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
      }

      Recuerde agregar las entradas correspondientes a la aplicación del archivo plist para que la aplicación se ejecutará en segundo plano con acceso a los recursos apropiados:

      MyApp-Info.plist:

      <key>UIBackgroundModes</key>
      <array>
      ...
      <string>location</string>
      </array>
      <key>UIRequiredDeviceCapabilities</key>
      <array>
      ...
      <string>location-services</string>
      <string>gps</string>
      </array>

      El código anterior supone el uso de iOS6 y el ARCO

    • Sí, sin duda se ve así! ¿Tiene usted alguna idea, aunque lo que la precisión de que estamos hablando en este caso? Causa he visto algunas aplicaciones(no descarga a ellos porque eran caros) que apoyaría geo-empujón, pero con una precisión de alrededor de 500 m de la zona. Esto sería demasiado para mi propósito. No sé si se puede seleccionar una precisión de alrededor de 50-100m y la batería cuánto sería el coste para ejecutar todo el tiempo, sin embargo. Me parezco más a ella ahora
    • Dado el significativo cambio de ubicación de servicio se basa en el dispositivo de cambio de torres de telefonía celular, podría no ser lo suficientemente bueno.
    • Sin embargo, debería ser posible para escuchar el «cambio significativo» notificación que despierta a la aplicación (si se termina) y, a continuación, empezar a utilizar el fondo estándar de los servicios de ubicación – que proporciona una mayor precisión – hasta que la aplicación se termina de nuevo. Por supuesto que vas a perder algo de precisión a la hora de la aplicación no se está ejecutando, pero el resto del tiempo sería tan precisa como cualquier app en segundo plano que recibe.
    • Pero esto no será efectiva después de matar a la aplicación o no se ejecutan en segundo plano. Incluso no se puede generar notificaciones locales.
    • Estás diciendo que no es posible enviar notificaciones locales desde el fondo después de que se reinicia con un didUpdateLocations evento? Este no ha sido mi experiencia.
    • No,estoy diciendo que no sea posible la ubicación de la actualización después de la matanza de la aplicación. Así no tendrá que llamar a los métodos de delegado después de que, así como locales de notificación.
    • Hmm por lo que la única manera es con la aplicación que se ejecuta en el fondo, supongo.
    • Si la aplicación se había iniciado «de la región de seguimiento» o «significativo el cambio de ubicación de la supervisión» antes de que fuera terminado, la aplicación se reiniciará en el fondo (cuando los cambios de ubicación de suficiente) y delegado método locationManager:didUpdateLocations: será llamado.
    • Sí y no. La aplicación debe estar en ejecución (en primer plano o en segundo plano) para hacer uso de GPS. PERO… iOS puede determinar la localización sin GPS y «unterminate» una aplicación en modo de fondo cuando en una ubicación específica o región (como se demuestra en la respuesta). Desde el fondo se puede activar el GPS y verificación localización más precisa de la información así como enviarle notificaciones push.
    • ¿Por qué el código anterior se supone que iOS 6? Región de vigilancia no es compatible con iOS 5? O estás haciendo algo en el código que no es compatible?
    • Admitidas engaño, pero usted no tiene que ser cuidadoso acerca de lo que hace la aplicación en segundo plano. La publicación de las notificaciones y el uso de GPS (es decir. estándar) de los servicios de ubicación no debe ir en contra de las pautas de Apple. Yo sólo he probado el código en iOS6, así que no puedo comentar en iOS5 (sin embargo región se admite el control de iOS4).
    • es la ubicación de los servicios y de GPS en UIBackgroundModes de archivo plist son distintas? puede usted aclarar mi?

Dejar respuesta

Please enter your comment!
Please enter your name here