IOS实现Voip应用后台运行需要的几个配置项

voip类的app允许用户使用Internet网络而不是手机的蜂窝网络打电话,因此这一类的app需要保持同它相关的服务的网络连接,用以厚道来电消息和其他数据。IOS系统不是通过一直让app处于激活状态来达到这个目的,而是同样也会将这类的app挂起,但同时会在app被挂起期间接管它的sockets,当这个sockets有数据通信时,系统会再次唤醒处于挂起状态的app,同时将sockets的控制权交还给app,以让其正常的处理来去电事件和其他数据。

一、一个voip应用需要有下面几个要求:

1、在Info.plist中增加UIBackgroundModes键,并将值设为voip;

2、为该app配置sockets,并注册到系统上,以便app切到后台时系统会接管这个sockets;

3、在app切到后台之前,要调用setKeepAliveTimeout:handler:方法来注册一个周期性执行的handler,用于保持app和服务器的连接;

4、配置一个音频会话(audio session)。

二、UIBackgroundModes键的voip值有三个功能:

1、告知系统在app切到后台的时候接管它的sockets;

2、这个键值的另外一个功能是允许app在后台播放音频,跟UIBackgroundModes的audio值起到的作用相同。

3、后台状态的app在系统确定voip服务可用的时候会立即重新加载(relaunched)

三、配置keep-alive handler

一个voip类的app需要周期性的被唤醒以防止失去跟服务器的连接。为了达到这个目的,IOS系统允许我们通过setKeepAliveTimeout:handler:方法来实现保持连接。通常我们都在软件切到后台以后,也就是在applicationDidEnterBackground:才需要实现保持连接的方法。Handler配置完后,系统会根据需要在time out设置的时间到期之前唤醒处于挂起状态的app,至少被调用一次handler中的方法。

1、 handler

需要说明的是,这个handler在后台执行的时候需要尽可能快的返回,因为系统只给了最多10s的时间去执行它。如果10s内没有执行完,而且没有去申请额外的执行时间,系统将会吧app挂起。

2、timeout

设置handler时,需要指定app需要的最大超时时间。IOS系统允许的最小值是600s,如果想设置个小点的值,handler的设置就会失败。系统在执行handler内容的时候,只保证超时时间到之前会执行,而不保证准确的执行时间点,系统是会根据当时的任务情况等系统条件确定一个合适的时间点,已达到延长电池寿命的目的。

      

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值