首頁(yè)>>>技術(shù)>>>VoIP

發(fā)表評論分享按鈕

iOS上VOIP應用使用蘋(píng)果網(wǎng)絡(luò )終端服務(wù)APNs省電

2012/03/05

  近日在網(wǎng)上看到一個(gè)文章,介紹 iPhone、Android 上的熱門(mén)的 VOIP 應用 Viber ,曰:

  它可以完全運行在后臺,且不會(huì )耗電,即便是不運行在后臺,你照樣可以撥打免費電話(huà)和發(fā)免費短信。


  應該說(shuō),這些說(shuō)法從技術(shù)上看并不嚴謹。首先,從這段文字能得到一個(gè)模糊的印象,一個(gè)在后臺運行的程序,并且不會(huì )耗電;其次,“程序即便是不運行在后臺,照樣可以撥打免費電話(huà)和發(fā)短信”,這如何理解呢?程序運行在前臺能否撥打免費電話(huà)?程序壓根不運行時(shí)能否撥打電話(huà)?

  VOIP 應用是一種必須實(shí)現為“多任務(wù)”的業(yè)務(wù),這種業(yè)務(wù)通常是耗電的大戶(hù)。因此這段文字背后引出其中一個(gè)有趣的技術(shù)問(wèn)題,智能設備上的多任務(wù)的業(yè)務(wù)如何能夠“不會(huì )耗電”?

  讓我們先看看智能手機上的電池電量限制與多任務(wù)需求的關(guān)系。

  智能手機上電池電量限制與多任務(wù)需求

  智能手機與桌面電腦的根本區別在于智能手機本身的硬件尺寸與電池電量大小,電池電量對智能手機來(lái)說(shuō)是關(guān)鍵而致命的限制,人們要求手機越來(lái)越輕薄,功能越來(lái)越強大,然而待電時(shí)間卻要求越來(lái)越長(cháng),這不是“又要馬兒跑又要馬兒不吃草”的事情么!為此,智能手機上的電池電量正如沙漠中的水,一點(diǎn)一滴都不可以浪費。

  為了節約電池的電量,智能手機上的操作系統的一個(gè)基本策略是,盡量減少正在運行的程序,這個(gè)道理很簡(jiǎn)單,運行的程序越多,需要耗費的 CPU 計算時(shí)間就越多,電量就省不下來(lái)。下面的圖是蘋(píng)果 iOS 設備應用程序調度狀態(tài)圖,事實(shí)上蘋(píng)果設備是除了用戶(hù)正在操作的程序,其他打開(kāi)的程序進(jìn)程盡可能都放到“掛起(Suspended)”的狀態(tài)下。在“掛起”的狀態(tài)下面,程序進(jìn)程處在休眠狀態(tài),不耗費 CPU 計算能力。當用戶(hù)沒(méi)有對設備進(jìn)行操作的時(shí)候,整個(gè)系統處在休眠的低電狀態(tài)。(這里進(jìn)程的意思是:程序運行實(shí)例)


  智能手機上的 VOIP,作為一種多任務(wù)型的業(yè)務(wù),卻恰恰踩在耗電的雷區上。VOIP 類(lèi)的應用需要實(shí)現為多任務(wù)原因是需要維持應用應用與服務(wù)器之間的長(cháng)期的網(wǎng)絡(luò )連接,當網(wǎng)絡(luò )側的來(lái)電呼叫到達的時(shí)候,提示用戶(hù)進(jìn)行接聽(tīng)。因此程序有“長(cháng)期存活”的“待機”需求,后臺長(cháng)期存活的程序僅僅能處在“后臺(Background)”的狀態(tài)下面,這個(gè)狀態(tài)下的程序進(jìn)程,需要耗費 CPU 計算能力和電量。為何叫做“多任務(wù)”型的業(yè)務(wù)呢,意思是由于此業(yè)務(wù)的存在,除了用戶(hù)交互的程序進(jìn)程,還存在另外的“存活”進(jìn)程。

  蘋(píng)果 iOS 設備的 VOIP 實(shí)現

  正是由于對程序耗電量的錙銖必較,蘋(píng)果公司曾經(jīng)拒絕實(shí)現“真正”的多任務(wù),使用“快速程序切換”來(lái)緩解用戶(hù)對大部分“多任務(wù)”的需求,如今,相信蘋(píng)果的研發(fā)團隊是在做了艱難的平衡之后,決定允許部分業(yè)務(wù)實(shí)現為“多任務(wù)”。這些業(yè)務(wù)主要是上文提到的后臺的音樂(lè )播放、后臺的 GPS 定位服務(wù)、新聞?dòng)嗛啒I(yè)務(wù)的后臺定期更新、VOIP 應用等等,并為后臺業(yè)務(wù)實(shí)現提供嚴格的開(kāi)發(fā)指引。VOIP類(lèi)的業(yè)務(wù)正是蘋(píng)果公司強制管理的一種“多任務(wù)”業(yè)務(wù),如果開(kāi)發(fā)團隊不遵守架構限制,軟件將不能通過(guò)審核和在蘋(píng)果應用商城上發(fā)布,而 Viber,在 iOS 平臺上,應該是遵循了該架構。

  讓我們來(lái)看看蘋(píng)果公司為VOIP實(shí)現,這種架構下如何可能達到省電的目標。

  下面描述的文字非開(kāi)發(fā)指引,僅僅為了幫助理解 VOIP 應用進(jìn)程的調度過(guò)程(需要一定的軟件開(kāi)發(fā)背景來(lái)理解):

  1、VOIP 應用需要在 Info.plist 里配置 UIBackgroundModes 的值為 “VOIP” ,告知系統,此乃 VOIP 應用。

  2、程序配置用于 VOIP 業(yè)務(wù)的網(wǎng)絡(luò )連接(Socket),告知系統,在程序進(jìn)程被調度到“掛起(Suspended)”狀態(tài)時(shí)該特殊的網(wǎng)絡(luò )連接需要被系統接管,因此,此時(shí)網(wǎng)絡(luò )連接仍然是活動(dòng)的。當網(wǎng)絡(luò )連接有新的數據到達的時(shí)候,程序將從“掛起(Suspended)” 狀態(tài)被喚醒到“后臺 (Background)”狀態(tài),如果是個(gè)來(lái)電事件,VOIP應用則發(fā)起一個(gè)本地提醒事件,此時(shí)用戶(hù)可以在設備的界面上看到來(lái)電提醒,如果用戶(hù)選擇接聽(tīng)來(lái)電,則 VOIP 應用被調度到前端的“活動(dòng) (Active)”狀態(tài)直接與用戶(hù)交互,否則,回退到低電的“掛起(Suspended)”狀態(tài)。下圖可以看到左圖是傳統的 VOIP 應用,在“待機”狀態(tài)下整個(gè)程序都運行在耗電的“后臺 (Background)”狀態(tài),右圖是蘋(píng)果的 VOIP 實(shí)現,僅僅網(wǎng)絡(luò )連接運行在耗電的“后臺 (Background)”狀態(tài)。其余系統部分運行在低電的“掛起(Suspended)”狀態(tài)。



  3、安裝 Keep-Alive 的處理函數維持與服務(wù)器端的長(cháng)連接。VOIP應用將被周期性從“掛起(Suspended)”狀態(tài)調度到“后臺 (Background)”,使 Keep-Alive 的處理函數能夠定期向網(wǎng)絡(luò )服務(wù)器發(fā)送“心跳”的網(wǎng)絡(luò )包。

  總結:在 iOS 實(shí)現的 VOIP 方案中,應用進(jìn)程可以看作兩部分,一部分是需要系統內核看管的網(wǎng)絡(luò )連接和系統的定期喚醒服務(wù),另一部分是 VOIP 的程序邏輯,在 VOIP 的狀態(tài)下,后一部分被放到了低電的“掛起(Suspended)”狀態(tài),最少的使用了 CPU,因此可以達到省電的效果。

  為何能夠更省電

  然后,回到關(guān)于Viber的問(wèn)題,如何“程序即便是不運行在后臺,照樣可以撥打免費電話(huà)和短信”?據考究,實(shí)際上應為“即便程序不運行,照樣可以接聽(tīng)電話(huà)和短信”。原因是,撥打電話(huà)和短信,肯定必須有用戶(hù)的交互操作,程序只能處在“活動(dòng)(Active)狀態(tài)”,不可能是不運行的。根據Viber的網(wǎng)站的資料,Viber 使用了蘋(píng)果的 APNs(Apple Push Notification Service)功能,當用戶(hù)有電話(huà)撥入或者短信發(fā)送過(guò)來(lái)的時(shí)候,此時(shí)才加載 Viber 應用。APNs 服務(wù)是一種 Apple 公司的網(wǎng)絡(luò )端服務(wù),用來(lái)向蘋(píng)果設備推送消息,通常也用來(lái)實(shí)現郵件推送等功能。

  當然,使用 APNs 的方式提醒用戶(hù)來(lái)電和短信,可以更加省電,在“待機”期間,Viber 程序可以根本沒(méi)有運行,僅僅當有來(lái)電和短信的時(shí)候借用了系統提供的 APNS 服務(wù)來(lái)喚醒和加載應用。

  終極的省電方式

  當然,無(wú)論如何優(yōu)化,這種 VOIP 應用相比起傳統語(yǔ)音實(shí)現來(lái)說(shuō)仍然是耗電的,因為整個(gè)系統(智能手機的 AP 部分)不能休眠。在傳統的非 VOIP 話(huà)音業(yè)務(wù)中,如果沒(méi)有來(lái)電和用戶(hù)操作,整個(gè)系統是休眠的,僅僅是基帶芯片(智能手機的 CP 部分)在工作,負責維護與電信運營(yíng)商基站的連接,這無(wú)疑是最省電的一種工作方式。

騰訊科技



相關(guān)閱讀:
Vizio發(fā)布支持Skype的高清電視組件 2012-03-05
Trading Solutions公司和GENBAND達成戰略聯(lián)盟 2012-03-01
GENBAND助英國電信提供創(chuàng )新型全球IP交換互連服務(wù) 2012-02-27
Twiliot推iOS版SDK:任何應用都可打VoIP電話(huà) 2012-02-27
Vonage整合VoIP與新型IM 開(kāi)辟融合通信新路徑 2012-02-27

熱點(diǎn)專(zhuān)題:  VoIP  
分類(lèi)信息:  VoIP_與_移動(dòng)

亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 宿松县| 阿瓦提县| 桃园县| 太湖县| 伊春市| 神农架林区| 霞浦县| 普洱| 花垣县| 吉水县| 崇文区| 武隆县| 徐州市| 马龙县| 调兵山市| 介休市| 于都县| 乐安县| 化州市| 郓城县| 桃江县| 陕西省| 延寿县| 乌兰察布市| 兰溪市| 南汇区| 巴林左旗| 集安市| 海原县| 黔东| 余庆县| 临湘市| 抚远县| 甘谷县| 广州市| 平泉县| 武胜县| 平阴县| 昆明市| 保定市| 广元市| http://444 http://444 http://444 http://444 http://444 http://444