Langsung ke konten utama

Alternatif Transistorsoft Background Geolocation

Alternatif background geolocation Transistorsoft yang gratis dan open source untuk Capacitor 8: fitur, lisensi, setup, geofencing, dan panduan migrasi.

Ilustrasi pin peta dan pelacakan lokasi untuk perbandingan plugin background geolocation Capacitor

Jika Anda mencari alternatif background geolocation Transistorsoft untuk Capacitor, opsi gratis terdekat adalah @capgo/background-geolocation. Ini berlisensi MIT, tersedia untuk Capacitor 8, melacak lokasi di background pada iOS dan Android, mendukung native geofencing, dan dapat melakukan POST lokasi ke server Anda dari code native. Ini tidak meniru semua fitur Transistorsoft, jadi panduan ini membahas apa yang Anda dapatkan, apa yang hilang, dan cara migrasinya.

Mengapa tim mencari alternatif Transistorsoft

Transistorsoft SDK adalah produk matang yang telah mendukung aplikasi fleet, pengiriman, dan kebugaran selama bertahun-tahun. Orang jarang meninggalkannya karena rusak. Mereka pergi karena alasan-alasan ini:

Build rilis sekarang membutuhkan key di kedua platform

Menurut changelog Transistorsoft, versi 9.0.0 beralih ke license key berbasis JWT dan mulai mewajibkan key di iOS juga. Sebelum v9, hanya build rilis Android yang terkunci. Key dari v8 dan sebelumnya tidak berfungsi dengan v9, sehingga upgrade plugin juga berarti menghasilkan key baru dari dashboard mereka.

Toko mereka menjual lisensi permanen per app identifier, mulai dari satu hingga 100 key, dengan pembaruan selama satu tahun. Add-on seperti polygon geofencing kini terintegrasi ke dalam key yang sama. Untuk satu aplikasi, harganya wajar. Namun, untuk agensi dengan 20 aplikasi white label, atau perusahaan yang merilis bundle ID staging dan produksi terpisah, lisensi ini menjadi pos biaya yang harus dikelola setiap tahun.

Mesin intinya adalah biner

Wrapper Capacitor bersifat open, tetapi mesin lokasi dikirim sebagai framework iOS prebuilt dan library Android dari Maven. Ketika terjadi masalah aneh pada OEM Android tertentu, Anda tidak dapat membaca atau mem-patch code yang menentukan kapan merekam fix. Beberapa tim menerimanya. Tim dengan persyaratan audit ketat, atau yang ingin menelusuri code di Xcode, sering kali tidak.

Permukaan konfigurasi

Plugin ini mengekspos objek konfigurasi yang sangat besar: deteksi gerakan, penjadwalan, odometer, persistensi SQLite, template sinkronisasi HTTP, tugas headless, dan lainnya. Jika Anda membutuhkannya semua, itu bagus. Jika Anda hanya butuh “kirim posisi saya setiap 30 detik saat pengemudi sedang shift”, ada banyak pengaturan yang harus dipahami.

Apa yang dilakukan @capgo/background-geolocation

Plugin Capgo berawal dari sejarah panjang fork background geolocation Cordova dan plugin komunitas Capacitor yang ringan. Tujuannya adalah fix yang akurat, operasi background yang andal, dan geofencing native, tanpa lisensi.

Fitur saat ini di lini 8.x:

  • Pembaruan lokasi foreground dan background melalui satu start() panggilan dengan callback.
  • distanceFilter dan minIntervalMs untuk mengatur seberapa sering titik data diterima.
  • HTTP POST native untuk setiap lokasi ke url yang Anda konfigurasikan, dengan headers dan updateHeaders() untuk rotasi token.
  • Geofence melingkar native dengan event enter dan exit, serta webhook native untuk transisi.
  • checkPermissions() dan requestPermissions() yang membedakan iOS When In Use dengan Always.
  • openSettings() untuk pengguna yang menolak izin.
  • setPlannedRoute() untuk memutar suara saat pengguna keluar dari rute yang direncanakan.
  • Android opsional networkFallback yang mengisi celah GPS dengan lokasi jaringan.
  • Implementasi web untuk pengembangan dan pengujian browser.

Perbandingan fitur

Kemampuan Transistorsoft (v9) @capgo/background-geolocation
Lisensi Kunci berbayar untuk build release, per app ID MIT, gratis
Sumber Wrapper terbuka, biner engine Sepenuhnya open source
Capacitor 8 Ya Ya
Pelacakan latar belakang Ya Ya
State machine deteksi gerakan Ya Tidak
Upload HTTP native Ya, dengan antrean SQLite dan batching Ya, POST best effort, tanpa antrean di disk
Geofencing Ya, polygon sebagai add-on Geofence lingkaran di iOS dan Android
Event geofence dikirim ke server Anda Ya, via sinkronisasi HTTP Ya, webhook native
Tracking setelah aplikasi di-swipe (Android) Ya Ya, dengan url atur
Pelacakan setelah reboot Ya (startOnBoot) Tidak
Jadwal, odometer Ya Tidak

Ringkasan jujur: Transistorsoft lebih cocok jika aplikasi harus memutuskan sendiri kapan melacak, bertahan setelah reboot, dan men-buffer poin selama berminggu-minggu secara offline. Plugin Capgo lebih cocok jika pengguna atau aplikasi Anda secara eksplisit memulai pelacakan, dan Anda ingin fix akurat tanpa lisensi serta code yang mudah dibaca.

Instal dan konfigurasi

bun add @capgo/background-geolocation
bunx cap sync

iOS

Tambahkan string penggunaan dan mode latar belakang lokasi ke 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>

Ingat bahwa upload ke App Store memerlukan Xcode 26 sejak April 2026. Jika image CI Anda lebih lama, upload akan ditolak meskipun build berhasil. Build Capgo berjalan pada image Xcode saat ini jika Anda tidak ingin memelihara Mac.

Android

Plugin ini menggunakan foreground service dengan notifikasi persisten saat melacak di background. Di Android 13 dan versi lebih baru, plugin meminta POST_NOTIFICATIONS setelah izin lokasi diberikan agar notifikasi dapat ditampilkan.

Atur useLegacyBridge di capacitor.config.ts. Tanpanya, callback lokasi ke WebView dapat berhenti setelah sekitar lima menit di background:

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

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

export default config;

Anda dapat menyesuaikan nama channel, ikon, dan warna notifikasi melalui strings.xml keys yang didokumentasikan di dokumentasi plugin.

Mulai melacak

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

Dua opsi ini lebih penting daripada kelihatannya:

  • backgroundMessage adalah yang mengaktifkan pembaruan latar belakang di kedua platform. Tanpanya, pembaruan hanya dijamin saat aplikasi di foreground. Di Android, ini juga menjadi teks notifikasi layanan foreground.
  • url mengirimkan setiap titik dari native code dengan "source": "native" field di body. Jalur ini tidak bergantung pada WebView, yang memastikan data tetap mengalir saat Android membatasi WebView atau iOS menangguhkan JavaScript. Di Android, mengatur url juga membuat layanan menjadi sticky, sehingga titik tetap sampai ke server Anda setelah aplikasi di-swipe. Anda membutuhkan kedua opsi ini untuk pelacakan latar belakang yang andal.

Saat access token kedaluwarsa, rotasikan tanpa memulai ulang sesi:

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

Geofencing

Pengguna Transistorsoft sering mengandalkan geofencing-nya. Plugin Capgo mencakup area lingkaran dengan API native di kedua platform:

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

Geofencing iOS memerlukan otorisasi Always. Di Android 10 dan lebih baru, geofencing latar belakang membutuhkan ACCESS_BACKGROUND_LOCATION, yang tidak ditambahkan plugin untuk Anda. Tambahkan hanya jika aplikasi Anda sudah mendapat persetujuan Google Play untuk lokasi latar belakang. Jika geofence Anda bermasalah di iOS, baca panduan kami tentang mengapa geofence tidak terpicu di iOS.

Migrasi dari Transistorsoft

API-nya berbeda, jadi siapkan penulisan ulang kecil untuk layanan lokasi Anda, bukan sekadar search and replace.

Konsep Transistorsoft Padanan Capgo
ready(config) + start() start(options, callback)
onLocation listener Panduan start() callback
stop() stop()
distanceFilter distanceFilter
url, headers sinkronisasi HTTP url, headers, updateHeaders()
addGeofence / onGeofence addGeofence / geofenceTransition
removeGeofence(s) removeGeofence / removeAllGeofences
getGeofences getMonitoredGeofences
Helper permission checkPermissions / requestPermissions
Deteksi gerakan, jadwal, odometer Implementasikan di logika aplikasi atau di server

Langkah yang terbukti berhasil dalam praktik:

  1. Bungkus akses lokasi di balik service kecil di aplikasi Anda (startTracking, stopTracking, onPoint). Sebagian besar aplikasi sudah memilikinya.
  2. Implementasikan layanan dengan plugin Capgo di balik feature flag atau build terpisah.
  3. Pastikan backend Anda menerima JSON lokasi dari plugin. Body-nya sesuai dengan Location type (latitude, longitude, accuracy, speed, bearing, time dan seterusnya) ditambah source.
  4. Hapus plugin Transistorsoft, kunci lisensinya, variabel Gradle tambahan, dan background mode yang tidak lagi Anda butuhkan.
  5. Uji di perangkat asli dengan layar terkunci selama minimal 30 menit, setidaknya di satu Pixel, satu Samsung, dan satu iPhone.

Perubahan plugin native butuh build store baru. Setelah build itu live, Anda tetap bisa mengirim perbaikan JavaScript ke UI pelacakan Anda dengan Live updates Capgo tanpa siklus review tambahan.

Saat plugin Capgo tidak cukup

Pahami hal ini sebelum Anda pindah:

  • Tidak ada antrean persisten. Native POST bersifat best effort. Jika perangkat offline, titik yang gagal akan dicatat lalu dibuang. Jika Anda tidak boleh kehilangan satu titik pun, simpan juga titik-titik tersebut secara lokal di callback (misalnya dengan SQLite) dan sinkronkan dari aplikasi, atau tetap gunakan Transistorsoft.
  • Tidak ada restart setelah reboot. Pelacakan akan berlanjut saat pengguna membuka aplikasi kembali.
  • Tidak ada deteksi gerakan otomatis. Aplikasi menentukan kapan mulai dan berhenti.
  • Terminasi iOS. Jika pengguna melakukan force quit di iOS, update lokasi standar akan berhenti. Itu adalah aturan OS, bukan batasan plugin.

Untuk info lebih lanjut mengenai apa yang bisa dijalankan Capacitor saat aplikasi di background, lihat cara kerja background task di Capacitor.

Pemecahan Masalah

Update berhenti setelah beberapa menit di Android. Periksa useLegacyBridge: true, pastikan notifikasi foreground service terlihat, dan nonaktifkan optimasi baterai untuk aplikasi selama pengujian di OEM yang agresif. Gunakan url opsi agar pengiriman tidak bergantung pada WebView.

Tidak ada pembaruan di latar belakang di iOS. Konfirmasi UIBackgroundModes berisi location, bahwa Anda telah meneruskan backgroundMessage, dan bahwa Anda telah memanggil start() saat aplikasi berada di foreground. Panduan kami tentang mengapa iOS menghentikan pembaruan lokasi latar belakang menjelaskan setiap penyebabnya.

NOT_AUTHORIZED error. Pengguna menolak akses lokasi. Panggil openSettings() setelah menjelaskan mengapa aplikasi membutuhkannya.

Titik melompat-lompat di dalam ruangan. Naikkan distanceFilter, abaikan titik dengan nilai accuracy yang besar, dan di Android pertimbangkan networkFallback: true hanya jika fix kasar dapat diterima.

Lokasi palsu di aplikasi pengiriman. Setiap Location memiliki simulated flag. Untuk pemeriksaan yang lebih ketat, tambahkan @capgo/capacitor-mock-location-detector.

Memilih

Pilih Transistorsoft jika Anda butuh auto start berbasis gerakan, persistensi setelah reboot, offline queue, dan geofence poligon, serta biaya lisensinya cocok. Pilih @capgo/background-geolocation jika pelacakan Anda berbasis sesi, Anda ingin code yang mudah dibaca dan tanpa lisensi per aplikasi, serta tidak keberatan mengelola queueing di aplikasi Anda. Jika Anda mengganti beberapa native SDK berbayar sekaligus, Alternatif plugin Ionic Enterprise Halaman ini mencantumkan pengganti Capgo lainnya.

Live updates untuk aplikasi Capacitor

Saat bug web-layer sudah live, kirim perbaikannya lewat Capgo alih-alih menunggu berhari-hari untuk persetujuan app store. Pengguna mendapat update di background, sementara perubahan native tetap mengikuti jalur review normal.

Terbaru dari Blog kami

Capgo memberikan insight terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang benar-benar profesional.