跳过内容

iOS

GitHub

iOS 行为的工作原理

iOS 行为的工作原理

在 iOS 上,插件将来电呼叫报告给 CallKit。这样你就可以获得系统的来电呼叫sheet和标准化的呼叫操作,而不必自己构建原生来电呼叫 UI。

requestPermissions() 在 iOS 上,CallKit 本身不需要运行时权限对话框,因此会立即解决。

基本示例

复制到剪贴板
import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
await IncomingCallKit.showIncomingCall({
callId: 'call-42',
callerName: 'Ada Lovelace',
handle: '+1 555 010 020',
ios: {
handleType: 'phoneNumber',
supportsHolding: true,
supportsDTMF: false,
},
});

处理类型

Copy to clipboard

使用 ios.handleType 来控制如何格式化 CallKit 的 handle:

  • generic 用于应用程序特定的标识符
  • phoneNumber 用于真实的电话号码
  • emailAddress 用于基于电子邮件的身份

背景 incoming calls

背景 incoming calls 部分

本插件不会为您注册 PushKit 或 APNs。

要在 iOS 上实现真正的背景或终止状态的铃声,主应用程序仍然需要匹配传输策略的原生 Apple 推送设置:

  1. 在您的传输使用 Apple 推送传递时启用推送通知。
  2. 在您的应用程序使用 VoIP 推送流时启用语音 over IP 背景模式。
  3. 将 incoming-call 事件传递给您的应用程序并在 Capacitor 桥可用时立即调用此插件。

If your ring event exists only in JavaScript, you will get the best experience while the app is already running in the foreground.

CallKit does not replace your media SDK. If the real call session uses microphone or camera access, those usage descriptions still belong in your app:

<key>NSMicrophoneUsageDescription</key>
<string>This app uses the microphone for calls.</string>
<key>NSCameraUsageDescription</key>
<string>This app uses the camera for video calls.</string>

只添加您的真实呼叫流程需要的键。

  • PushKit 和 APNs 注册
  • 身份验证和令牌刷新
  • 加入真实房间或 VoIP 会话后 callAccepted
  • 结束或恢复远程呼叫状态时,插件发射 callDeclined, callEnded,或者 callTimedOut

如果您正在使用 iOS 来规划原生插件的工作,连接它与 使用@capgo/capacitor-incoming-call-kit 为原生能力在使用@capgo/capacitor-incoming-call-kit, Capgo插件目录 为产品工作流程在Capgo插件目录, Capacitor由Capgo的插件 为实现细节在Capacitor由Capgo的插件, 添加或更新插件 为添加或更新插件的实现细节, 和 Ionic 企业插件替代品 为Ionic 企业插件替代品的产品工作流程.