Aller directement au contenu

Démarrage

  1. Installez le package

    Fenêtre de terminal
    bun add @capgo/capacitor-incoming-call-kit
  2. Synchroniser les projets natifs

    Fenêtre de terminal
    bunx cap sync
  3. Choisissez votre source de sonnerie Décidez si l'événement de la sonnerie entrante provient de votre backend, d'un SDK tel que Twilio ou Stream, ou d'une voie de sonnerie native comme FCM ou PushKit.

Ce plugin n'assume que la présentation de la sonnerie entrante native. Votre application conserve toujours la gestion du transport, de l'authentification et de la session de médias réelle.

Le modèle de production courant est :

  1. Votre backend ou votre SDK d'appel émet un événement de sonnerie.
  2. Votre application appelle showIncomingCall().
  3. Le plugin présente une interface utilisateur de sonnerie entrante native.
  4. callAccepted ou
  5. callDeclined, callEndedou callTimedOut ou
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: identifiant stable réutilisé plus tard endCall()
  • timeoutMs: temps d'attente non garanti
  • extra: JSON arbitraire renvoyé dans les payloads des écouteurs
  • android.channelId et android.channelName: réglage du canal de notification Android
  • android.showFullScreen: demande l'activité d'appel entrant en mode plein écran Android
  • ios.handleTypechoisissez generic, phoneNumber, ou emailAddress pour CallKit
const { calls } = await IncomingCallKit.getActiveCalls();
await IncomingCallKit.endCall({
callId: 'call-42',
reason: 'remote-ended',
});
await IncomingCallKit.endAllCalls({
reason: 'session-reset',
});
  • incomingCallDisplayed: l'interface utilisateur native a été affichée avec succès
  • callAccepted: l'utilisateur a accepté depuis l'interface utilisateur native
  • callDeclined: l'utilisateur a refusé avant de rejoindre
  • callEnded: votre application ou la plateforme a mis fin à l'appel suivi
  • callTimedOut: l'appel est resté sans réponse timeoutMs

Chaque événement transporte le payload normalisé et votre objet original. call Remarques relatives aux plateformes extra Lisez le guide iOS

Avant de brancher CallKit dans un flux PushKit ou APNs, lisez le guide iOS.

Lisez le guide Android