Si estás buscando una alternativa de geolocalización de fondo de Transistorsoft para Capacitor, la opción más cercana gratuita es @capgo/background-geolocationEs de licencia MIT, envía para Capacitor 8, rastrea la ubicación en segundo plano en iOS y Android, admite geofencing nativo y puede enviar ubicaciones a tu servidor desde nativo code. No copia cada característica de Transistorsoft, por lo que esta guía cubre qué ganas, qué pierdes y cómo migrar.
Por qué los equipos buscan una alternativa de Transistorsoft
El producto Transistorsoft SDK es una solución madura que ha impulsado aplicaciones de flota, entrega y fitness durante años. Las personas rara vez lo dejan porque está roto. Dejan por estas razones:
Los lanzamientos ahora necesitan una clave en ambas plataformas
Según el registro de cambios de Transistorsoft, la versión 9.0.0 cambió a una licencia de clave JWT y comenzó a requerir una clave en iOS también. Antes de v9, solo los builds de liberación de Android estaban bloqueados. Las claves de v8 y anteriores no funcionan con v9, por lo que actualizar el plugin también significa generar nuevas claves desde su panel de control.
Su tienda vende licencias perpetuas por identificador de aplicación, desde una clave hasta 100 claves, con un año de actualizaciones incluidas. Los complementos como la geofencificación de polígono ahora están codificados en la misma clave. Para una aplicación, esto es un precio razonable. Para una agencia con 20 aplicaciones de etiqueta blanca, o una empresa que envía paquetes de staging y producción separados, la licencia se convierte en un artículo de gasto que alguien tiene que gestionar cada año.
El motor principal es un binario
El wrapper Capacitor es abierto, pero el motor de ubicación envía como un framework de iOS precompilado y una biblioteca de Android desde Maven. Cuando algo extraño sucede en un OEM de Android específico, no se puede leer ni parchear el code que decide cuándo grabar una corrección. Algunos equipos aceptan eso. Los equipos con requisitos de auditoría estrictos, o que simplemente quieren desplegar el code en Xcode, a menudo no lo hacen.
Superficie de configuración
El plugin expone un objeto de configuración muy grande: detección de movimiento, programación, odómetro, persistencia de SQLite, plantillas de sincronización HTTP, tareas sin cabeza y más. Si necesitas todo eso, genial. Si necesitas "enviar mi posición cada 30 segundos mientras el conductor está en servicio", es mucho ajuste para entender.
¿Qué hace @capgo/background-geolocation?
The Capgo plugin started from the long history of the Cordova background geolocation forks and the lightweight community Capacitor plugin. The goal is accurate fixes, reliable background operation and native geofencing, without a license.
Características actuales en la línea 8.x:
- Actualizaciones de ubicación de frente y fondo a través de un solo
start()llamada con un callback. distanceFilteryminIntervalMspara controlar cuántas veces llegan los puntos.- Envío nativo HTTP de cada ubicación a un
urlque configuras, con customheadersyupdateHeaders()para rotación de token. - Geofencillas circulares nativas con eventos de entrada y salida, y un webhook nativo para transiciones.
checkPermissions()yrequestPermissions()que distinguen iOS When In Use de Always.openSettings()para usuarios que denegaron permiso.setPlannedRoute()para reproducir un sonido cuando el usuario abandona un recorrido planificado.- Opcional Android
networkFallbackque completa las brechas de GPS con ubicaciones de red. - Una implementación web para desarrollo y pruebas en el navegador.
Comparación de características
| Capacidad | Transistorsoft (v9) | @capgo/background-geolocation |
|---|---|---|
| Licencia | Paid key for release builds, per app ID | MIT, gratuito |
| Fuente | Wrapper abierto, binario del motor | Completa y abierta |
| Capacitor 8 | Sí | Sí |
| Seguimiento de fondo | Sí | Sí |
| Estado de detección de movimiento | Sí | No |
| Carga nativa HTTP | Carga de archivo HTTP nativa | Sí, con cola de SQLite y agrupación |
| Geofencing | Sí, polígono como complemento | Sí, como complemento de polígono |
| Geocircunferencias en iOS y Android | Eventos de geofencing enviados a su servidor | Sí, mediante sincronización HTTP |
| Seguimiento después de que se desplaza la aplicación (Android) | Sí | Sí, con url Configura |
| Seguimiento después de reiniciar | Sí (startOnBoot) |
No |
| Programación, odómetro | Sí | No |
La resumen honesto: Transistorsoft es la mejor opción cuando la aplicación debe decidir por sí misma cuándo rastrear, sobrevivir reinicios y almacenar semanas de puntos en línea. El plugin Capgo es la mejor opción cuando el usuario o su aplicación inicia explícitamente el seguimiento, y quiere fijaciones precisas sin licencia y code legibles.
Instalar y configurar
bun add @capgo/background-geolocation
bunx cap sync
iOS
Agregue las cadenas de uso y el modo de fondo de ubicación a ios/App/App/Info.plist:
<key>NSLocationWhenInUseUsageDescription</key>
<string>We use your location to show your route.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>We use your location in the background to record your route while the phone is locked.</string>
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
Recuerde que las subidas a la Tienda de Mac App requieren Xcode 26 desde abril de 2026. Si su imagen de CI es más antigua, la subida será rechazada incluso si el build tiene éxito. Capgo Construcción funciona en imágenes de Xcode actuales si no desea mantener Macs.
Android
El plugin utiliza un servicio de primer plano con una notificación persistente mientras se rastrea en segundo plano. En Android 13 y posteriores, solicita POST_NOTIFICATIONS después de conceder la ubicación para mostrar la notificación.
Set useLegacyBridge en capacitor.config.ts. Sin él, las llamadas de ubicación al WebView pueden detenerse después de unos cinco minutos en segundo plano:
import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.tracker',
appName: 'Tracker',
webDir: 'dist',
android: {
useLegacyBridge: true,
},
};
export default config;
Puedes personalizar el nombre, el icono y el color del canal de notificaciones strings.xml claves documentadas en el plugin docs.
Iniciar la pista
import { BackgroundGeolocation } from '@capgo/background-geolocation';
export async function startShift(token: string) {
await BackgroundGeolocation.start(
{
backgroundTitle: 'Shift in progress',
backgroundMessage: 'Your location is shared with dispatch until you end the shift.',
requestPermissions: true,
stale: false,
distanceFilter: 25,
url: 'https://api.example.com/v1/locations',
headers: { Authorization: `Bearer ${token}` },
minIntervalMs: 30_000,
},
(location, error) => {
if (error) {
if (error.code === 'NOT_AUTHORIZED') {
BackgroundGeolocation.openSettings();
}
console.error(error);
return;
}
if (location) {
// Update the UI while the WebView is alive
console.log(location.latitude, location.longitude, location.accuracy);
}
},
);
}
export async function endShift() {
await BackgroundGeolocation.stop();
}
Dos opciones parecen más importantes de lo que parecen:
backgroundMessagees lo que activa las actualizaciones de fondo, en ambos sistemas. Sin él, las actualizaciones solo están garantizadas en el frente. En Android, también es el texto de la notificación de servicio de frente.urlenvía cada punto desde el nativo code con un"source": "native"campo en el cuerpo. Ese camino no depende del WebView, que es lo que mantiene los datos fluyendo cuando Android ralentiza el WebView o iOS suspende JavaScript. En Android, establecerurltambién hace que el servicio sea pegajoso, por lo que los puntos siguen llegando a su servidor después de que se desliza el aplicativo. Necesita ambas opciones para un seguimiento de fondo confiable.
Cuando el token de acceso expira, gírelo sin reiniciar la sesión:
await BackgroundGeolocation.updateHeaders({
headers: { Authorization: `Bearer ${newToken}` },
});
Geofencing
Los usuarios de Transistorsoft a menudo confían en su geofencing. El plugin Capgo cubre regiones circulares con APIs nativas en ambos sistemas:
import { BackgroundGeolocation } from '@capgo/background-geolocation';
await BackgroundGeolocation.setupGeofencing({
url: 'https://api.example.com/v1/geofence-events',
headers: { Authorization: 'Bearer <token>' },
notifyOnEntry: true,
notifyOnExit: true,
payload: { driverId: 'd-381' },
backgroundLocation: true, // Android only, needs ACCESS_BACKGROUND_LOCATION in your manifest
});
await BackgroundGeolocation.addGeofence({
identifier: 'depot-north',
latitude: 48.8584,
longitude: 2.2945,
radius: 200,
payload: { depotId: 'north' },
});
await BackgroundGeolocation.addListener('geofenceTransition', (event) => {
console.log(event.identifier, event.transition, event.payload);
});
iOS necesita autorización Always. En Android 10 y versiones posteriores, la geolocalización de fondo necesita ACCESS_BACKGROUND_LOCATION, que el plugin no agrega por usted. Solo agregue si su aplicación tiene aprobación de Google Play para ubicación de fondo. ¿Por qué los geofencos no disparan en iOS?.
Migrar desde Transistorsoft
Las API son diferentes, así que planee una pequeña reescritura de su servicio de ubicación en lugar de una búsqueda y reemplazo.
| Concepto de Transistorsoft | Capgo equivalente |
|---|---|
ready(config) + start() |
start(options, callback) |
onLocation listener |
La start() callback |
stop() |
stop() |
distanceFilter |
distanceFilter |
url, headers HTTP sync |
url, headers, updateHeaders() |
addGeofence / onGeofence |
addGeofence / geofenceTransition |
removeGeofence(s) |
removeGeofence / removeAllGeofences |
getGeofences |
getMonitoredGeofences |
| Ayudas de permiso | checkPermissions / requestPermissions |
| Detección de movimiento, programación, odómetro | Implementa la lógica de tu aplicación o en el servidor |
Pasos que funcionan bien en la práctica:
- Acceda a la ubicación detrás de un pequeño servicio en su aplicación ("
startTracking,stopTracking,onPoint) La mayoría de las aplicaciones ya las tienen. - Implementa el servicio con el plugin Capgo detrás de una bandera de características o una compilación separada.
- Acepte el JSON de ubicación del plugin en su backend. El cuerpo coincide con el
Locationtype (latitude,longitude,accuracy,speed,bearing,timey así sucesivamente) mássource. - Elimine el plugin Transistorsoft, sus claves de licencia, variables Gradle adicionales y los modos de fondo que ya no necesitas.
- Prueba en dispositivos reales con la pantalla bloqueada durante al menos 30 minutos, en un Pixel, un Samsung y un iPhone como mínimo.
Los cambios en el plugin nativo requieren una nueva compilación del almacen. Una vez que esa compilación esté disponible, puede seguir enviando correcciones de JavaScript a su interfaz de seguimiento. Capgo live updates sin otro ciclo de revisión.
Donde el plugin Capgo no es suficiente
Asegúrate de entender estos puntos antes de cambiar:
- No hay cola persistente. Los POST nativos son de mejor esfuerzo. Si el dispositivo está desconectado, los puntos fallidos se registran y se descartan. Si no puedes perder un punto, también almacena los puntos localmente en la llamada de retorno (por ejemplo, con SQLite) y sincrónizalos desde la aplicación, o mantén a Transistorsoft.
- No reinicia después de reiniciar. La pista se reanuda la próxima vez que el usuario abre la aplicación.
- No hay detección automática de movimiento. La aplicación decide cuándo empezar y parar.
- Terminación de iOS. If the user force quits on iOS, standard location updates stop. That is an OS rule, not a plugin limitation.
Para obtener más contexto sobre qué Capacitor puede ejecutar mientras la aplicación está en segundo plano, consulte ¿Cómo funcionan las tareas de fondo en Capacitor.
Solución de problemas
Actualizaciones se detienen después de unos minutos en Android. Verificar useLegacyBridge: trueConfirme que la notificación del servicio de foreground está visible y desactive la optimización de la batería para la aplicación durante el testing en OEMs agresivos. url No hay actualizaciones en segundo plano en iOS.
No actualizaciones de fondo en iOS. contiene UIBackgroundModes que has pasado locationy que has llamado backgroundMessagey que lo llamaste start() mientras la aplicación estaba en primer plano. Nuestra guía sobre ¿Por qué iOS detiene actualizaciones de ubicación de fondo? Explora cada causa.
NOT_AUTHORIZED error. El usuario denegó la ubicación. Llame openSettings() después de explicar por qué la aplicación lo necesita.
Jumpy señala en interiores. Aumentar distanceFilter, ignora puntos con valores grandes accuracy y en Android considere networkFallback: true solamente si se aceptan fijaciones coarsas.
Simular ubicaciones en una aplicación de entrega. Cada Location tiene una simulated bandera. Para controles más estrictos, agrega @capgo/capacitor-mock-location-detector.
Elegir
Si necesitas inicio automático basado en movimiento, persistencia de reinicios, una cola offline y polígonos de geofencado, y el costo de la licencia se ajusta, elige Transistorsoft. @capgo/background-geolocation si tu seguimiento es basado en sesión, quieres una code legible y sin licencia por aplicación, y estás dispuesto a manejar la cola en tu aplicación. Si estás reemplazando varios SDK nativos pagados al mismo tiempo, el reemplazos de plugins de Ionic enterprise página lista los otros Capgo reemplazos.