跳过内容

开始使用

GitHub

安装

安装

您可以使用我们的 AI 助手设置来安装插件。使用以下命令将 Capgo 能力添加到您的 AI 工具中:

终端窗口
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

然后使用以下提示:

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

如果您prefer手动设置,安装插件并运行以下命令并遵循以下平台特定说明:

  1. 安装包

    终端窗口
    bun add @capgo/capacitor-incoming-call-kit
  2. 同步本机项目

    终端窗口
    bunx cap sync
  3. 选择呼叫铃声来源 决定呼叫事件来自您的后端、一个像Twilio或Stream这样的SDK还是一个本机推送路径,如FCM或PushKit。

如何集成工作

标题:如何集成工作

本插件仅负责本机呼叫呈现。您的应用程序仍负责传输、身份验证和实际媒体会话。

常见的生产模式是:

  1. 您的后端或呼叫SDK发出呼叫铃声事件。
  2. 您的应用程序调用 showIncomingCall().
  3. 插件呈现本机呼叫UI
  4. callAccepted 让您的应用程序加入实际房间或VoIP会话。
  5. 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: 在监听器负载中回显任意 JSON
  • android.channelId 和 android.channelName: Android 通知频道调节
  • android.showFullScreen请求 Android 全屏 incoming-call 活动
  • ios.handleType选择 generic, phoneNumber或 emailAddress 用于呼叫Kit

处理活跃通话

管理活跃呼叫
const { calls } = await IncomingCallKit.getActiveCalls();
await IncomingCallKit.endCall({
callId: 'call-42',
reason: 'remote-ended',
});
await IncomingCallKit.endAllCalls({
reason: 'session-reset',
});

事件模型

事件模型
  • incomingCallDisplayed原生UI已成功显示
  • callAccepted用户从原生界面接受了呼叫。
  • callDeclined: 用户拒绝加入
  • callEnded: 你的应用或平台结束了被跟踪的电话
  • callTimedOut: 电话一直没有回应直到 timeoutMs

每个事件都携带了标准化的 call 和你的原始 extra :

:

:
  • : : : iOS 指南
  • : Android 指南 在 Android 14 和更高版本上,建议在使用全屏意图之前参考此指南。
  • Web 不受支持。

继续从 Getting Started

标题:继续从 Getting Started

如果您正在使用 开始使用 来规划仪表板和 API 操作,请将其与 使用 @capgo/capacitor-incoming-call-kit 为使用 @capgo/capacitor-incoming-call-kit 的原生能力 API 概述 为 API 概述 的实现细节 简介 简介的实现细节 API 键 API 键的实现细节 设备 简介的实现细节