最近几天研究了一下SIP的重注册机制。
由于在移动开发中,移动终端的网络环境不稳定,时时会发生变化,因此给移动开发带来了很多问题。本文就SIP移动注册进行了研究与实现。
在SIP注册流程中,用户将自己的信息发往注册服务器,注册服务器确认用户身份后会将用户注册信息(特别是注册的IP地址)保存,直到用户下线或者注册有效期限到达。当用户移动时,如果网络切换,则用户的IP地址发生迁移,如果不能及时注册,则会导致服务器在接收到与该用户相关的请求时(如电话、消息等),不能将该请求正确路由到用户,就会出现A用户明明在线,却怎么也联系不到的问题。
本文通过Android广播机制,实现SIP移动中的重注册功能。
我们知道,Android中具有系统广播,系统广播会将系统的相关事件(如网络切换、低电量等)广播给所有的应用程序,应用程序可以通过广播接收器BroadcastReceiver来接收广播,得知系统状态的变化。
因此,我们需要设计实现一个可以监听并处理网络切换事件的广播接收器,每当网络切换时,获取该事件并重新向服务器注册。
<script src="https://code.csdn.net/snippets/685510.js"></script>
其中的mNetworkService.triggerSipRegistration()方法是主要的重注册方法,其根据当前的SIP注册状态决定如何进行重注册行为。
<script src="https://code.csdn.net/snippets/685510.js"></script>