我的IOS端SIP电话开发历程

本文讲述了作者在iOS端开发SIP电话的过程,包括PJSIP、linphone、siphon和idoubs等开源产品的评估与选择。重点讨论了linphone和idoubs的优缺点,以及iOS后台模式的知识,如beginBackgroundTaskWithExpirationHandler和setKeepAliveTimeout在VoIP应用中的使用。还介绍了iOS7以后后台功能的变化,如Background Fetch、静默推送和Background Transfer Service。
摘要由CSDN通过智能技术生成

先说下网络开源的sip产品:

1)PJSIP   这是一个开源库,研究的不多,因为没有那个时间去重最基本的区开发,毕竟不是专门做这方面的,所以直接去找做好的开源产品。


2)linphone    这是我最开始找到的开源产品,网上推荐率很高,音质十分清晰,适合做点对点语音,但是开始着手的时候遇到两个问题,一 是国外资源封杀的厉害,资源十分难下载; 二 是其编译实在麻烦,下了一堆库和编译环境,完全按照官网的步骤,发现还是有些地方编译不过,在linphone上的编译上就耗了我一周时间,最主要的还是网络限制,大部分编译环境和工具都得在国外网站下载,耗了比较多时间,一周之后,我果断放弃linphone,继续找其他开源产品。


3)siphon       在陆续找到很多开源sip产品后,最后选择了siphon;两个原因, 一  比较好编译  二  音质还不错,这个软件基本的带电话和接电话功能,不过经过使用发现其没有后台接电话功能,最扯是我快弄完的时候才发现没有后台。后台部分下面后说到,这里只列举下我遇到的开源sip产品。


4)idoubs      这个就牛B了,这是在我发现siphon没有后台后,在经过网上各种说如何实现VIOP后台的帖子折磨后找到的一个开源软件,音质和linphone不相上下,且实现点对点视频功能,可以说满足了大部分人得需求了,编译也十分简单,按官网步骤走即可,两个文件夹,一个doubango库,这是基础库,很好的封装了sip电话的各种功能,比较大,大概850M;一个是idoubs,这个实现了sip电话的UI部分,这个才23M。这个最重要的是实现了后台运行和接电话功能,就是可以home键切出后可以有来电提醒,不过这个和网上说的利用  TCP+socket 来实现后台不同的是,这是利用后台播放静默音乐来实现,后台部分也有些bug,如 接真实电话、音乐播放软件后台播放和暂停、微信的语音播放都会打断这个静默音乐的播放,导致后台失败,破解方法后面会说到。


杂谈   一一   ios4之后 和  ios7新增 的后台部分知识:

前言:iOS不是真正的多任务系统,在用户按下Home按钮后,所有应用程序都会进入后台状态,并且大部分都会迅速进入暂停状态,应用程序的所有工作内存都在RAM中,在暂停时它完全不执行。因此,切换回这样的应用程序非常快。但是如果系统需要更多的内存给当前处于活动状态的应用程序,就有可能终结暂停状态的应用程序,它们的内存也将被释放。

一方面,应用程序在进入后台状态时,需要释放一些资源,使自身的暂停快照更小,从而减少从RAM中清除的风险,另一方面,为了避免被终结而丢失用户的数据,需要在用户离开时保存他们的进度信息,这些工作,需要在5秒钟内完成,不然会被系统认定有异常被强制退出。可能通过接收应用程序发送的通知

   

ios4及之后

1)请求后台任务 (600s 以内)beginBackgroundTaskWithExpirationHandler ^{} 


作用 :  可以切后台后进行一些未完成的下载和比较重要的事情,如短时间的下载,消息的发送,未完成的上传,反正在600s内app可以做任何事情。

   注意:按home键后,会运行一段时间来执行代码,如无代码,3分钟左右执行block。

           按锁屏键后,ios6及之前会活跃来执行代码,但是在ios7中,后台任务处理方式发生改变,锁屏后后台任务暂时暂停已节省电力,之后在特定时间如检查邮件或接电话时,之前暂停的后台任务一起执行,就是说,系统不会专门为第三方应用保存设备处于活动状态。

 


    用法:

<p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo;">- (<span style="color: #35568a">void</span>) doUpdate</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo;">{</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo; color: rgb(88, 126, 168);"><span style="color: #000000">    [</span><span style="color: #35568a">self</span><span style="color: #000000"> </span>beginBackgroundUpdateTask<span style="color: #000000">];</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo; min-height: 21px;">    </p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo; color: rgb(207, 135, 36);"><span style="color: #000000">    </span>//<span style="font-family: 'Heiti SC Light';">重要任务 当然,这时app运行着,可以继续执行任何之前正在执行的代码  所有有时候重要任务只是sleep()<span style="white-space:pre">	</span>         <span style="color: rgb(207, 135, 36); font-family: Menlo; font-size: 18px; white-space: pre; background-color: rgb(240, 240, 240);">//</span>来请求时间运行app</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo; color: rgb(195, 89, 0);"><span style="color: #000000">    </span>NSURLRequest<s
SIP(Session Initiation Protocol)是一种用于实时通信的协议,常用于语音通话、视频通话和即时消息传递。IOS开发SIP应用需要使用第三方库或框架来实现SIP协议。 以下是IOS开发SIP应用的一般步骤: 1. 选择合适的SIP库或框架,目前比较流行的有pjsip、Linphone、Siphon等。 2. 下载并安装所选库或框架。 3. 创建Xcode项目,并在项目中添加所选库或框架的头文件和库文件。 4. 配置SIP服务器信息,包括服务器地址、口、用户名、密码等。 5. 实现SIP协议的各种功能,如注册、呼叫、接听、挂断等。 6. 实现音频和视频的采集、编解码、传输等功能。 7. 实现即时消息传递功能,包括文本、图片、文件等。 8. 测试并调试应用,确保其功能正常。 9. 发布应用到App Store,供用户下载和使用。 在实现IOS开发SIP应用时,需要注意以下几点: 1. SIP应用需要使用网络进行通信,因此需要保证网络连接的稳定性和安全性。 2. SIP应用需要使用麦克风和摄像头等硬件设备进行音视频采集和传输,因此需要考虑设备兼容性和性能问题。 3. SIP应用需要与其他SIP应用互通,因此需要考虑与其他SIP应用的兼容性和互操作性。 4. SIP应用需要保护用户的隐私和安全,因此需要采取相应的安全措施,如加密传输、用户认证等。 总之,IOS开发SIP应用需要具备一定的网络通信、音视频处理和安全保障方面的知识,同时需要熟悉所选SIP库或框架的使用方法和API。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值