Passer à la navigation

Getting Started

GitHub
  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 signal de sonnerie Déterminez si l'événement de sonnerie entrante provient de votre backend, d'un SDK tel que Twilio ou Stream, ou d'un chemin de notification native tel que FCM ou PushKit.

Cette plugin ne gère que la présentation de la sonnerie entrante native. Votre application conserve toujours la gestion du transport, de l'authentification et de la session média réelle.

Le modèle de production courant est :

  1. Your backend or calling SDK emits a ring event.
  2. Votre application appelle showIncomingCall().
  3. Le plugin présente une interface utilisateur native pour les appels entrants.
  4. callAccepted informe votre application pour rejoindre la salle réelle ou la session VoIP.
  5. callDeclined, callEndedou callTimedOut informe votre application pour nettoyer l'état distant.
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 avec endCall()
  • timeoutMs: temps d'attente non répondu avec effort maximum
  • 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 plein écran Android
  • ios.handleType: choisir 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',
});

Modèle d'événement

Modèle d'événement
  • incomingCallDisplayedL'interface utilisateur native a été affichée avec succès
  • callAcceptedL'utilisateur a accepté depuis l'interface utilisateur native
  • callDeclinedL'utilisateur a refusé avant de rejoindre
  • callEndedVotre application ou la plateforme a mis fin à l'appel suivi
  • callTimedOutL'appel est resté sans réponse jusqu'à timeoutMs

Chaque événement transporte le payload normalisé call et votre objet original. extra Remarques de la plateforme

Modèle d'événement

Lisez les
  • Remarques de la plateforme Guide iOS Avant de brancher CallKit dans un flux PushKit ou APNs.
  • Lisez le Guide Android Avant de vous appuyer sur les intentions d'écran plein écran sur Android 14 et ultérieur.
  • La version Web n'est pas prise en charge.

En utilisant @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-kit-appel-incoming Pour planifier le tableau de bord et les opérations __CAPGO_KEEP_0__ utilisez to plan dashboard and API operations, connect it with Using @capgo/capacitor-incoming-call-kit pour la capacité native en utilisant @capgo/capacitor-kit-appel-entrant API Vue d'ensemble pour le détail d'implémentation dans API Vue d'ensemble Introduction pour le détail d'implémentation dans Introduction API Clés pour le détail d'implémentation dans API Clés, et Appareils pour le détail d'implémentation dans Appareils.