Getting Started
复制一个包含安装步骤和本插件的完整 Markdown 指南的配置提示。
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-incoming-call-kit`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/incoming-call-kit/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
-
安装包
终端窗口 bun add @capgo/capacitor-incoming-call-kit -
同步本地项目
终端窗口 bunx cap sync -
选择您的环源 决定是否来自您的后端、一个 SDK 如 Twilio 或 Stream,还是一个本地推送路径,如 FCM 或 PushKit。
如何集成
标题:如何集成本插件仅负责本地 incoming-call 的呈现。您的应用仍然拥有传输、认证和实际媒体会话。
集成的常见生产模式是:
- Your backend or calling SDK 发出一个环事件。
- Your app calls
showIncomingCall(). - The plugin 展示原生 incoming-call UI。
callAccepted告诉您的应用程序加入实际房间或 VoIP 会话。callDeclined,callEnded,或callTimedOut告诉您的应用程序清理远程状态。
最小集成
标题:最小集成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:稳定标识符,后续会被重复使用endCall()timeoutMs:最佳努力未回答超时extra:监听器载荷中回显任意 JSONandroid.channelId和android.channelName:调节 Android 通知频道android.showFullScreen:请求 Android 全屏 incoming-call 活动ios.handleType选择generic,phoneNumber,或者emailAddress为 CallKit
管理活动呼叫
管理活动呼叫部分标题const { calls } = await IncomingCallKit.getActiveCalls();
await IncomingCallKit.endCall({ callId: 'call-42', reason: 'remote-ended',});
await IncomingCallKit.endAllCalls({ reason: 'session-reset',});事件模型
事件模型incomingCallDisplayed:本地UI显示成功callAccepted:用户从本地UI中接受callDeclined:用户在加入之前拒绝callEnded:您的应用或平台结束了跟踪的呼叫callTimedOut:呼叫一直保持未接待timeoutMs
每个事件都携带标准化的 call 数据包和您的原始 extra 对象。
- 阅读 iOS 指南 在将 CallKit 整合到 PushKit 或 APNs 流程之前,请阅读此文档。
- 阅读 Android 指南 在 Android 14 或更高版本上使用全屏意图之前,请阅读此文档。
- Web 不受支持。
继续从 Getting Started
标题:继续从 Getting Started如果您正在使用 Getting Started 来规划仪表板和 API 操作,请将其连接到 使用 @capgo/capacitor-incoming-call-kit 使用 @capgo/capacitor-incoming-call-kit 的原生能力 API 简介 使用 API 简介中的实现细节 介绍 使用介绍中的实现细节 API 密钥 使用 API 密钥中的实现细节 设备 使用设备中的实现细节