Lompat ke konten

Mulai

  1. Pasang paket

    Jendela Terminal
    bun add @capgo/capacitor-incoming-call-kit
  2. Sinkronkan proyek native

    Jendela Terminal
    bunx cap sync
  3. Pilih sumber ring Anda Putuskan apakah event panggilan masuk berasal dari backend Anda, sebuah SDK seperti Twilio atau Stream, atau jalur push asli seperti FCM atau PushKit.

Plugin ini hanya memiliki presentasi panggilan masuk asli. Aplikasi Anda masih memiliki transportasi, autentikasi, dan sesi media sebenarnya.

Polanya produksi yang umum adalah:

  1. Backend Anda atau SDK panggilan memancarkan event ring.
  2. Aplikasi Anda memanggil showIncomingCall().
  3. Plugin menampilkan UI panggilan masuk asli.
  4. callAccepted menginformasikan aplikasi Anda untuk bergabung dengan ruang sebenarnya atau sesi VoIP.
  5. callDeclined, callEndedatau callTimedOut menginformasikan aplikasi Anda untuk membersihkan state remote.
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',
},
});
  • callId: identifikasi stabil yang digunakan kembali kemudian dengan endCall()
  • timeoutMs: waktu tunggu tidak jelas yang tidak dijawab
  • extra: JSON acak yang dikembalikan dalam pesan pendengar
  • android.channelId dan android.channelName: pengaturan saluran peringatan Android
  • android.showFullScreen: meminta aktivitas panggilan masuk Android penuh layar
  • ios.handleType: pilih generic, phoneNumber, atau emailAddress untuk CallKit
const { calls } = await IncomingCallKit.getActiveCalls();
await IncomingCallKit.endCall({
callId: 'call-42',
reason: 'remote-ended',
});
await IncomingCallKit.endAllCalls({
reason: 'session-reset',
});
  • incomingCallDisplayed: antarmuka native ditampilkan dengan sukses
  • callAccepted: pengguna menerima dari antarmuka native
  • callDeclined: pengguna menolak sebelum bergabung
  • callEnded: aplikasi Anda atau platform mengakhiri panggilan yang sedang diikuti
  • callTimedOut: panggilan tetap tidak dijawab hingga timeoutMs

Setiap event membawa payload yang telah dinormalisasi dan objek aslinya. call Catatan platform extra Bagian berjudul “Catatan platform”