Linphone 如何在 Android/iOS 上支持推送通知

Posted

技术标签:

【中文标题】Linphone 如何在 Android/iOS 上支持推送通知【英文标题】:How Linphone support push notifications on Android/iOS 【发布时间】:2014-01-25 21:10:14 【问题描述】:

我对分别在 iosandroid 上用于 SIP VoIP 的 APNS 和 GCM 推送通知感兴趣。

根据其Android应用程序的"Receive data from Internet" permission,看来Linphone可能支持GCM,根据http://www.linphone.org/eng/features/,可能同时支持APNS和GCM:

与推送通知集成(需要兼容的 SIP 服务器)

“兼容的 SIP 服务器”是什么意思?

我如何知道给定的 SIP 服务器是否兼容?

是否有这样的服务器开源?

这一切都仅限于Linphone自己的服务器吗?

我在 *** 上问这个问题,因为从开发人员的角度来看,我对此很感兴趣。

【问题讨论】:

你找到答案了吗? @Mimad,不,不是 @cnst 得到答案了吗? 【参考方案1】:

1) 兼容的 SIP 服务器是指支持“延迟分叉”的 SIP 服务器,即可以在设备注册时分叉邀请的服务器,即使在发送邀请时设备尚未注册。 (这是必需的,因为如果您使用移动 VoIP 应用程序的推送通知策略按照 iOS 10 及更高版本的要求,移动设备将在设备收到推送后才会注册,并且推送将与邀请同时发送)

2) 询问服务器管理员,或者如果这不是一个选项,请尝试注销您的设备、拨打电话并重新注册您的设备并查看邀请是否进入

3a) Kamillio 有一个名为 TSILO 的模块,它支持延迟分叉 here 是一个视频,它解释了推送通知策略是什么以及如何使用 TSILO 在 Kamillio 中实现它

3b) Linphone 有一个名为Flexisip 的开源代理服务器,它支持延迟分叉,如果它不支持延迟分叉,它可以在您当前的服务器之上使用。 Flexisip 可以安装在您自己的服务器或云平台上。与 Linphone 一样,Flexisip 拥有双重许可证、免费 AGPL 或商业许可证

4) 不,它不仅限于 Linphone 自己的服务器。

请记住,服务器仍然必须在邀请时发送推送通知(如果您使用 Flexisip 并正确配置它,Flexisip 将负责发送推送通知)。

【讨论】:

【参考方案2】:

根据@user8127814的回答:

我不认为 Linphone 与其他支持“后期分叉”的服务器兼容。推送服务需要每个设备都有一个唯一的身份,这意味着你需要通过 SIP 协议来传递这个东西。 Linphone 在联系人头中发送它(在 iOS 推送服务中称为设备 ID,名称可能在不同的推送服务中有所不同),它不是常规 SIP 标准的一部分。这意味着服务器必须准确地设计为能够识别此参数以支持推送功能,就像 Flexisip 一样。如果我错了,请纠正我。

【讨论】:

你是对的,但我没有得到一件事。即使我们使用推送通知,我们是否需要重新注册 @Pulkit 在这种情况下,是的。推送一到,您应该立即发送重新注册,否则您将无法收到邀请。这种重新注册的重要意义之一是开放端口,使INVITE可以通过NAT。推送通知本身不携带任何 SIP 有效负载。不涉及SIP协商。 很抱歉直到现在才回复。 SIP 的推送通知现在是 RFC 标准 tools.ietf.org/html/rfc8599。我认为 Linphone 支持它,但我不确定。 另外,如果您使用的是 LibLinphone,您可以配置自定义标头来发送设备 ID。

以上是关于Linphone 如何在 Android/iOS 上支持推送通知的主要内容,如果未能解决你的问题,请参考以下文章

SIP UserAgent (B2BUA client)——linphonec

如何配置星号即时消息以使用 linphone?

Linphone之Mediastreamer2分析

基于Linphone开发Android音视频通话

linphone - 构建时出错:未定义的引用

Android平台上的Linphone学习