Memulai dengan Pedometer
Panduan ini akan memandu Anda mengintegrasikan plugin Capacitor Pedometer ke dalam aplikasi Anda.
Instalasi
Section titled “Instalasi”Instal plugin menggunakan npm:
npm install @capgo/capacitor-pedometernpx cap syncKonfigurasi iOS
Section titled “Konfigurasi iOS”Tambahkan deskripsi penggunaan motion ke Info.plist Anda:
<key>NSMotionUsageDescription</key><string>We need access to your motion data to track steps and activity</string>Konfigurasi Android
Section titled “Konfigurasi Android”Plugin secara otomatis menambahkan izin ACTIVITY_RECOGNITION. Untuk Android 10+ (API 29), Anda perlu meminta izin ini pada runtime.
Penggunaan Dasar
Section titled “Penggunaan Dasar”Import Plugin
Section titled “Import Plugin”import { CapacitorPedometer } from '@capgo/capacitor-pedometer';Periksa Ketersediaan
Section titled “Periksa Ketersediaan”const checkPedometer = async () => { const result = await CapacitorPedometer.isAvailable(); console.log('Step counting available:', result.stepCounting); console.log('Distance available:', result.distance); console.log('Floor counting available:', result.floorCounting); console.log('Pace available:', result.pace); console.log('Cadence available:', result.cadence);};Minta Izin
Section titled “Minta Izin”const requestPermission = async () => { const permission = await CapacitorPedometer.requestPermissions(); console.log('Permission status:', permission.activityRecognition);};Dapatkan Pengukuran Saat Ini
Section titled “Dapatkan Pengukuran Saat Ini”const getMeasurements = async () => { const measurements = await CapacitorPedometer.getMeasurement({ startDate: new Date(Date.now() - 24 * 60 * 60 * 1000), // 24 hours ago endDate: new Date() });
console.log('Steps:', measurements.numberOfSteps); console.log('Distance:', measurements.distance, 'meters'); console.log('Floors ascended:', measurements.floorsAscended); console.log('Floors descended:', measurements.floorsDescended);};Mulai Pembaruan Real-time
Section titled “Mulai Pembaruan Real-time”// Add listener for real-time updatesCapacitorPedometer.addListener('measurement', (data) => { console.log('Steps:', data.numberOfSteps); console.log('Distance:', data.distance); console.log('Pace:', data.currentPace); console.log('Cadence:', data.currentCadence);});
// Start receiving updatesawait CapacitorPedometer.startMeasurementUpdates();Hentikan Pembaruan
Section titled “Hentikan Pembaruan”await CapacitorPedometer.stopMeasurementUpdates();CapacitorPedometer.removeAllListeners();Contoh Lengkap
Section titled “Contoh Lengkap”import { CapacitorPedometer } from '@capgo/capacitor-pedometer';
class PedometerService { private listener: any;
async initialize() { // Check availability const available = await CapacitorPedometer.isAvailable(); if (!available.stepCounting) { console.error('Step counting not available'); return false; }
// Request permissions const permission = await CapacitorPedometer.requestPermissions(); if (permission.activityRecognition !== 'granted') { console.error('Permission denied'); return false; }
return true; }
async startTracking() { // Add listener this.listener = CapacitorPedometer.addListener('measurement', (data) => { this.onMeasurement(data); });
// Start updates await CapacitorPedometer.startMeasurementUpdates(); console.log('Pedometer tracking started'); }
async stopTracking() { await CapacitorPedometer.stopMeasurementUpdates(); if (this.listener) { this.listener.remove(); } console.log('Pedometer tracking stopped'); }
onMeasurement(data: any) { console.log('Steps today:', data.numberOfSteps); console.log('Distance:', (data.distance / 1000).toFixed(2), 'km'); }
async getTodaySteps() { const today = new Date(); today.setHours(0, 0, 0, 0);
const measurements = await CapacitorPedometer.getMeasurement({ startDate: today, endDate: new Date() });
return measurements.numberOfSteps; }}
// Usageconst pedometer = new PedometerService();await pedometer.initialize();await pedometer.startTracking();Praktik Terbaik
Section titled “Praktik Terbaik”- Periksa Ketersediaan: Selalu verifikasi fitur pedometer sebelum digunakan
- Minta Izin: Tangani permintaan izin dengan baik
- Optimasi Baterai: Hentikan pembaruan saat tidak diperlukan
- Penanganan Error: Bungkus panggilan dalam blok try-catch
- Pembaruan Latar Belakang: Konfigurasi mode latar belakang untuk pelacakan berkelanjutan
Masalah Umum
Section titled “Masalah Umum”Izin Ditolak
Section titled “Izin Ditolak”const handlePermissionDenied = async () => { const permission = await CapacitorPedometer.checkPermissions();
if (permission.activityRecognition === 'denied') { alert('Motion tracking permission is required. Please enable it in Settings.'); }};Tidak Tersedia di Perangkat
Section titled “Tidak Tersedia di Perangkat”const checkSupport = async () => { const available = await CapacitorPedometer.isAvailable();
if (!available.stepCounting) { alert('Step counting is not available on this device'); return false; }
return true;};Langkah Selanjutnya
Section titled “Langkah Selanjutnya”- Jelajahi Referensi API untuk dokumentasi lengkap
- Lihat aplikasi contoh
- Lihat tutorial untuk implementasi lanjutan