跳到内容

Cordova VoIP 通话

Pushwoosh 使用 pushwoosh-cordova-plugin 支持 iOS 和 Android 的 VoIP 风格通话通知。这可以启用原生 VoIP 通话功能,包括来电 UI 和通话控制事件。

1. 添加并启用 VoIP 功能的 Pushwoosh Cordova 插件

Anchor link to

安装插件并启用 VoIP 标志:

Terminal window
cordova plugin add pushwoosh-cordova-plugin --variable PW_VOIP_IOS_ENABLED=true --variable PW_VOIP_ANDROID_ENABLED=true

这会将插件配置为在 iOS 上支持 VoIP 功能。

2. 添加 PushwooshVoIP CocoaPod 依赖项

Anchor link to

请确保 PushwooshVoIP pod 通过插件自动包含。如果需要,请在您的 Podfile 中手动验证:

pod 'PushwooshVoIP'

此 pod 是支持基于 PushKit 的 VoIP 通知和系统级通话处理所必需的。

3. 在 Xcode 中启用 VoIP 后台模式

Anchor link to

在 Xcode 中打开您的项目并按照以下步骤操作:

  1. 前往 Signing & Capabilities。
  2. 添加 Background Modes 功能。
  3. 选中 Voice over IP 选项。

这允许您的应用在后台时接收传入的 VoIP 推送。

4. 配置 VoIP 应用代码(如果同时使用 VoIP 和常规推送)

Anchor link to

如果您的应用同时使用标准推送和 VoIP 推送,您必须在 VoIP 初始化之前明确设置 VoIP 应用代码:

pushwoosh.setVoipAppCode("XXXXX-XXXXX");

将 "XXXXX-XXXXX" 替换为您在 Pushwoosh 控制面板中分配给已启用 VoIP 功能的应用的 Pushwoosh App Code。

5. 在 Android 上请求通话权限

Anchor link to

在 Android 上,您需要请求用户授予接收通话的权限。为此,请调用 requestCallPermission() 方法。这应在注册设备之前完成。

pushwoosh.requestCallPermission();

6. 初始化 VoIP 参数

Anchor link to

调用以下方法来初始化 VoIP 功能:

PushNotification.prototype.initializeVoIPParameters = function(supportsVideo, ringtoneSound, handleTypes, success, error) {
if (typeof handleTypes === "function") {
error = ringtoneSound;
success = supportsVideo;
handleTypes = undefined;
ringtoneSound = undefined;
supportsVideo = undefined;
}
exec(success, error, "PushNotification", "initializeVoIPParameters", [
!!supportsVideo,
ringtoneSound || "",
handleTypes != null ? Number(handleTypes) : 1
]);
};
  • supportsVideo – true 或 false,取决于您的应用是否支持视频通话
  • ringtoneSound – 自定义铃声文件名(例如 "incoming.caf"),或使用空字符串表示默认铃声
  • handleTypes – 通话句柄类型的数字位掩码(1 代表电话号码,2 代表电子邮件等)

7. 可用的 VoIP 回调和方法

Anchor link to

Cordova 插件支持以下与 VoIP 相关的方法和事件:

  • answer – 当用户接听来电时调用
  • endCall – 当用户结束当前通话时调用
  • hangup – 当通话被挂断时调用
  • reject – 当来电被拒绝时调用
  • muted – 切换静音状态,仅限 iOS
  • held – 切换保持状态,仅限 iOS
  • voipPushPayload – 返回传入 VoIP 通话的推送负载
  • incomingCallSuccess – 当系统通话 UI 成功显示时调用,仅限 iOS
  • incomingCallFailure – 当系统通话 UI 显示失败时调用,仅限 iOS
  • speakerOn – 打开扬声器
  • speakerOff – 关闭扬声器
  • playDTMF – 在通话期间播放 DTMF 音,仅限 iOS

这些可以使用 Cordova 的 PushNotification 对象进行挂钩,从而允许您控制和响应 VoIP 通话状态的变化。

相关链接

Anchor link to