Saltar al contenido

¿Puedes rastrear la geolocalización en segundo plano con React Native?

Solución:

ACTUALIZACIÓN EXPO 2019 33.0.0:

Expo primero lo desaprobó para su SDK 32.0.0 para cumplir con las pautas de la tienda de aplicaciones, pero luego lo volvió a abrir en SDK 33.0.0.

Desde entonces, han hecho que sea muy fácil poder implementar la ubicación en segundo plano. Utilice este fragmento de código que utilicé para hacer que la geolocalización en segundo plano funcione.

import React from 'react';
import { Text, TouchableOpacity } from 'react-native';
import * as TaskManager from 'expo-task-manager';
import * as Location from 'expo-location';

const LOCATION_TASK_NAME = 'background-location-task';

export default class Component extends React.Component {
  onPress = async () => {
    await Location.startLocationUpdatesAsync(LOCATION_TASK_NAME, {
      accuracy: Location.Accuracy.Balanced,
      timeInterval: 5000,
    });
  };

  render() {
    return (
      <TouchableOpacity onPress={this.onPress} style={{marginTop: 100}}>
        <Text>Enable background location</Text>
      </TouchableOpacity>
    );
  }
}

TaskManager.defineTask(LOCATION_TASK_NAME, ({ data, error }) => {
  if (error) {
    alert(error)
    // Error occurred - check `error.message` for more details.
    return;
  }
  if (data) {
    const { locations } = data; 
    alert(JSON.stringify(locations); //will show you the location object
    //lat is locations[0].coords.latitude & long is locations[0].coords.longitude
    // do something with the locations captured in the background, possibly post to your server with axios or fetch API 
  }
});

El código funciona a las mil maravillas. Una cosa a tener en cuenta es que no se puede utilizar la geolocalización en la aplicación Expo. Sin embargo, puedes usarlo en tu compilación independiente. En consecuencia, si desea usar la geolocalización en segundo plano, debe usar este código y luego hacer expo build:ios y cárguelo en la tienda de aplicaciones para poder obtener la ubicación de fondo de un usuario.

Además, tenga en cuenta que debe incluir

"UIBackgroundModes":[
          "location",
          "fetch"
        ]

En el info.plist sección de tu app.json expediente.

Sí, es posible, pero sin usar Expo, hay dos módulos que he visto:

Esta es comercial, tienes que comprar una licencia https://github.com/transistorsoft/react-native-background-geolocation

Y este https://github.com/mauron85/react-native-background-geolocation

El equipo de la Expo lanzó una nueva función en el SDK 32 que le permite rastrear en segundo plano la ubicación.

https://expo.canny.io/feature-requests/p/background-location-tracking

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *