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 posee la presentación de llamadas entrantes nativas. Tu aplicación sigue poseyendo el transporte, la autenticación y la sesión de medios real.

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

  1. Tu backend o llamada SDK emite un evento de anillo.
  2. Tu aplicación llama showIncomingCall().
  3. El plugin presenta la interfaz de usuario de llamadas entrantes nativas.
  4. callAccepted le dice a tu aplicación que se una a la habitación real o sesión de VoIP.
  5. callDeclined, callEndedo callTimedOut le dice a tu 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 estable reutilizado más tarde con endCall()
  • timeoutMs: tiempo de espera de respuesta con esfuerzo máximo
  • extra: JSON arbitrario devuelto en payloads de escucha
  • android.channelId y android.channelName: ajuste de canal de notificación de Android
  • android.showFullScreen: solicita la actividad de llamada entrante de pantalla completa de Android
  • ios.handleType: elegir 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 y su objeto original. call Notas de la plataforma extra Lee la guía de iOS

Antes de conectar CallKit en un flujo de PushKit o APNs, lee la guía de iOS.

Lee la guía de Android
  • Antes de confiar en intenciones de pantalla completa en Android 14 y versiones posteriores, lee la guía de Android. No está soportado en Web. __CAPGO_KEEP_0__
  • __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
  • __CAPGO_KEEP_0__