How Can We Help?
推送通知如何与 PortSIP PBX 配合运行?
互联网语音传输协议 (VoIP) 应用程序允许用户使用互联网连接而非设备的手机服务拨打和接听电话。 由于 VoIP 应用严重依赖网络,因此拨打电话会导致耗电量较大,这是正常现象。
VoIP 应用程序必须保持永久的服务器网络连接,以接收来电和其他数据。这意味着需要编写复杂的代码,在应用程序和服务器之间来回发送周期性消息,以保持服务器连接,即使应用程序未在使用也是如此。这种技术导致设备保持唤醒状态,非常耗费电量。同时也意味着如果用户退出 VoIP 应用,则无法接收来自服务器的呼叫。
有了推送通知,VoIP 应用不再需要时刻运行或在后台运行。在收到推送后,VoIP 应用可及时显示提醒,并提供接听或拒绝通话的选项。
使用推送通知可带来诸多益处:
- 仅当出现推送通知时才唤醒设备,节省电量。
- 推送通知被视为高优先级,需实时发送,不得延误。
- 通常,相比标准推送通知服务,VoIP 推送可包含更多数据。
- 如果您的应用在收到 VoIP 推送时没有运行,则会自动重新启动。
- 即使您的应用程序仅在后台运行,甚至强制终止,也可以在运行时处理推送。
PortSIP PBX 从 V9.0 开始支持 iOS 和 Android 版移动推送通知,所有 PortSIP 用户都将从此新功能获益。
1. PortSIP PBX 推送通知架构
以下架构显示了 PortSIP PBX 提供推送通知的方式。
2. 用于发送推送通知的呼叫流程
PortSIP 使用 APN 向 iOS 设备发送推送通知,使用 Google FCM 服务向 Android 设备发送推送通知。
- 应用从 Apple Push Notification Service (APNS)/Google FCM 请求一个设备令牌。
- 应用收到令牌,该令牌是推送通知发送至的地址。
- 应用使用 SIP REGISTER 消息向 PortSIP PBX 注册,必须在 REGISTER 消息中添加一个“x-p-push”消息头,并在消息头中包含设备令牌和其他必需信息,以此告知 PortSIP PBX,应用希望为此分机(例如分机 101)接收推送通知。
- 现在用户可强制退出应用。
- 有人呼叫 101 时,如果 101 注册未过期,PortSIP PBX 将向对应的地址发送 INVITE 消息,并向 APNS/FCM 发送带有设备令牌的推送通知。
- 由于应用已退出,无法接收到此 INVITE 信息。
- APNS/FCM 将向设备发送一条推送通知。
- iOS/Android 设备收到推送通知,然后向移动设备用户发出来电提醒,用户接听呼叫。
- 应用将会启动,并自动注册到 PortSIP PBX。
- 成功注册到 PortSIP PBX 后,PBX 会向新注册中收到的联系地址发送一条 INVITE 消息。
- 现在应用即可收到 INVITE 消息,并应答呼叫。
实时通信流程同上。
以下是 REGISTER 消息中的“x-p-push”消息头。
x-p-push:device-os=ios;device-uid=fe1b7bef1b4dc68dbfcd18143c8c06c122a25658c7f1d381c33fa626c9ed;allow-call-push=false;allow-message-push=false;app-id=com.portsip.portgo