IOS实现Voip应用后台运行需要的几个配置项
轉自出處:http://blog.csdn.net/wzzvictory/article/details/8815590
IOS實現Voip應用后臺運行需要的幾個配置項
作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/8815590 轉載請注明出處 如果覺得文章對你有所幫助,請通過留言或關注微信公眾帳號wangzzstrive來支持我,謝謝!
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內容的時候,只保證超時時間到之前會執行,而不保證準確的執行時間點,系統是會根據當時的任務情況等系統條件確定一個合適的時間點,已達到延長電池壽命的目的。
總結
以上是生活随笔為你收集整理的IOS实现Voip应用后台运行需要的几个配置项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 传统蒙文字体_关于传统蒙古文网页的国际标
- 下一篇: 遭遇“烧钱瓶颈” 优酷成本结构堪忧