Panduan Memulai
Salin prompt setup yang berisi langkah install dan panduan markdown lengkap untuk plugin ini.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-device-info`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/device-info/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Kompatibilitas
Bagian berjudul “Kompatibilitas”@capgo/capacitor-device-info membutuhkan Capacitor 8 atau versi terbaru (@capacitor/core >=8.0.0).
Anda bisa menggunakan AI-Assisted Setup kami untuk menginstal plugin ini. Tambahkan skill Capgo ke tool AI Anda dengan command berikut:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsLalu gunakan prompt berikut:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-device-info` plugin in my project.Untuk setup manual, instal package dan sync project native:
npm install @capgo/capacitor-device-infonpx cap syncimport { DeviceInfo } from '@capgo/capacitor-device-info';Mulai cepat
Bagian berjudul “Mulai cepat”import { DeviceInfo } from '@capgo/capacitor-device-info';
const result = await DeviceInfo.getInfo();console.log(result);Contoh: startMonitoring
Bagian berjudul “Example: startMonitoring”import { DeviceInfo } from '@capgo/capacitor-device-info';
const result = await DeviceInfo.startMonitoring();console.log(result);Contoh: stopMonitoring
Bagian berjudul “Example: stopMonitoring”import { DeviceInfo } from '@capgo/capacitor-device-info';
const result = await DeviceInfo.stopMonitoring();console.log(result);Kesalahan umum
Bagian berjudul “Kesalahan umum”- Listener: hapus handle saat screen unmount.
- Sinkronisasi Native: jalankan
npx cap syncsetelah upgrade plugin. - Sumber kebenaran tunggal: percayai
src/definitions.tsdi repo GitHub.
Baca satu snapshot
Bagian berjudul “Read one snapshot”const snapshot = await DeviceInfo.getInfo();
console.log(snapshot.cpu.cores);console.log(snapshot.memory.usedPercent);console.log(snapshot.storage.freeBytes);console.log(snapshot.sensors?.pressureHpa);cpu.usagePercent berbasis delta. Sampel native pertama bisa mengabaikannya; panggil getInfo() lagi nanti atau gunakan monitoring untuk menerima data penggunaan CPU setelah sampel kedua.
Stream update
Bagian berjudul “Stream updates”const handle = await DeviceInfo.addListener('deviceInfoUpdate', (sample) => { console.log(sample.sequence, sample.elapsedMs); console.log(sample.cpu.usagePercent); console.log(sample.sensors?.readings);});
const session = await DeviceInfo.startMonitoring({ intervalMs: 1000, emitImmediately: true,});
console.log(session.intervalMs, session.startedAt);Perilaku monitoring
Bagian berjudul “Monitoring behavior”intervalMsdefaultnya adalah1000milidetik. Nilai di bawah250milidetik dibatasi ke250.emitImmediatelydefaultnya adalahtrue.- Atur
durationMsatausampleCountuntuk menghentikan monitoring secara otomatis. - Memanggil
startMonitoring()saat monitoring aktif, akan merestart sesi dengan opsi baru. - Setiap
deviceInfoUpdatetermasuk berbasis satusequence, the session’sstartedAttimestamp, danelapsedMs.
Hentikan update dan hapus listener
Bagian berjudul “Stop updates and remove listeners”await DeviceInfo.stopMonitoring();await handle.remove();
// Or remove every listener registered on this plugin:await DeviceInfo.removeAllListeners();Cek status monitoring
Bagian berjudul “Cek status monitoring”const state = await DeviceInfo.isMonitoring();
if (state.monitoring) { console.log(state.samplesEmitted);}Onboard field sensor
Bagian berjudul “Field sensor onboard”const { sensors, cpu, gpu } = await DeviceInfo.getInfo();
console.log(cpu.temperatureCelsius);console.log(gpu?.temperatureCelsius);console.log(sensors?.batteryTemperatureCelsius);console.log(sensors?.ambientTemperatureCelsius);console.log(sensors?.relativeHumidityPercent);console.log(sensors?.pressureHpa);console.log(sensors?.illuminanceLux);console.log(sensors?.proximityDistanceCm);console.log(sensors?.availableSensors);Field sensor bersifat opsional. Field ini hanya muncul jika perangkat, OS, dan sandbox aplikasi mengekspos metrik tersebut.
Catatan platform
Bagian berjudul “Catatan platform”- iOS tidak memerlukan izin untuk metrik yang diekspos. iOS melaporkan ketersediaan sensor CoreMotion, tetapi tidak melaporkan suhu CPU atau GPU secara mentah.
- Android tidak memerlukan izin untuk metrik yang diekspos. Suhu CPU dan GPU adalah pembacaan thermal-zone secara best-effort.
- Dukungan web bersifat best effort dan mungkin melaporkan array sensor onboard kosong karena browser tidak mengekspos sensor perangkat native secara konsisten.
referensi API
Bagian berjudul “Referensi API”| Metode | Mengembalikan | Catatan |
|---|---|---|
getInfo() | Promise<DeviceInfoSnapshot> | Membaca satu snapshot. |
startMonitoring(options?) | Promise<StartMonitoringResult> | Memulai snapshot berkala, atau memulai ulang sesi aktif dengan opsi baru. |
stopMonitoring() | Promise<StopMonitoringResult> | Menghentikan sesi aktif. |
isMonitoring() | Promise<MonitoringState> | Mengembalikan status sesi saat ini. |
addListener('deviceInfoUpdate', listener) | Promise<PluginListenerHandle> | Mendaftarkan listener snapshot berkala. |
removeAllListeners() | Promise<void> | Menghapus semua listener yang terdaftar pada plugin. |
getPluginVersion() | Promise<PluginVersionResult> | Membaca versi plugin native. |
PluginListenerHandle disediakan oleh Capacitor dan memiliki remove() untuk menghapus listener tersebut.
Tipe snapshot
Bagian berjudul “Tipe snapshot”interface CpuInfo { cores: number; activeCores?: number; architecture?: string; model?: string; usagePercent?: number | null; maxFrequencyHz?: number; temperatureCelsius?: number;}
interface MemoryInfo { totalBytes?: number; freeBytes?: number; usedBytes?: number; usedPercent?: number; appUsedBytes?: number; appLimitBytes?: number; lowMemory?: boolean; pressure?: 'normal' | 'warning' | 'critical' | 'unknown';}
interface StorageInfo { totalBytes?: number; freeBytes?: number; usedBytes?: number; usedPercent?: number;}
interface GpuInfo { api?: 'metal' | 'opengl' | 'webgl' | 'unknown'; vendor?: string; renderer?: string; version?: string; maxTextureSize?: number; temperatureCelsius?: number;}
type ThermalState = 'nominal' | 'fair' | 'serious' | 'critical' | 'unknown';
interface DeviceInfoSnapshot { timestamp: number; platform: 'ios' | 'android' | 'web'; cpu: CpuInfo; memory: MemoryInfo; storage: StorageInfo; gpu?: GpuInfo; thermalState?: ThermalState; lowPowerMode?: boolean; sensors?: OnboardSensorsInfo;}Ukuran dalam satuan byte, maxFrequencyHz dalam hertz, dan nilai suhu dalam Celsius. usagePercent bisa null sampai platform memiliki sampel yang cukup untuk menghitungnya.
Tipe sensor
Bagian berjudul “Tipe sensor”interface OnboardSensorDescriptor { type: string; name?: string; vendor?: string; platformType?: number; maximumRange?: number; resolution?: number; powerMilliamp?: number; minDelayMicroseconds?: number; wakeUp?: boolean;}
interface OnboardSensorReading { type: string; unit: string; value: number; name?: string; timestamp?: number;}
interface OnboardSensorsInfo { availableSensors?: OnboardSensorDescriptor[]; readings?: OnboardSensorReading[]; batteryTemperatureCelsius?: number; ambientTemperatureCelsius?: number; relativeHumidityPercent?: number; pressureHpa?: number; illuminanceLux?: number; proximityDistanceCm?: number;}Timestamp pembacaan sensor berupa milidetik epoch Unix. Satuan yang umum dipakai adalah Celsius, persen, hPa, lux, dan sentimeter.
Tipe monitoring
Bagian berjudul “Tipe monitoring”interface MonitoringOptions { intervalMs?: number; durationMs?: number; sampleCount?: number; emitImmediately?: boolean;}
interface StartMonitoringResult { monitoring: boolean; intervalMs: number; startedAt: number;}
interface StopMonitoringResult { monitoring: boolean;}
interface MonitoringState { monitoring: boolean; intervalMs?: number; startedAt?: number; samplesEmitted?: number;}
interface DeviceInfoUpdate extends DeviceInfoSnapshot { sequence: number; startedAt: number; elapsedMs: number;}
interface PluginVersionResult { version: string;}startedAt, timestamp, dan elapsedMs adalah milidetik. sequence dimulai pada 1 untuk setiap sesi monitoring.
Sumber kebenaran tunggal
Bagian berjudul “Sumber kebenaran”Referensi ini mengikuti API publik di dalam plugin src/definitions.ts. Perbarui halaman ini saat sumber tersebut berubah.
Lanjutkan dari Getting Started
Bagian berjudul “Lanjutkan dari Getting Started”Jika Anda menggunakan Panduan Memulai untuk diagnostik perangkat, hubungkan dengan @capgo/capacitor-device-info untuk ringkasan, Menggunakan @capgo/capacitor-device-info untuk halaman tutorial, @capgo/capacitor-barometer untuk pembacaan tekanan yang terfokus, dan @capgo/capacitor-light-sensor untuk pembacaan sensor cahaya yang lebih fokus.