@ capgo/ 电容- coming- call- kit
从您的 Capacitor app 显示本地收到的呼叫屏幕: CallKit 在 iOS 上显示, 在 Android 上显示高优先级通知, 可以打开全屏幕的呼叫屏幕 。 给用户拨打VoIP电话,视频通话和需要回答的提示.
🤖 建筑与AI编码代理? 安装 Capgo 技能 所以克劳德代码,代码,光标,副驾驶,或双子座CLI知道如何安装和使用
@capgo/capacitor-incoming-call-kit在您的电容应用程序中:npx skills add Cap-go/capgo-skills。然后问你的经纪人: 添加@capgo/电容-capor-incoming-call-kit到我的电容软件上 代理设置指南 • 妇女 主机磁共振
主要特点
- 来电UI数字 :
showIncomingCall()显示本地铃声屏幕. - 调用事件数字 :
callEnded, (中文(简体) ),callTimedOut财务报告和审定财务报表incomingCallDisplayed听众,加callAccepted财务报告和审定财务报表callDeclined在iOS和Android上. - 电话跟踪数字 :
getActiveCalls(), (中文(简体) ),endCall()财务报告和审定财务报表endAllCalls()。 。 。 . - 权限数字 :
checkPermissions(), (中文(简体) ),requestPermissions()财务报告和审定财务报表requestFullScreenIntentPermission()为Android 14 和以后. - 平台: iOS和Android. 互联网档案馆的存檔,存档日期2013-12-22. iOS使用CallKit. 互联网档案馆的存檔,存档日期2014-12-21. Android使用高优先级通知,可以引起全屏活性. Web是一个基本支点.
在 Capacitor 中显示一个本地接通的表面,带有Android全屏通知和iOS CallKit.
这个插件是为想要在相同空间中找到东西的团队而建的 奥拉雷瓦朱凯莫普/电容-来电-吻合,但是用一个小的 API, 键入事件, 更清晰的平台边界, 和文档, 你实际上可以从.
文档
这里有最完整的医生: https://capgo.app/docs/plugins/incoming-call-kit/ 互联网档案馆的存檔,存档日期2013-12-02
兼容性
| 插件版本 | 电容兼容性 | 维护 |
|---|---|---|
| 联合国 | 联合国 | ✅ |
| 页:1 | 页:1 | 应要求 |
| 页:1 | 页:1 | ❌ |
说明: 此插件的主要版本沿用了Capacitor的主要版本. 使用匹配您的电容安装的版本 。 只有最新的主要版本得到积极维护.
安装
您可以使用我们的 AI 辅助设置安装插件 。 使用以下命令将 Capgo 技能添加到您的 AI 工具 :
npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins
然后使用下列提示:
Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-incoming-call-kit` plugin in my project.
如果您更喜欢手动设置,请通过运行以下命令来安装插件,并遵循下面的平台特定指令:
bun add @capgo/capacitor-incoming-call-kit
bunx cap sync
此插件会做什么
- 显示来自 JavaScript 的本地呼叫 UI .
- 释放缓冲
callAccepted, (中文(简体) ),callDeclined, (中文(简体) ),callEnded,以及callTimedOut所以如果桥冷的话 行动还是会到达JS的. - 使用Android通知加上全屏活动.
- 使用 iOS CallKit 系统来电表.
- 使推力运输脱离范围,从而可以将它接通到自己的FCM,PushKit,SIP或后端流.
此插件不会做什么
- 它不为你注册FCM,APN,或PushKit.
- 它不创建或管理基本的音频/视频会话.
- 它不会取代你的VoIP SDK。 它只处理本土来电演示层.
快速启动
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);
// Join your voice/video session here.
});
await IncomingCallKit.addListener('callDeclined', ({ call }) => {
console.log('Declined:', call.callId);
});
await IncomingCallKit.addListener('callTimedOut', ({ call }) => {
console.log('Timed out:', call.callId);
});
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',
},
});
事件模型
incomingCallDisplayed: 本地 UI 已成功显示 .callAccepted:用户接受本地UI.callDeclined:用户在加入前就拒绝了.callEnded:您的应用程序或平台结束了跟踪呼叫.callTimedOut:电话一直没有答复,直到timeoutMs。 。 。 .
每个事件都有正常的 call 载荷和原载 extra 对象.
平台说明
机器人
requestPermissions()请求POST_NOTIFICATIONS安卓13号+.requestFullScreenIntentPermission()打开Android 14+设置页面用于全屏意图.showIncomingCall()发布高优先级通知,并可在应用程序运行时启动全屏活动.- 超时是最佳的,在可用时也使用通知超时.
iOS系统
showIncomingCall()报告呼叫KallKit.- 打电话 Kit本身不需要运行时的许可, 所以
requestPermissions()立即解决 iOS. - 您的应用程序负责在之后启动真正的呼叫会话
callAccepted。 。 。 . - 如果您需要从 VoIP 推出的背景呼叫快递, 请将您的 PushKit / APN 流线接通, 以便在您的 Capacitor 桥可用时立即调用此插件 .
选择建筑
- 如果您的应用程序已经使用 Twilio、 Stream、 Daily 或 SIP 堆栈, 请使用此插件作为本地铃声层, 并将媒体会话保存在您现有的 SDK 中 .
- 如果您只需要前景测试或自定义后端事件, 请拨打
showIncomingCall()直接来自联署材料就够了. - 如果您需要真实的背景交付, 请将此插件与您的本地驱动集成配对, 而不是将一个驱动提供者烘焙入插件本身 .
示例应用
储存库包括: example-app 带有小型控制面板,用于:
- 请求权限,
- 显示一个调用演示,
- 检查主动呼叫,
- 并实时观看听众的有效载荷.
API 密码
showIncomingCall(...)endCall(...)endAllCalls(...)getActiveCalls()checkPermissions()requestPermissions()requestFullScreenIntentPermission()getPluginVersion()addListener('incomingCallDisplayed', ...)addListener('callAccepted', ...)addListener('callDeclined', ...)addListener('callEnded', ...)addListener('callTimedOut', ...)removeAllListeners()- 接口
- 类型异名
API控制器,用于呈现出一个本土的接通面.
显示来电(...)
showIncomingCall(options: ShowIncomingCallOptions) => Promise<ShowIncomingCallResult>
显示本地收到的调用.
Android显示高优先级通知,并可以提升全屏活性. iOS报告呼叫CallKit.
| 参数 | 类型 |
|---|---|
options | ShowIncomingCallOptions |
回返情况: Promise<ShowIncomingCallResult>
端点呼叫(...)
endCall(options: EndCallOptions) => Promise<ActiveCallsResult>
结束一个特定的跟踪呼叫.
| 参数 | 类型 |
|---|---|
options | EndCallOptions |
回返情况: Promise<ActiveCallsResult>
终极呼叫(...)
endAllCalls(options?: EndAllCallsOptions | undefined) => Promise<ActiveCallsResult>
结束每一个跟踪电话.
| 参数 | 类型 |
|---|---|
options | EndAllCallsOptions |
回返情况: Promise<ActiveCallsResult>
获取 AactiveCalls ()
getActiveCalls() => Promise<ActiveCallsResult>
返回当前跟踪的呼叫 .
回返情况: Promise<ActiveCallsResult>
检查( )
checkPermissions() => Promise<IncomingCallPermissionStatus>
返回当前通知和全屏意图的许可状态.
回返情况: Promise<IncomingCallPermissionStatus>
请求( )
requestPermissions() => Promise<IncomingCallPermissionStatus>
平台支持时请求通知许可.
iOS CallKit本身并不需要运行时的快取,因此iOS解析时无需被催取.
回返情况: Promise<IncomingCallPermissionStatus>
请求FullScreen IntentPermission ()
requestFullScreenIntentPermission() => Promise<IncomingCallPermissionStatus>
可用时打开Android 14+全屏意图设置页面.
在其他平台上,此选项以当前许可状态解决 .
回返情况: Promise<IncomingCallPermissionStatus>
获取 PluginVersion ()
getPluginVersion() => Promise<PluginVersionResult>
返回本地执行版本标记 .
回返情况: Promise<PluginVersionResult>
添加倾听器( 'callDisplayed',...)
addListener(eventName: 'incomingCallDisplayed', listenerFunc: (event: IncomingCallEvent) => void) => Promise<PluginListenerHandle>
在呼叫被交给本土平台UI后被解除.
| 参数 | 类型 |
|---|---|
eventName | 'incomingCallDisplayed' |
listenerFunc | (event: IncomingCallEvent) => void |
回返情况: Promise<PluginListenerHandle>
添加收听器( “ 收听) ,...)
addListener(eventName: 'callAccepted', listenerFunc: (event: IncomingCallEvent) => void) => Promise<PluginListenerHandle>
用户接受本地UI的呼叫后即被解除.
| 参数 | 类型 |
|---|---|
eventName | 'callAccepted' |
listenerFunc | (event: IncomingCallEvent) => void |
回返情况: Promise<PluginListenerHandle>
添加倾听器( “ callDeclined ” ,...)
addListener(eventName: 'callDeclined', listenerFunc: (event: IncomingCallEvent) => void) => Promise<PluginListenerHandle>
当用户拒绝本地用户界面的电话时,即被开除.
| 参数 | 类型 |
|---|---|
eventName | 'callDeclined' |
listenerFunc | (event: IncomingCallEvent) => void |
回返情况: Promise<PluginListenerHandle>
添加倾听器( “ called End” ,...)
addListener(eventName: 'callEnded', listenerFunc: (event: IncomingCallEvent) => void) => Promise<PluginListenerHandle>
当呼叫通过API或平台动作结束时被解除.
| 参数 | 类型 |
|---|---|
eventName | 'callEnded' |
listenerFunc | (event: IncomingCallEvent) => void |
回返情况: Promise<PluginListenerHandle>
添加倾听器( “ callTimed Out” ,...)
addListener(eventName: 'callTimedOut', listenerFunc: (event: IncomingCallEvent) => void) => Promise<PluginListenerHandle>
当一个未回复的呼叫到达其设定的超时时即被解除 .
| 参数 | 类型 |
|---|---|
eventName | 'callTimedOut' |
listenerFunc | (event: IncomingCallEvent) => void |
回返情况: Promise<PluginListenerHandle>
删除所有收听器( )
removeAllListeners() => Promise<void>
删除插件注册的每一个本地听器 .
接口
显示来袭 呼叫结果
结果有效载荷 showIncomingCall()。 。 。 .
| Prop | 类型 | 说明 |
|---|---|---|
call | IncomingCallRecord | 创建或再利用的呼叫记录. |
来了 调用记录
是目前追踪到的电话.
| Prop | 类型 | 说明 |
|---|---|---|
callId | string | 您的应用程序提供了稳定的呼叫标识符 . |
callerName | string | 在本地 UI 中显示的名称 . |
handle | string | 平台可用时显示的二级手柄 . |
hasVideo | boolean | 这通电话是否应当作为视频通话处理. |
state | IncomingCallState | 目前平台报告的调用状态. |
platform | 'android' | 'ios' | 'web' | 制作唱片的平台. |
extra | Record<string, any> | 任意的元数据在呼叫创建时间传递. |
显示来袭 调用选项
常见选项用于显示一个接收到的呼叫 .
| Prop | 类型 | 说明 |
|---|---|---|
callId | string | 电话的稳定标识符。 稍后结束调用时重用同值. |
callerName | string | 向用户显示主名 . |
handle | string | 可选的二级手柄,如电话号码,SIP URI,或用户ID等. |
appName | string | 标签由Android在通知中显示. iOS使用主机应用程序捆绑中配置的应用程序显示名. |
hasVideo | boolean | 是否应当将下届会话标为可视化. |
timeoutMs | number | 最佳超时数以毫秒计。 默认为 60000。 。 。 . |
acceptText | string | 接受动作的自定义标签 。 仅限Android. |
declineText | string | 递减动作的自定义标签 。 仅限Android. |
extra | Record<string, any> | 任意的JSON元数据在所有事件中都有回响. |
android | AndroidIncomingCallOptions | Android特定行为超越. |
ios | IOSIncomingCallOptions | iOS特定行为覆盖. |
Android 来袭 调用选项
Android特定接通的呼叫演示选项.
| Prop | 类型 | 说明 |
|---|---|---|
channelId | string | 通知频道标识符. 默认为 incoming_call_kit。 。 。 . |
channelName | string | 通知频道显示名称 。 默认为 Incoming Calls。 。 。 . |
showFullScreen | boolean | Android 是否在可能时请求全屏演示. 默认为 true。 。 。 . |
accentColor | string | 可选口音颜色 #RRGGBB 或者说 #AARRGGBB 形式. |
ringtoneUri | string | 可选铃声URI字符串. 示例 android.resource://com.example.app/raw/ringtone |
isHighPriority | boolean | 是否将通知列为高度优先事项。 默认为 true。 。 。 . |
监督办的到来 调用选项
iOS特定接通的调用演示文稿选项.
| Prop | 类型 | 说明 |
|---|---|---|
handleType | 'generic' | 'phoneNumber' | 'emailAddress' | 打电话 Kit手柄类型. 默认为 generic。 。 。 . |
supportsHolding | boolean | 是否应该支持该呼吁。 默认为 true。 。 。 . |
supportsDTMF | boolean | 呼叫是否应该支持 DTMF 。 默认为 false。 。 。 . |
supportsGrouping | boolean | 呼叫是否支持分组 。 默认为 false。 。 。 . |
supportsUngrouping | boolean | 调用是否支持不分组 。 默认为 false。 。 。 . |
活动呼叫
结果有效载荷 getActiveCalls()。 。 。 .
| Prop | 类型 | 说明 |
|---|---|---|
calls | IncomingCallRecord[] | 当地执行仍然追踪到这些呼吁. |
终止呼叫选项
结束单一跟踪呼叫的选项 .
| Prop | 类型 | 说明 |
|---|---|---|
callId | string | 呼叫标识符最初传递给 showIncomingCall()。 。 。 . |
reason | string | 可选应用程序定义的理由字符串 . |
结束所有呼叫选项
结束所有跟踪通话的选项 .
| Prop | 类型 | 说明 |
|---|---|---|
reason | string | 可选应用程序定义的理由字符串 . |
呼叫暂停状态
结果有效载荷进行许可检查.
| Prop | 类型 | 说明 |
|---|---|---|
notifications | PermissionState | 'notApplicable' | 通知许可状态。 iOS CallKit本身不需要运行时间通知权限,所以 iOS 返回 notApplicable。 。 。 . |
fullScreenIntent | PermissionState | 'notApplicable' | 全屏意图许可状态. iOS 返回 notApplicable.Android 13和以下 granted。 。 。 . |
插件变压器
插件版本有效载荷 .
| Prop | 类型 | 说明 |
|---|---|---|
version | string | 版本标识符由平台执行返回. |
插件听筒
| Prop | 类型 |
|---|---|
remove | () => Promise<void> |
来了 调用事件
由插件收听器发送的有效载荷 .
| Prop | 类型 | 说明 |
|---|---|---|
call | IncomingCallRecord | 触发事件的电话. |
reason | string | 国家过渡的可选原因. |
source | 'api' | 'user' | 'system' | 行动起源. |
类型异名
来了 呼叫状态
支持来电状态.
'ringing' | 'accepted' | 'ended'
记录
构造 T 类型 K 的一组属性类型
{
[P in K]: T;
}
权限状态
'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'