IOS实现Voip应用后台运行需要的几个配置项
轉(zhuǎn)自出處:http://blog.csdn.net/wzzvictory/article/details/8815590
IOS實(shí)現(xiàn)Voip應(yīng)用后臺(tái)運(yùn)行需要的幾個(gè)配置項(xiàng)
作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/8815590 轉(zhuǎn)載請(qǐng)注明出處 如果覺(jué)得文章對(duì)你有所幫助,請(qǐng)通過(guò)留言或關(guān)注微信公眾帳號(hào)wangzzstrive來(lái)支持我,謝謝!
voip類的app允許用戶使用Internet網(wǎng)絡(luò)而不是手機(jī)的蜂窩網(wǎng)絡(luò)打電話,因此這一類的app需要保持同它相關(guān)的服務(wù)的網(wǎng)絡(luò)連接,用以厚道來(lái)電消息和其他數(shù)據(jù)。IOS系統(tǒng)不是通過(guò)一直讓app處于激活狀態(tài)來(lái)達(dá)到這個(gè)目的,而是同樣也會(huì)將這類的app掛起,但同時(shí)會(huì)在app被掛起期間接管它的sockets,當(dāng)這個(gè)sockets有數(shù)據(jù)通信時(shí),系統(tǒng)會(huì)再次喚醒處于掛起狀態(tài)的app,同時(shí)將sockets的控制權(quán)交還給app,以讓其正常的處理來(lái)去電事件和其他數(shù)據(jù)。
一、一個(gè)voip應(yīng)用需要有下面幾個(gè)要求:
1、在Info.plist中增加UIBackgroundModes鍵,并將值設(shè)為voip;
2、為該app配置sockets,并注冊(cè)到系統(tǒng)上,以便app切到后臺(tái)時(shí)系統(tǒng)會(huì)接管這個(gè)sockets;
3、在app切到后臺(tái)之前,要調(diào)用setKeepAliveTimeout:handler:方法來(lái)注冊(cè)一個(gè)周期性執(zhí)行的handler,用于保持app和服務(wù)器的連接;
4、配置一個(gè)音頻會(huì)話(audio session)。
二、UIBackgroundModes鍵的voip值有三個(gè)功能:
1、告知系統(tǒng)在app切到后臺(tái)的時(shí)候接管它的sockets;
2、這個(gè)鍵值的另外一個(gè)功能是允許app在后臺(tái)播放音頻,跟UIBackgroundModes的audio值起到的作用相同。
3、后臺(tái)狀態(tài)的app在系統(tǒng)確定voip服務(wù)可用的時(shí)候會(huì)立即重新加載(relaunched)
三、配置keep-alive handler
一個(gè)voip類的app需要周期性的被喚醒以防止失去跟服務(wù)器的連接。為了達(dá)到這個(gè)目的,IOS系統(tǒng)允許我們通過(guò)setKeepAliveTimeout:handler:方法來(lái)實(shí)現(xiàn)保持連接。通常我們都在軟件切到后臺(tái)以后,也就是在applicationDidEnterBackground:才需要實(shí)現(xiàn)保持連接的方法。Handler配置完后,系統(tǒng)會(huì)根據(jù)需要在time out設(shè)置的時(shí)間到期之前喚醒處于掛起狀態(tài)的app,至少被調(diào)用一次handler中的方法。
1、 handler
需要說(shuō)明的是,這個(gè)handler在后臺(tái)執(zhí)行的時(shí)候需要盡可能快的返回,因?yàn)橄到y(tǒng)只給了最多10s的時(shí)間去執(zhí)行它。如果10s內(nèi)沒(méi)有執(zhí)行完,而且沒(méi)有去申請(qǐng)額外的執(zhí)行時(shí)間,系統(tǒng)將會(huì)吧app掛起。
2、timeout
設(shè)置handler時(shí),需要指定app需要的最大超時(shí)時(shí)間。IOS系統(tǒng)允許的最小值是600s,如果想設(shè)置個(gè)小點(diǎn)的值,handler的設(shè)置就會(huì)失敗。系統(tǒng)在執(zhí)行handler內(nèi)容的時(shí)候,只保證超時(shí)時(shí)間到之前會(huì)執(zhí)行,而不保證準(zhǔn)確的執(zhí)行時(shí)間點(diǎn),系統(tǒng)是會(huì)根據(jù)當(dāng)時(shí)的任務(wù)情況等系統(tǒng)條件確定一個(gè)合適的時(shí)間點(diǎn),已達(dá)到延長(zhǎng)電池壽命的目的。
總結(jié)
以上是生活随笔為你收集整理的IOS实现Voip应用后台运行需要的几个配置项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 传统蒙文字体_关于传统蒙古文网页的国际标
- 下一篇: 银河麒麟系统安装字体