Ir al contenido

Iniciar

  1. Instalar 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 tu 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 tells your app to clean up 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 sin respuesta de mejor esfuerzo
  • 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: selecciona 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ó UI nativa con éxito
  • callAccepted: el usuario aceptó desde la UI nativa
  • callDeclined: el usuario rechazó antes de unirse
  • callEnded: su aplicación o la plataforma terminó la llamada rastreada
  • callTimedOut: la llamada quedó sin respuesta hasta timeoutMs

Cada evento lleva el objeto normalizado y su objeto original. call Platform notes extra Nota del sistema

Read the

iOS guide
  • antes de integrar CallKit en un flujo de PushKit o APNs. Read the Android guide
  • antes de confiar en intenciones de pantalla completa en Android 14 y posterior. __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
  • __CAPGO_KEEP_0__ no está soportado por la web.