Langsung ke konten

Panduan Memulai

GitHub

Anda bisa menggunakan AI-Assisted Setup kami untuk menginstal plugin ini. Tambahkan skill Capgo ke tool AI Anda dengan command berikut:

Jendela terminal
bunx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Lalu gunakan prompt berikut:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-incoming-call-kit` plugin in my project.

Jika Anda lebih memilih Manual Setup, instal plugin dengan menjalankan perintah berikut dan ikuti petunjuk khusus platform di bawah ini:

  1. Instal package

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

    Jendela terminal
    bunx cap sync
  3. Pilih sumber ringtone Tentukan apakah event incoming-call berasal dari backend Anda, SDK seperti Twilio atau Stream, atau jalur native push seperti FCM atau PushKit.

import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
const result = await IncomingCallKit.showIncomingCall({
callId: 'call-id-123',
callerName: 'caller',
});
console.log(result);
import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
const result = await IncomingCallKit.endCall({ callId: 'call-id-123' });
console.log(result);
import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
const result = await IncomingCallKit.endAllCalls();
console.log(result);
  • Izin: panggil checkPermissions() kemudian requestPermissions() saat dibutuhkan.
  • Listeners: hapus handle saat screen unmount.
  • Sumber kebenaran tunggal: percayai src/definitions.ts di repo GitHub.

Plugin ini hanya menangani tampilan panggilan masuk secara native. Aplikasi Anda tetap mengelola transport, autentikasi, dan sesi media yang sebenarnya.

Pola produksi yang umum adalah:

  1. Backend atau SDK panggilan Anda memancarkan event ring.
  2. Aplikasi Anda memanggil showIncomingCall().
  3. Plugin menampilkan UI incoming-call native.
  4. callAccepted memberitahu aplikasi Anda untuk bergabung ke room atau sesi VoIP yang sebenarnya.
  5. callDeclined, callEnded, atau callTimedOut memberitahu aplikasi Anda untuk membersihkan remote state.
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: identifier stabil yang digunakan kembali dengan endCall()
  • timeoutMs: timeout unanswered best-effort
  • extra: JSON arbitrer yang dikembalikan di payload listener
  • android.channelId dan android.channelName: tuning channel notifikasi Android
  • android.showFullScreen: meminta activity incoming-call full-screen Android
  • 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: UI native berhasil ditampilkan
  • callAccepted: user menerima dari UI native
  • callDeclined: user menolak sebelum bergabung
  • callEnded: aplikasi atau platform mengakhiri panggilan yang dilacak
  • callTimedOut: panggilan tidak terjawab hingga timeoutMs

Setiap event membawa data call payload yang dinormalisasi dan extra object.

  • Baca Panduan iOS sebelum menghubungkan CallKit ke alur PushKit atau APNs.
  • Baca Panduan Android sebelum mengandalkan full-screen intents di Android 14 ke atas.
  • Web tidak didukung.

Jika Anda menggunakan Panduan Memulai untuk merencanakan operasi dashboard dan API, hubungkan dengan Menggunakan @capgo/capacitor-incoming-call-kit untuk kapabilitas native saat menggunakan @capgo/capacitor-incoming-call-kit, Ringkasan API untuk detail implementasi di API Overview, Pendahuluan untuk detail implementasi di Introduction, Kunci API untuk detail implementasi di API Keys, dan Perangkat untuk detail implementasi di Devices.