跳到内容

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
]);
};
  • supportsVideotruefalse,取决于您的应用是否支持视频通话
  • 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