Zum Hauptinhalt springen

Alternative zu Transistorsoft Background Geolocation

Eine kostenlose Open-Source-Alternative zu Transistorsoft Background Geolocation für Capacitor 8: Features, Lizenzierung, Setup, Geofencing und ein Migrationsguide.

Illustration mit Kartenmarkern und Standortverfolgung für einen Vergleich von Capacitor-Background-Geolocation-Plugins

Wenn du eine Alternative zu Transistorsoft Background Geolocation für Capacitor suchst, ist die nächstliegende kostenlose Option @capgo/background-geolocation. Es ist MIT-lizenziert, verfügbar für Capacitor 8, verfolgt den Standort im Hintergrund auf iOS und Android, unterstützt natives Geofencing und kann Standorte per POST an deinen Server senden – direkt aus nativem code. Es kopiert nicht jede Funktion von Transistorsoft, daher erklärt dieser Guide, was du gewinnst, was du aufgibst und wie du migrierst.

Warum Teams nach einer Transistorsoft-Alternative suchen

Das Transistorsoft-SDK ist ein ausgereiftes Produkt, das seit Jahren Flotten-, Liefer- und Fitness-Apps antreibt. Nur wenige verlassen es, weil es defekt ist. Sie wechseln aus diesen Gründen:

Release-Builds benötigen jetzt einen Key auf beiden Plattformen

Laut Transistorsoft-Changelog ist Version 9.0.0 auf JWT-basierte Lizenzschlüssel umgestiegen und verlangt nun auch auf iOS einen Key. Vor v9 waren nur Android-Release-Builds gesperrt. Schlüssel aus v8 und älteren Versionen funktionieren nicht mit v9, daher bedeutet ein Plugin-Upgrade auch, neue Schlüssel über deren Dashboard zu generieren.

Ihr Shop verkauft dauerhafte Lizenzen pro App-Identifier, von einem bis zu 100 Schlüsseln, inklusive eines Jahres Updates. Add-ons wie Polygon-Geofencing sind nun in denselben Schlüssel codiert. Für eine App ist das ein fairer Preis. Für eine Agentur mit 20 White-Label-Apps oder ein Unternehmen, das separate Staging- und Production-Bundle-IDs ausliefert, wird die Lizenz zu einem Posten, den jemand jedes Jahr verwalten muss.

Die Core-Engine ist ein Binary

Der Capacitor-Wrapper ist offen, aber die Location-Engine wird als vorgebautes iOS-Framework und eine Android-Bibliothek von Maven ausgeliefert. Wenn auf einem bestimmten Android-OEM etwas Seltsames passiert, kannst du den code nicht lesen oder patchen, der entscheidet, wann ein Fix aufgezeichnet wird. Manche Teams akzeptieren das. Teams mit strengen Audit-Anforderungen oder die einfach nur den code in Xcode durchgehen wollen, tun das oft nicht.

Konfigurationsoberfläche

Das Plugin bietet ein sehr großes Konfigurationsobjekt: Motion Detection, Scheduling, Odometer, SQLite-Persistenz, HTTP-Sync-Templates, Headless Tasks und mehr. Wenn du alles davon brauchst, ist das großartig. Wenn du nur „meine Position alle 30 Sekunden senden, während der Fahrer im Dienst ist“ brauchst, sind es viele Einstellungen, die man verstehen muss.

Was @capgo/background-geolocation leistet

Das Capgo-Plugin entstand aus der langen Geschichte der Cordova-Background-Geolocation-Forks und dem leichtgewichtigen Community-Capacitor-Plugin. Ziel sind präzise Positionsbestimmungen, zuverlässiger Hintergrundbetrieb und natives Geofencing – ganz ohne Lizenz.

Aktuelle Funktionen in der 8.x-Linie:

  • Standort-Updates im Vordergrund und Hintergrund über einen einzigen start() Aufruf mit Callback.
  • distanceFilter und minIntervalMs um zu steuern, wie häufig Punkte eintreffen.
  • Natives HTTP-POST für jeden Standort an eine url die du konfigurierst, mit benutzerdefinierten headers und updateHeaders() für die Token-Rotation.
  • Native kreisförmige Geofences mit Enter- und Exit-Events sowie ein natives Webhook für Übergänge.
  • checkPermissions() und requestPermissions() die iOS „When In Use“ von „Always“ unterscheiden.
  • openSettings() für Nutzer, die die Berechtigung verweigert haben.
  • setPlannedRoute() um einen Ton abzuspielen, wenn der Nutzer eine geplante Route verlässt.
  • Optionales Android networkFallback das GPS-Lücken mit Netzwerkpositionen füllt.
  • Eine Web-Implementierung für Entwicklung und Browser-Tests.

Feature-Vergleich

Funktion Transistorsoft (v9) @capgo/background-geolocation
Lizenz Kostenpflichtiger Key für Release-Builds, pro App-ID MIT, kostenlos
Quelle Wrapper open, Engine als Binary Vollständig Open Source
Capacitor 8 Ja Ja
Background-Tracking Ja Ja
State Machine für Bewegungserkennung Ja Nein
Nativer HTTP-Upload Ja, mit SQLite-Queue und Batching Ja, Best-Effort-POST, keine On-Disk-Queue
Geofencing Ja, Polygon als Add-on Zirkuläre Geofences auf iOS und Android
Geofence-Events an deinen Server Ja, via HTTP-Sync Ja, nativer Webhook
Tracking nach dem Wegwischen der App (Android) Ja Ja, mit url Setzen
Tracking nach Neustart Ja (startOnBoot) Nein
Scheduling, Odometer Ja Nein

Die ehrliche Zusammenfassung: Transistorsoft ist die bessere Wahl, wenn die App selbst entscheiden muss, wann sie trackt, Neustarts übersteht und wochenlang Punkte offline puffert. Das Capgo-Plugin ist die bessere Wahl, wenn der Nutzer oder deine App das Tracking explizit startet und du präzise Fixes ohne Lizenz und lesbare code willst.

Installieren und konfigurieren

bun add @capgo/background-geolocation
bunx cap sync

iOS

Füge die Nutzungszwecke und den Hintergrundmodus für Standortdaten hinzu zu 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>

Denke daran, dass App-Store-Uploads seit April 2026 Xcode 26 erfordern. Wenn dein CI-Image älter ist, wird der Upload abgelehnt, selbst wenn der Build erfolgreich ist. Capgo Build läuft auf aktuellen Xcode-Images, falls du keine Macs pflegen möchtest.

Android

Das Plugin verwendet einen Vordergrund-Dienst mit einer persistenten Benachrichtigung, während im Hintergrund getrackt wird. Auf Android 13 und neuer wird POST_NOTIFICATIONS nach der Standortfreigabe angefordert, damit die Benachrichtigung angezeigt werden kann.

Setzen Sie useLegacyBridge in einem capacitor.config.ts. Ohne sie können Standort-Callbacks an die WebView nach etwa fünf Minuten im Hintergrund aufhören:

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

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

export default config;

Du kannst den Namen, das Icon und die Farbe des Benachrichtigungskanals über strings.xml Schlüssel anpassen, die in der Plugin-Docs.

Tracking starten

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

Zwei Optionen sind wichtiger, als sie aussehen:

  • backgroundMessage schaltet Hintergrund-Updates auf beiden Plattformen ein. Ohne sie sind Updates nur im Vordergrund garantiert. Auf Android ist es auch der Text der Foreground-Service-Benachrichtigung.
  • url sendet jeden Punkt von nativem code mit einem "source": "native" Feld im Body. Dieser Pfad hängt nicht von der WebView ab, was den Datenfluss sicherstellt, wenn Android die WebView drosselt oder iOS JavaScript suspendiert. Auf Android macht url den Service zusätzlich sticky, sodass Punkte auch nach dem Wegwischen der App beim Server ankommen. Für zuverlässiges Hintergrund-Tracking werden beide Optionen benötigt.

Wenn der Access Token abläuft, rotiere ihn, ohne die Sitzung neu zu starten:

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

Geofencing

Transistorsoft-Nutzer verlassen sich oft auf dessen Geofencing. Das Capgo-Plugin deckt kreisförmige Regionen mit nativen APIs auf beiden Plattformen ab:

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 benötigt die Berechtigung „Immer“. Auf Android 10 und neuer benötigt Hintergrund-Geofencing ACCESS_BACKGROUND_LOCATION, was das Plugin nicht automatisch hinzufügt. Füge es nur hinzu, wenn deine App die Google-Play-Genehmigung für Hintergrund-Ortung hat. Wenn deine Geofences auf iOS seltsam funktionieren, lies unseren Leitfaden zu Warum Geofences auf iOS nicht ausgelöst werden.

Migration von Transistorsoft

Die APIs unterscheiden sich, daher solltest du einen kleinen Rewrite deines Location-Services planen, statt nur Suchen und Ersetzen zu verwenden.

Transistorsoft-Konzept Capgo-Äquivalent
ready(config) + start() start(options, callback)
onLocation Listener Der start() Callback
stop() stop()
distanceFilter distanceFilter
url, headers HTTP-Sync url, headers, updateHeaders()
addGeofence / onGeofence addGeofence / geofenceTransition
removeGeofence(s) removeGeofence / removeAllGeofences
getGeofences getMonitoredGeofences
Permission-Helfer checkPermissions / requestPermissions
Bewegungserkennung, Zeitplan, Odometer In deiner App-Logik oder auf dem Server implementieren

Schritte, die in der Praxis gut funktionieren:

  1. Kapseln Sie den Standortzugriff hinter einem kleinen Service in Ihrer App ein (startTracking, stopTracking, onPoint). Die meisten Apps haben bereits einen.
  2. Implementieren Sie den Service mit dem Capgo-Plugin hinter einem Feature Flag oder einem separaten Build.
  3. Stellen Sie sicher, dass Ihr Backend das Standort-JSON des Plugins akzeptiert. Der Body entspricht dem Location -Typ (latitude, longitude, accuracy, speed, bearing, time und so weiter) plus source.
  4. Entfernen Sie das Transistorsoft-Plugin, seine Lizenzschlüssel, zusätzliche Gradle-Variablen und die Hintergrundmodi, die Sie nicht mehr benötigen.
  5. Testen Sie auf echten Geräten mit gesperrtem Bildschirm für mindestens 30 Minuten, auf mindestens einem Pixel, einem Samsung und einem iPhone.

Änderungen an nativen Plugins erfordern einen neuen Store-Build. Sobald dieser Build live ist, können Sie JavaScript-Fixes für Ihre Tracking-UI weiterhin mit Capgo Live Updates ohne einen weiteren Review-Zyklus.

Wo das Capgo Plugin nicht ausreicht

Das solltest du vor dem Wechsel wissen:

  • Keine persistente Queue. Native POSTs sind Best Effort. Wenn das Gerät offline ist, werden fehlgeschlagene Punkte geloggt und verworfen. Wenn du keinen Punkt verlieren darfst, speichere die Punkte zusätzlich lokal im Callback (z. B. mit SQLite) und synchronisiere sie aus der App, oder bleib bei Transistorsoft.
  • Kein Neustart nach Reboot. Das Tracking wird beim nächsten Öffnen der App fortgesetzt.
  • Keine automatische Bewegungserkennung. Die App entscheidet selbst über Start und Stopp.
  • Beendigung unter iOS. Wenn der User die App unter iOS zwangsweise beendet, stoppen die normalen Location-Updates. Das ist eine OS-Regel, keine Einschränkung des Plugins.

Mehr dazu, was Capacitor im Hintergrund ausführen kann, findest du hier: wie Background Tasks in Capacitor funktionieren,.

Fehlerbehebung

Auf Android stoppen Updates nach wenigen Minuten. Prüfen useLegacyBridge: true, stelle sicher, dass die Foreground-Service-Benachrichtigung sichtbar ist, und deaktiviere die Akkuoptimierung für die App beim Testen auf aggressiven OEMs. Nutze die url Option, damit die Zustellung nicht vom WebView abhängt.

Keine Updates im Hintergrund auf iOS. Bestätigen UIBackgroundModes enthält location, den du übergeben hast backgroundMessage, und dass du aufgerufen hast start() , während die App im Vordergrund war. Unser Guide zu Warum iOS Hintergrund-Positionsaktualisierungen stoppt erklärt jede Ursache im Detail.

NOT_AUTHORIZED Fehler aus. Der Nutzer hat den Standort verweigert. Rufe openSettings() auf, nachdem du erklärt hast, warum die App ihn benötigt.

Unruhige Punkte in Innenräumen. Erhöhen distanceFilter, ignoriere Punkte mit großen accuracy -Werten und erwäge auf Android networkFallback: true nur, wenn grobe Genauigkeit ausreicht.

Simulierte Standorte in einer Liefer-App. Jedes Location hat ein simulated flag. Für strengere Checks, füge hinzu @capgo/capacitor-mock-location-detector.

Auswahl

Wähle Transistorsoft, wenn du Motion-basiertes Auto-Start, Reboot-Persistenz, Offline-Queue und Polygon-Geofences brauchst und die Lizenzkosten passen. Wähle @capgo/background-geolocation wenn dein Tracking session-basiert ist, du lesbaren code und keine pro-App-Lizenz möchtest und es dir recht ist, das Queueing in deiner App zu verwalten. Wenn du mehrere kostenpflichtige native SDKs auf einmal ersetzt, ist die Ionic Enterprise Plugin Alternativen Seite listet die anderen Capgo-Ersatzlösungen auf.

Live-Updates für Capacitor-Apps

Wenn ein Bug im Web-Layer live ist, liefere den Fix über Capgo aus, statt Tage auf die App-Store-Freigabe zu warten. Nutzer bekommen das Update im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Neues aus unserem Blog

Capgo gibt dir die besten Insights, um eine wirklich professionelle Mobile App zu erstellen.