Zum Inhalt springen

Einstieg

  1. Install die Paket

    Terminalfenster
    bun add @capgo/capacitor-incoming-call-kit
  2. Synchronisiere native Projekte

    Terminalfenster
    bunx cap sync
  3. Wählen Sie Ihre Ringquelle Bescheiden Sie, ob das eingehende Anrufereignis von Ihrem Backend, einem SDK wie Twilio oder Stream, oder einem nativen Push-Path wie FCM oder PushKit stammt.

Diese Erweiterung besitzt nur die native Anrufpräsentation. Ihr App besitzt noch immer den Transport, die Authentifizierung und die tatsächliche Medien-Sitzung.

Die häufige Produktionsmuster ist:

  1. Ihr Backend oder die Anruferin SDK sendet ein Ringereignis.
  2. Ihre App ruft showIncomingCall().
  3. Das Plugin präsentiert eine native eingehende Anruf-UI.
  4. callAccepted erzählt Ihrer App, sich dem tatsächlichen Raum oder der VoIP-Sitzung anzuschließen.
  5. callDeclined, callEndedoder callTimedOut erzählt Ihrer App, die remote State zu bereinigen.
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: stabiler Identifier, der später wieder verwendet wird endCall()
  • timeoutMs: Bemühungen, unbeantwortete Anfragen abzubrechen
  • extra: beliebige JSON-Daten werden im Listener-Payload zurückgegeben
  • android.channelId und android.channelName: Einstellungen für Android-Benachrichtigungen anpassen
  • android.showFullScreen: fordert die Android-Vollbildschirmaktivität für eingehende Anrufe an
  • ios.handleTypewählen Sie generic, phoneNumber, oder emailAddress für CallKit

Aktivitätsanrufe verwalten

Kopieren Sie in die Zwischenablage
const { calls } = await IncomingCallKit.getActiveCalls();
await IncomingCallKit.endCall({
callId: 'call-42',
reason: 'remote-ended',
});
await IncomingCallKit.endAllCalls({
reason: 'session-reset',
});
  • incomingCallDisplayed: Die native Benutzeroberfläche wurde erfolgreich angezeigt
  • callAccepted: Der Benutzer hat aus der native Benutzeroberfläche akzeptiert
  • callDeclined: Der Benutzer hat vor dem Beitritt abgelehnt
  • callEnded: Ihre App oder die Plattform beendete das verfolgte Gespräch
  • callTimedOut: Das Gespräch blieb unbeantwortet bis timeoutMs

Jedes Ereignis trägt das normalisierte call Datenpaket und Ihr Original extra Objekt.

  • Lesen Sie die iOS Anleitung __CAPGO_KEEP_0__
  • Beachten Sie, bevor Sie CallKit in einen PushKit- oder APNs-Fluss einbinden. Lesen Sie die Android Anleitung
  • Beachten Sie, bevor Sie sich auf volle Bildschirm-Intents auf Android 14 und später verlassen.