Hay una manera de indicar manualmente el dispositivo para el envío de un significativo cambio de ubicación de la notificación que se despiertan todas las aplicaciones registradas para esta notificación?
Esto es solo para probar, y me doy cuenta de que esta llamada a la API habría sido rechazada tras la presentación de la app store.

  • He cavado a través de la privada marco de los encabezados y no pude encontrar nada que se asemejaba a un desencadenante de esta. No es conveniente para sólo ser capaz de probar esta por llegar en el coche y conducir alrededor con un ordenador portátil.
  • Si utiliza el CLLocationManager didUpdateToLocation:fromLocation: delegado, a continuación, puede utilizar startUpdatingLocation en lugar de startMonitoringSignificantLocationchanges para la prueba de propósito. Sin filtro en el interior de la CLLocationManager llama didUpdateToLocation casi cada segundo si usted tiene medio-buena recepción gps. Para la prueba de propósito esto podría ayudar.
  • No es realmente una cuestión de prueba de la salida de CLLocationManager tanto como el ciclo de vida de la aplicación cuando se «despierta» por un significativo cambio de ubicación.
  • Si tienes un Apple Dev cuenta, es posible que desee echar un vistazo en el iOS5 UIAutomation. Eventualmente puede ofrecerle una solución. El único camino-bloque es que no sé si se puede poner un programa en modo de fondo a través de UIAutomation.
  • FWIW Xcode no permitir que sus aplicaciones para ser suspendido correctamente y usted puede obtener resultados inesperados. Que es en un dispositivo normal, que en realidad podría ser suspendido, pero como se está ejecutando a través de Xcode, que acaba de quedarse en segundo plano para propósitos de depuración…
InformationsquelleAutor Nick | 2011-05-27

10 Comentarios

  1. 189

    Así que dos respuestas:

    A) subirse a un tren 🙂

    B) Utilizar el simulador. En iOS 5.x simulador, hay un menú de depuración que tiene una ubicación submenú. Elija de la autopista sin peaje de la unidad. Esto iniciará el simulador en un viaje imaginario hacia abajo de la pintoresca 280 en el Norte de California. Se le da todo, pero a la vista: su aplicación va a obtener Significativo el Cambio de Ubicación de las actualizaciones de, y también será lanzado en el fondo si ha sido suspendido.

    Para comprobar que está realmente en movimiento, el lanzamiento de safari en el simulador, y vaya a maps.google.com y haga clic en la pequeña pista de mi botón de la localización. Usted debe estar en movimiento.

    Impresionante! Ahora cómo depurar el ciclo de vida del problema de ser lanzado por el sistema? Fácil! Tener xCode espere a que la aplicación sea lanzada para iniciar la depuración. Desde el Esquema de menú, elija editar esquema. En la carrera de sistema, y la ficha de Información para el «Lanzamiento» configuración de elegir : «Esperar para Mi.aplicación para lanzar«.

    Ejecutar tu aplicación una vez en el simulador, por lo que se inicia el monitoreo de las actualizaciones de ubicación, entonces la fuerza que salga de él, por lo que es suspendido. Agregar un punto de interrupción en su aplicación hizo terminar el lanzamiento de la función, y esperar. Tan pronto como el simulador ha ido lo suficientemente lejos, su solicitud será despertado, su punto de interrupción de golpe, y en el dinero.

    Pero en realidad, el viaje en tren es más divertido.

    • Yo no era consciente de que el simulador de realidad iba a desencadenar el SLC. Me preguntó por primera vez esta pregunta en los días de iOS4.x y realmente no era una solución (además de la de tren). Gracias por la respuesta.
    • Usando esta técnica, el intervalo de actualización es cada 5 minutos.
    • El intervalo en el dispositivo no es nunca inferior a 5 minutos.
    • Cualquiera probado en iOS 6.X simulador? No podía llegar a trabajar.
    • No hubo suerte con iOS 6.1 sim y XCode 4.6 para mí tampoco.
    • No se trabaja en ios7 stackoverflow.com/questions/18946881/…
    • trabajó en el simulador de iOS 7 para mí, pero no 6.1 (a través de xcode 5)
    • hay alguna forma de cambiar la pista ( la panorámica 280 en el Norte de California) a mi propia ruta
    • demasiado tiempo para esperar, ver @Chris solución
    • iOS9.3 + xCode 7.3 actualización : Este método funciona como un encanto !! (NOTA : asegúrese de manejar adecuadamente requestAlwaysAuthorization() + apropiado de la información.plst claves). Además, la configuración de distanceFilter = 500 me hizo recibir las actualizaciones de ubicación en cada 30-40 segundos (a veces incluso ~15s) 😉
    • AFAIK Xcode no permitir que sus aplicaciones para ser suspendido correctamente y usted puede obtener resultados inesperados. Que es en un dispositivo normal, que en realidad podría ser suspendido, pero como se está ejecutando a través de Xcode, que acaba de quedarse en segundo plano para propósitos de depuración…
    • De 5 años hacia el carril. ¿Todavía trabajo con XCode 9 ? He hecho exactamente todo lo que como se mencionó anteriormente. Esperó aproximadamente por 5 minutos. Nada.
    • sí, así es. Esto es tan fácil, una vez que sabemos qué hacer, pero fue un gran dolor tratando de lograr en mis el propios.
    • Funciona a la perfección con XCode 9.4.

  2. 17

    Bueno, he encontrado que puedo cambiar y desactivar el modo Avión y/o WiFi. Tal vez iniciar la aplicación con el dispositivo en modo avión, a continuación, cierre la aplicación y desactivar el modo avión. Que se encienda el GPS y forzar una actualización de la ubicación para ser enviados.

    • Esto no funciona para mí para relanzar una rescisión de aplicación que utiliza significativo el cambio de ubicación de la supervisión.
    • Sí ! Esta fue una muy buena idea ! Mi problema era hacer que el sistema de lanzamiento de mi aplicación cuando el dispositivo está bloqueado y este «modo Avión» solución trabajó como un encanto en iOS 9 ! Muchas gracias !
  3. 4

    Yo también quería probar el relanzamiento de mi terminada la aplicación que utiliza una gran cantidad de supervisión de los cambios. Escribí un trozo de código para que se muestre una notificación local cuando se pone en marcha por una ubicación clave en el lanzamiento de opciones de diccionario.

    Me encontré con mi aplicación en el simulador. Luego mató a partir de la barra de multitarea. Entonces me puse la ubicación de el simulador de iOS en una ubicación personalizada. Dejé el simulador y comenzó de nuevo. Mi aplicación se contó con el importante actualización de la ubicación y mostró la notificación local.

    • «salir del simulador» hizo el truco para mí
  4. 3

    Yo estaba luchando con el mismo problema, cómo probar ‘startMonitoringSignificantLocationchanges’ y comprobar si la aplicación está recibiendo actualizaciones de ubicación cuando se suspendió.

    Yo no pude coger la ejecución en un punto de interrupción, pero me las arreglé para ver los resultados de mi trabajo de aplicación mediante el envío de la nueva ubicación de los datos en el servidor.

    El flujo entero:
    – Implementado con ‘startMonitoringSignificantLocationchanges’ y una llamada a la API a mi servidor para actualizar la ubicación de latitud y longitud
    – Establecer la ubicación de las actualizaciones de modo de fondo capacidad para verdadero
    – Ejecutar la aplicación, así que la ubicación manager se inicia la app y está a la escucha de los cambios de ubicación
    – La fuerza cierra la app
    – Establecer el debug->ubicación en el simulador de la autopista de la unidad de
    – Abrió los mapas para ver si la ubicación está cambiando
    – Esperó en el servidor de actualizaciones de ubicación y fue la obtención de nuevos resultados de cada unos 3 minutos

    Sin embargo, todavía no estoy seguro de si este es lo suficientemente fina en un dispositivo real.

    Estoy trabajando en la Versión de Xcode 6.0.1 (6A317); probado en el Simulador de iPhone 5s (8.0).

  5. 1

    Dependiendo del escenario yo sugeriría dos soluciones:

    1. El uso de un Temporizador o LocalNotification que llama periódicamente stopMonitoringSignificantLocationchanges seguido por startMonitoringSignificantLocationchanges que deben desencadenar una nueva ubicación para ser enviado a su código (puede ser la misma Ubicación que antes).

    2. Construir su propio Simulador de GPS que se inicio en las versiones de depuración y que se llame el mismo delegado de métodos como la CLLocationManager haría.

    • Hay un ciclo de vida de aplicaciones que es la esencia de la cuestión.
    • Hay un ciclo de vida de aplicaciones que es la esencia de la cuestión. Se termina la aplicación, y se lanza a por el significativo cambio de ubicación en el fondo. Necesitamos poner a prueba el comportamiento de la aplicación una vez que se puso en marcha en el fondo, incluyendo la esperanza de vida y la comunicación de red. Resolvimos nuestros problemas por el hecho de tomar un día y conducir alrededor de la ciudad con un ordenador portátil de monitoreo de la consola para el registro de la actividad.
  6. 1

    Una cosa que he notado en iOS 7 y Xcode 5.1.1 – Si usted está esperando SLC eventos que el fuego de tu aplicación en modo de fondo, que puede o no puede golpear los puntos de corte establecidos. Para mí, a veces la NSLog mensaje no son ni siquiera mostrar.

    Si ese es el caso para usted, usted puede ver NSLog salidas desde el Registro del Sistema. Usted puede abrir el Registro del Sistema de Simulador de iOS del menú Depurar.

  7. 1

    Añadir a MagicSeth la respuesta, si usted necesita para probarlo en un dispositivo real, en lugar de un simulador, puede desencadenar un fondo lanzamiento con UIApplication.LaunchOptionsKey.location clave de deshabilitar y volver a habilitar los Servicios de Ubicación en General > pantalla de Privacidad en la aplicación de Configuración.

    • Este sería un mejor comentario de respuesta
  8. 0

    En iOS 4, usted puede registrarse para importantes cambios de ubicación. Desde la Apple docs: 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 más tarde, sólo en dispositivos que contienen un radio celular.

    Ver el Apple docs aquí y aquí.

    Aquí está el código de ejemplo para registrarse para la significación actualizaciones de ubicación:

    - (void)startSignificantChangeUpdates {
    
    //Create the location manager if it doesn't exist
    if (nil == locationManager)
        locationManager = [[CLLocationManager alloc] init];
    
    locationManager.delegate = self;
    [locationManager startMonitoringSignificantLocationChanges];

    }

    La documentación decir: si deja este servicio se está ejecutando y su aplicación es posteriormente suspendido o cancelado, el servicio se activa automáticamente su solicitud cuando la nueva ubicación de los datos llega. Al levantarse, su aplicación se coloca en el fondo y se les da una pequeña cantidad de tiempo para procesar los datos de ubicación. Debido a que la aplicación está en segundo plano, se debe hacer un mínimo de trabajo y evitar cualquier tipo de tareas (tales como la consulta de la red) que podría evitar que regresar antes de que el tiempo asignado caduca. Si no lo hace, su aplicación puede ser terminado.

    • Gracias… yo como funciona, y lo he estado usando durante algún tiempo. La pregunta es cómo prueba sin conducir alrededor en un vehículo el dispositivo para que la desencadenan.
    • Ah, lo siento. ¿Puedo borrar mi respuesta?
  9. 0

    De la autopista sin peaje de la unidad de

    Xcode /simulador de iOS: el disparo significativo el cambio de ubicación de forma manual

    //MARK: - MKMapViewDelegate
    
      func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
        guard let location = userLocation.location else { return }
    
        print(location.speed)
      }
  10. -4

    Bien, esto no es posible ya que el ámbito de aplicación está limitado a su propio espacio y este tipo de notificación no puede ser generado con Apple Api Documentadas lista.
    Por supuesto.. si cualquier indocumentados API se utiliza, la aplicación obtendrá el rechazo de apple debido a la utilización de indocumentados/API privada.

    • Obviamente… por Favor, lea la pregunta antes de contestar. «Esto es solo para probar, y me doy cuenta de que esta llamada a la API habría sido rechazada tras la presentación de la app store.»

Dejar respuesta

Please enter your comment!
Please enter your name here