Allez directement au contenu principal

Alternative de localisation de fond de Transistorsoft

Une alternative gratuite et open source de géolocalisation de fond Transistorsoft pour Capacitor 8 : fonctionnalités, licence, configuration, délimitation géographique et guide de migration.

Crédits de l'article

Martin Donadieu

Écrivain

Valeria

Relecteur

Jordan

Éditeur

Alternative de géolocalisation de fond de Transistorsoft

Si vous cherchez une alternative de géolocalisation de fond de Transistorsoft pour Capacitor, l'option la plus proche et gratuite est @capgo/background-geolocation. Elle est sous licence MIT, fonctionne sur Capacitor 8, suit la localisation en arrière-plan sur iOS et Android, prend en charge la géofencing native et peut envoyer les localisations à votre serveur à partir de code. Elle ne copie pas toutes les fonctionnalités de Transistorsoft, donc ce guide couvre ce que vous gagnez, ce que vous donnez et comment migrer.

Pourquoi les équipes cherchent une alternative de Transistorsoft

Le produit Transistorsoft SDK est un produit mature qui a alimenté des applications de flotte, de livraison et de fitness pendant des années. Les gens quittent rarement car il est cassé. Ils quittent pour ces raisons :

Release builds now need a key on both platforms

D'après le journal des modifications de Transistorsoft, la version 9.0.0 a migré vers une clé de licence basée sur JWT et a commencé à exiger une clé sur iOS également. Avant la version 9, seuls les builds de production Android étaient verrouillés. Les clés de version 8 et antérieures ne fonctionnent pas avec la version 9, donc la mise à niveau du plugin implique également la génération de nouvelles clés à partir de leur tableau de bord.

Ils vendent des licences perpétuelles par identifiant d'application, de une clé à 100 clés, avec une année d'actualisations incluses. Les fonctionnalités supplémentaires telles que la géofencing en forme de polygone sont maintenant encodées dans la même clé. Pour une application, ce prix est raisonnable. Pour une agence avec 20 applications blanches étiquetées, ou une entreprise qui expédie des IDs de bundle de production et de staging séparés, la licence devient un article de facture que quelqu'un doit gérer chaque année.

Le moteur de base est un binaire

Le wrapper Capacitor est ouvert, mais l'engin de localisation est livré sous forme de framework iOS préconstruit et d'une bibliothèque Android depuis Maven. Lorsque quelque chose d'anormal se produit sur un OEM Android spécifique, vous ne pouvez pas lire ou modifier le code qui décide quand enregistrer une correction. Certains équipes acceptent cela. Les équipes avec des exigences d'audit strictes, ou qui veulent simplement passer en revue le code dans Xcode, ne le font souvent pas.

Surface de configuration

Le plugin expose un très grand objet de configuration : détection de mouvement, planification, odomètre, persistance SQLite, modèles de synchronisation HTTP, tâches sans écran et plus encore. Si vous avez besoin de tout cela, c'est bien. Si vous avez besoin « d'envoyer ma position tous les 30 secondes pendant que le conducteur est en service », il s'agit d'un grand nombre de paramètres à comprendre.

Ce que @capgo/background-geolocation fait

Le plugin Capgo a commencé à partir de la longue histoire des forks de Cordova de la géolocalisation en arrière-plan et du plugin communautaire léger Capacitor . L'objectif est des fixes précis, une opération en arrière-plan fiable et une géofence native, sans licence.

Fonctionnalités actuelles dans la ligne 8.x :

  • Mises à jour de localisation en avant-plan et en arrière-plan à travers un seul start() appel avec un callback.
  • distanceFilter et minIntervalMs contrôler la fréquence d'arrivée des points.
  • Envoi natif HTTP POST de chaque localisation à un url que vous configurez, avec des headers et updateHeaders() pour la rotation de jeton.
  • Native cercles de géolocalisation avec événements d'entrée et de sortie, et un webhook natif pour les transitions.
  • checkPermissions() et requestPermissions() qui distinguent iOS Lorsque en Utilisation de Toujours.
  • openSettings() pour les utilisateurs qui ont refusé la permission.
  • setPlannedRoute() pour jouer un son lorsque l'utilisateur quitte un itinéraire planifié.
  • Optionnel Android networkFallback qui remplit les lacunes GPS avec des emplacements réseau.
  • Une implémentation web pour le développement et le test dans le navigateur.

Comparaison des fonctionnalités

Capacité Transistorsoft (v9) @capgo/localisation de géolocalisation en arrière-plan
License Paid key for release builds, per app ID MIT, gratuit
Source Wrapper ouvert, code binaire de l'engin Tout à fait open source
Capacitor 8 Oui Oui
Suivi en arrière-plan Oui Oui
État de détection de mouvement Oui Non
Téléchargement HTTP natif Oui, avec file d'attente SQLite et regroupement Oui, tentative POST, sans file d'attente disque.
Geofencing Oui, polygon en tant que complément Geofences circulaires sur iOS et Android
Événements de geofence envoyés à votre serveur Oui, via synchronisation HTTP Oui, webhook natif
Suivi après avoir supprimé l'application (Android) Oui Oui, avec url Configurer
Suivi après redémarrage Oui (startOnBoot) Non
Scheduling, odomètre Oui Non

Résumé honnête : Transistorsoft est le meilleur choix lorsque l'application doit décider elle-même quand suivre, survivre aux redémarrages et stocker des semaines de points hors ligne. Le plugin Capgo est le meilleur choix lorsque l'utilisateur ou votre application démarre explicitement le suivi, et que vous souhaitez des fixes précises sans licence et des code lisible.

Installer et configurer

bun add @capgo/background-geolocation
bunx cap sync

iOS

Ajoutez les chaînes d'utilisation et le mode de fond d'emplacement à 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>

Rappelez-vous que les téléchargements sur l'App Store nécessitent Xcode 26 depuis avril 2026. Si votre image CI est plus ancienne, le téléchargement sera rejeté même si la construction réussit. Capgo Développement tourne sur les images Xcode actuelles si vous ne souhaitez pas maintenir des Macs.

Android

Le plugin utilise un service de fond avec une notification persistante pendant le suivi en arrière-plan. Sur Android 13 et versions ultérieures, il demande POST_NOTIFICATIONS après que l'emplacement est accordé afin que la notification puisse être affichée.

Configurez useLegacyBridge en capacitor.config.ts. Sans cela, les appels d'emplacement vers le WebView peuvent s'arrêter après environ cinq minutes en arrière-plan :

import type { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.example.tracker',
  appName: 'Tracker',
  webDir: 'dist',
  android: {
    useLegacyBridge: true,
  },
};

export default config;

Vous pouvez personnaliser le nom, l'icône et la couleur de la chaîne de notification. strings.xml clés documentées dans les docs du plugin.

Démarrer la traçabilité

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();
}

Deux options comptent plus qu'elles n'en ont l'air :

  • backgroundMessage ce qui active les mises à jour en arrière-plan, sur les deux plateformes. Sans cela, les mises à jour ne sont garanties qu'en mode avant-plan. Sur Android, c'est également le texte de la notification de service avant-plan.
  • url envoie chaque point à partir de native code avec un "source": "native" champ dans le corps. Cette route ne dépend pas de la vue WebView, ce qui permet les données de continuer à circuler lorsque Android ralentit la vue WebView ou iOS suspend le JavaScript. Sur Android, définir url fait également du service collant, afin que les points continuent à atteindre votre serveur après avoir été supprimé. Vous avez besoin de toutes les deux options pour une traçabilité en arrière-plan fiable.

Lorsque le jeton d'accès expire, le tournez sans redémarrer la session :

await BackgroundGeolocation.updateHeaders({
  headers: { Authorization: `Bearer ${newToken}` },
});

Geofencing

Les utilisateurs de Transistorsoft dépendent souvent de son geofencing. Le plugin Capgo couvre les régions circulaires avec des API natives sur les deux plateformes :

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 geofencing nécessite l'autorisation Always. Sur Android 10 et plus récent, le geofencing en arrière-plan nécessite ACCESS_BACKGROUND_LOCATION, which the plugin does not add for you. Only add it if your app has Google Play approval for background location. If your geofences behave strangely on iOS, read our guide on why geofences do not trigger on iOS.

Migrer vers Transistorsoft

Les API sont différentes, il faut donc planifier une petite refonte de votre service de localisation plutôt qu'une recherche et remplacement.

Le concept Transistorsoft Capgo équivalent
ready(config) + start() start(options, callback)
onLocation écouteur Le start() callback
stop() stop()
distanceFilter distanceFilter
url, headers Sync HTTP url, headers, updateHeaders()
addGeofence / onGeofence addGeofence / geofenceTransition
removeGeofence(s) removeGeofence / removeAllGeofences
getGeofences getMonitoredGeofences
Aide aux autorisations checkPermissions / requestPermissions
Détection de mouvement, calendrier, odomètre Implémentez la logique dans votre application ou sur le serveur

Étapes qui fonctionnent bien en pratique :

  1. Accédez à la localisation derrière un petit service dans votre application ("startTracking, stopTracking, onPoint) La plupart des applications en ont déjà un.
  2. Implémentez le service avec le plugin Capgo derrière un drapeau de fonctionnalité ou une build séparée.
  3. Faites accepter votre backend le JSON de localisation du plugin. Le corps correspond au Location type (latitude, longitude, accuracy, speed, bearing, time et ainsi de suite) plus source.
  4. Supprimez le plugin Transistorsoft, ses clés de licence, les variables Gradle supplémentaires et les modes d'arrière-plan dont vous n'avez plus besoin.
  5. Testez sur des appareils réels avec l'écran verrouillé pendant au moins 30 minutes, sur un Pixel, un Samsung et un iPhone au minimum.

Étape suivante : déployez votre nouvelle build et testez-la sur des appareils réels avec l'écran verrouillé pendant au moins 30 minutes, sur un Pixel, un Samsung et un iPhone au minimum. Capgo live updates sans un autre cycle de revue.

Lorsque le plugin Capgo n'est pas suffisant

Sachez ces points avant de passer à autre chose :

  • Aucune file d'attente persistante. Les POST natifs sont de bonne volonté. Si le dispositif est hors ligne, les points échoués sont enregistrés et abandonnés. Si vous ne pouvez pas perdre un point, stockez également les points localement dans l'appel (par exemple avec SQLite) et synchronisez-les depuis l'application, ou maintenez Transistorsoft.
  • Aucun redémarrage après redémarrage. La localisation continue la prochaine fois que l'utilisateur ouvre l'application.
  • Aucune détection automatique de mouvement. L'application décide quand commencer et arrêter.
  • Termination d'iOS. If the user force quits on iOS, standard location updates stop. That is an OS rule, not a plugin limitation.

Pour plus de contexte sur ce que Capacitor peut exécuter pendant que l'application est en arrière-plan, voir Comment fonctionnent les tâches de fond dans Capacitor.

Troubleshooting

Mises à jour s'arrêtent après quelques minutes sur Android. Vérifiez useLegacyBridge: trueConfirmez que la notification du service de foreground est visible, et désactivez l'optimisation de la batterie pour l'application pendant les tests sur les fabricants OEM agressifs. url Aucune mise à jour en arrière-plan sur iOS.

Aucune mise à jour en arrière-plan sur iOS. contient UIBackgroundModes contains locationet que vous avez appelé backgroundMessageet que vous avez appelé start() Lorsque l'application était en avant-plan. Notre guide sur why iOS stops background location updates Explique chaque cause.

NOT_AUTHORIZED erreur. L'utilisateur a refusé la localisation. Appelez openSettings() après avoir expliqué pourquoi l'application en a besoin.

Jumpy se déplace à l'intérieur. Augmenter distanceFilter, ignorez les points avec de grandes accuracy valeurs, et sur Android considérez networkFallback: true seulement si des fixes grossiers sont acceptables.

Mock locations in a delivery app. Chaque Location a simulated drapeau. Pour des contrôles plus stricts, ajoutez @capgo/capacitor-mock-location-detector.

Choosing

Pick Transistorsoft if you need motion based auto start, reboot persistence, an offline queue and polygon geofences, and the license cost fits. Pick @capgo/background-geolocation if your tracking is session based, you want readable code and no per app license, and you are fine owning queueing in your app. If you are replacing several paid native SDKs at once, the page liste les autres remplacements __CAPGO_KEEP_0__. page lists the other Capgo replacements.

Mises à jour instantanées pour les applications Capacitor

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

Les dernières de notre Blog

Capgo vous offre les meilleures informations dont vous avez besoin pour créer une application mobile vraiment professionnelle.