Mulai
Salin prompt pengaturan dengan langkah-langkah instalasi 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-incoming-call-kit`
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/incoming-call-kit/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.
-
Instal paket
Jendela terminal bun add @capgo/capacitor-incoming-call-kit -
Sinkron proyek native
Jendela terminal bunx cap sync -
Pilih sumber ringan Anda Putuskan apakah event panggilan masuk datang dari backend Anda, sebuah SDK seperti Twilio atau Stream, atau jalur push asli seperti FCM atau PushKit.
Bagaimana integrasi ini berfungsi bersama
Bagian berjudul “Bagaimana integrasi ini berfungsi bersama”Plugin ini hanya memiliki presentasi panggilan masuk asli. Aplikasi Anda masih memiliki transportasi, autentikasi, dan sesi media yang sebenarnya.
Polanya produksi umum adalah:
- Backend atau SDK Anda mengeluarkan event ringan.
- Aplikasi Anda memanggil
showIncomingCall(). - Plugin menampilkan UI panggilan masuk asli.
callAcceptedmenginformasikan aplikasi Anda untuk bergabung dengan ruang atau sesi VoIP yang sebenarnya.callDeclined,callEndedataucallTimedOutmenginstruksikan aplikasi Anda untuk membersihkan status remote.
Integrasi minimal
Bagian berjudul “Integrasi Minimal”import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
await IncomingCallKit.requestPermissions();await IncomingCallKit.requestFullScreenIntentPermission();
await IncomingCallKit.addListener('callAccepted', async ({ call }) => { console.log('Accepted', call.callId, call.extra); // Start or join your real call session here.});
await IncomingCallKit.addListener('callDeclined', ({ call }) => { console.log('Declined', call.callId); // Tell your backend or SDK that the user declined.});
await IncomingCallKit.addListener('callTimedOut', ({ call }) => { console.log('Timed out', call.callId); // Clear ringing state in your backend or SDK.});
await IncomingCallKit.showIncomingCall({ callId: 'call-42', callerName: 'Ada Lovelace', handle: '+39 555 010 020', appName: 'Capgo Phone', hasVideo: true, timeoutMs: 45_000, extra: { roomId: 'room-42', callerUserId: 'user_ada', }, android: { channelId: 'calls', channelName: 'Incoming Calls', showFullScreen: true, }, ios: { handleType: 'phoneNumber', },});Opsi penting
Bagian berjudul “Pilihan penting”callId: identifikasi stabil digunakan kembali nantiendCall()timeoutMsWaktu tunggu yang berusaha optimalextra: data JSON acak ditampilkan kembali di payload pendengarandroid.channelIddanandroid.channelNamePengaturan saluran notifikasi Androidandroid.showFullScreen: meminta aktivitas panggilan masuk layar penuh Androidios.handleTypePilihgeneric,phoneNumberatauemailAddressuntuk CallKit
Mengelola panggilan aktif
Bagian berjudul “Mengelola panggilan aktif”const { calls } = await IncomingCallKit.getActiveCalls();
await IncomingCallKit.endCall({ callId: 'call-42', reason: 'remote-ended',});
await IncomingCallKit.endAllCalls({ reason: 'session-reset',});Model acara
Bagian berjudul “Model acara”incomingCallDisplayed: tampilan native ditampilkan dengan suksescallAccepted: pengguna menerima dari tampilan nativecallDeclined: pengguna menolak sebelum bergabungcallEnded: aplikasi Anda atau platform mengakhiri panggilan yang dilacakcallTimedOut: panggilan tetap tidak dijawab sampaitimeoutMs
Setiap event membawa nilai yang telah dinormalisasi call payload dan aslinya extra objek.
Catatan Platform
Catatan Platform- Baca Petunjuk iOS Sebelum menghubungkan CallKit ke dalam aliran PushKit atau APNs.
- Baca Petunjuk Pengguna Android sebelumnya mengandalkan niat layar penuh pada Android 14 dan seterusnya.
- Web tidak didukung.