Saltar al contenido

Getting Started

GitHub

Puedes utilizar nuestra configuración asistida por IA para instalar el plugin. Agrega las Capgo habilidades a tu herramienta de IA utilizando el siguiente comando:

Ventana de terminal
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Luego utiliza el siguiente prompt:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-incoming-call-kit` plugin in my project.

Si prefieres la configuración manual, instala el plugin ejecutando los siguientes comandos y sigue las instrucciones específicas de la plataforma a continuación:

  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 notificación nativa 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 IU 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 con esfuerzo
  • extra: JSON arbitrario devuelto en payloads de escucha
  • android.channelId y android.channelName: ajuste del canal de notificación de Android
  • android.showFullScreen: solicita la actividad de llamada entrante de pantalla completa de Android
  • ios.handleType: elija 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

Each event carries the normalized call payload and your original extra object.

  • Lea el guía de iOS antes de conectar CallKit en un flujo de PushKit o APNs.
  • Lea el guía de Android antes de confiar en intenciones de pantalla completa en Android 14 y posterior.
  • La web no está soportada.

Si estás utilizando Getting Started para planificar la consola de dashboard y API operaciones, conecta con Usando @capgo/capacitor-incoming-call-kit para la capacidad nativa en Usando @capgo/capacitor-incoming-call-kit, API Overview para el detalle de implementación en API Overview, Introducción para el detalle de implementación en Introducción, API Claves para el detalle de implementación en API Claves, y Dispositivos para el detalle de implementación en Dispositivos.