Ir al contenido

Empezar

  1. Instale el paquete

    Ventana de terminal
    bun add @capgo/capacitor-incoming-call-kit
  2. Sincronizar proyectos nativos

    Ventana de terminal
    bunx cap sync
  3. Elige la fuente de tu anillo Decide si el evento de llamada entrante proviene de tu backend, un SDK como Twilio o Stream, o un camino de empuje nativo como FCM o PushKit.

Este plugin solo controla la presentación de llamadas entrantes nativas. Tu aplicación sigue controlando el transporte, la autenticación y la sesión de medios real.

El patrón de producción común es:

  1. Su servidor de backend o llamada SDK emite un evento de llamada.
  2. Su aplicación llama showIncomingCall().
  3. El plugin presenta una IU de llamada nativa entrante.
  4. callAccepted le dice a su aplicación que se una a la habitación o sesión de VoIP real.
  5. callDeclined, callEndedo callTimedOut le dice a su aplicación que limpie el estado remoto.
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: identificador establecido reutilizado más tarde con endCall()
  • timeoutMs: tiempo de espera de mejores esfuerzos sin respuesta
  • extra: JSON arbitrario devuelto en payloads de oyente
  • android.channelId y android.channelName: ajuste de canal de notificación de Android
  • android.showFullScreen: solicita la actividad de llamada de pantalla completa de Android
  • ios.handleTypeseleccione generic, phoneNumber, o emailAddress para CallKit
const { calls } = await IncomingCallKit.getActiveCalls();
await IncomingCallKit.endCall({
callId: 'call-42',
reason: 'remote-ended',
});
await IncomingCallKit.endAllCalls({
reason: 'session-reset',
});
  • incomingCallDisplayed: se mostró la interfaz de usuario nativa con éxito
  • callAccepted: el usuario aceptó desde la interfaz de usuario nativa
  • callDeclined: el usuario rechazó antes de unirse
  • callEnded: su aplicación o la plataforma finalizó la llamada rastreada
  • callTimedOut: la llamada permaneció sin respuesta hasta timeoutMs

Cada evento lleva el payload normalizado call y su objeto original. extra Notas de la plataforma

Sección titulada “Notas de la plataforma”

Lea el
  • __CAPGO_KEEP_0__ Guía de iOS Antes de conectar CallKit en un flujo de PushKit o APNs.
  • Lee la Guía de Android Antes de confiar en intenciones de pantalla completa en Android 14 y versiones posteriores.
  • No está soportado en Web.