Cordova VoIP 通话
Pushwoosh 使用 pushwoosh-cordova-plugin 支持 iOS 和 Android 的 VoIP 风格通话通知。这可以启用原生 VoIP 通话功能,包括来电 UI 和通话控制事件。
1. 添加并启用 VoIP 功能的 Pushwoosh Cordova 插件
Anchor link to安装插件并启用 VoIP 标志:
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 中打开您的项目并按照以下步骤操作:
- 前往 Signing & Capabilities。
- 添加 Background Modes 功能。
- 选中 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 toCordova 插件支持以下与 VoIP 相关的方法和事件:
answer– 当用户接听来电时调用endCall– 当用户结束当前通话时调用hangup– 当通话被挂断时调用reject– 当来电被拒绝时调用muted– 切换静音状态,仅限 iOSheld– 切换保持状态,仅限 iOSvoipPushPayload– 返回传入 VoIP 通话的推送负载incomingCallSuccess– 当系统通话 UI 成功显示时调用,仅限 iOSincomingCallFailure– 当系统通话 UI 显示失败时调用,仅限 iOSspeakerOn– 打开扬声器speakerOff– 关闭扬声器playDTMF– 在通话期间播放 DTMF 音,仅限 iOS
这些可以使用 Cordova 的 PushNotification 对象进行挂钩,从而允许您控制和响应 VoIP 通话状态的变化。