iOS VOIP

1、IOS允許App的一個(gè)Socket在App切換到后臺(tái)后仍然保持連接. 這樣,當(dāng)有通話請(qǐng)求的時(shí)候,App能及時(shí)處理. 這個(gè)socket需要在應(yīng)用第一次啟動(dòng)的時(shí)候創(chuàng)建, 并標(biāo)記為"此socket用于VoIP服務(wù)". 這樣當(dāng)App切換到后臺(tái)的時(shí)候,IOS會(huì)接管這個(gè)標(biāo)記為"用于VoIP服務(wù)"的socket. 這個(gè)socket的響應(yīng)函數(shù)(比如,一個(gè)delegate,或者是個(gè)block)會(huì)正常的響應(yīng), 就像App還在前臺(tái)一樣.

2、10s魔咒. 當(dāng)socket有任何數(shù)據(jù)從服務(wù)端傳來(lái), 你在app里為socket寫的響應(yīng)函數(shù)都會(huì)做處理.但是, 你只有最多10s的時(shí)間來(lái)干你想干的事情. 也就意味著你在響應(yīng)函數(shù)里新建一個(gè)大于10s的timer是沒(méi)有意義的. 并且IOS并不保證給你足夠10s的時(shí)間,視系統(tǒng)情況而定.

3某抓、在socket的響應(yīng)函數(shù)里, 你能通過(guò)NSLocalNotification來(lái)通知用戶"電話來(lái)了". 除此之外, 你沒(méi)法做其他任何視覺上的動(dòng)作來(lái)提醒用戶, 因?yàn)槟愕腶pp還處于某個(gè)不知道的次元, 甚至連window都還沒(méi)創(chuàng)建.

4、你永遠(yuǎn)也沒(méi)有辦法知道或者決定NSLocalNotification的樣式是banner還是alert. 你也許鐘愛后者, 但是決定權(quán)在用戶手里.

5州藕、允許在后臺(tái)定期執(zhí)行一段代碼. 你可以設(shè)定一個(gè)大于等于10分鐘的時(shí)間t, 和一個(gè)定期執(zhí)行的handler, IOS系統(tǒng)會(huì)在每次經(jīng)過(guò)t時(shí)間的時(shí)候調(diào)用一次這個(gè)handler. 但是IOS不保證這個(gè)handler會(huì)準(zhǔn)時(shí)運(yùn)行, 只保證在時(shí)間t范圍內(nèi)的某個(gè)點(diǎn)會(huì)執(zhí)行一次.

6换棚、我們通常用樓上的handler處理socket的斷線重連操作. 因?yàn)榫W(wǎng)絡(luò)不穩(wěn)定, 或者用戶開啟飛行模式等原因, 我們用于voip服務(wù)的socket會(huì)斷開連接. 在這個(gè)handler里,如果發(fā)現(xiàn)連接斷開,我們只需要跟條目1一樣的創(chuàng)建socket,設(shè)置一樣的socket響應(yīng)函數(shù),一切又會(huì)恢復(fù)正常.

7浓领、不建議這個(gè)handler做太多事情, 因?yàn)樗灿?0s魔咒.(據(jù)不完全統(tǒng)計(jì),蘋果所有的后臺(tái)處理都有這個(gè)10s限制. 不保證絕對(duì)正確哈, 僅供參考)

8、自啟服務(wù). 當(dāng)IOS重新啟動(dòng), 或者你的app因?yàn)槠渌蛲顺鰰r(shí), IOS會(huì)馬上啟動(dòng)你注冊(cè)為voip的app, 你可以很迅速的恢復(fù)socket連接. 但是, 從底部多任務(wù)欄中手動(dòng)關(guān)閉應(yīng)用除外.更"code"的說(shuō)明是:當(dāng)程序退出的exitcode != 0,IOS會(huì)重啟你的app.經(jīng)試驗(yàn)發(fā)現(xiàn),從底部多任務(wù)欄關(guān)閉的時(shí)候,程序的exitcode == 0.

9苦丁、如果你親愛的用戶是一個(gè)典型的"app終結(jié)者",那么你還剩最后一條路來(lái)通知來(lái)電提醒:NSRemoteNotification. 你也許會(huì)被NSRemoteNotification的可靠性和實(shí)時(shí)性折騰的抓狂, 但是, 誰(shuí)讓你選了IOS? 你享受了封閉帶來(lái)的傳世體驗(yàn), 也得承受封閉的限制.

10浸颓、當(dāng)條目8描述的情況發(fā)生之后,app的application:didFinishLaunchingWithOptions:會(huì)被調(diào)用. 但是,請(qǐng)時(shí)刻提醒自己我們的app仍然處于后臺(tái). 我們以前總在這里創(chuàng)建window創(chuàng)建rootController, 但現(xiàn)在不必了. 現(xiàn)在我們需要的就是把可愛的socket連上, 像在條目1里一樣,讓一切回歸正常(我不去寫歌詞真浪費(fèi)了_).

11、在application:didFinishLaunchingWithOptions:里你能通過(guò)[application applicationState] == UIApplicationStateBackground來(lái)判斷是正常啟動(dòng)應(yīng)用還是系統(tǒng)自動(dòng)啟動(dòng), 然后決定該創(chuàng)建window還是創(chuàng)建voip的socket.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旺拉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子棵磷,更是在濱河造成了極大的恐慌蛾狗,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仪媒,死亡現(xiàn)場(chǎng)離奇詭異沉桌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)算吩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門留凭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人偎巢,你說(shuō)我怎么就攤上這事蔼夜。” “怎么了压昼?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵求冷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我窍霞,道長(zhǎng)匠题,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任但金,我火速辦了婚禮韭山,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己钱磅,他們只是感情好梦裂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著续搀,像睡著了一般塞琼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上禁舷,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天彪杉,我揣著相機(jī)與錄音,去河邊找鬼牵咙。 笑死派近,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洁桌。 我是一名探鬼主播渴丸,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼另凌!你這毒婦竟也來(lái)了谱轨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吠谢,失蹤者是張志新(化名)和其女友劉穎土童,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體工坊,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡献汗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了王污。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罢吃。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖昭齐,靈堂內(nèi)的尸體忽然破棺而出尿招,到底是詐尸還是另有隱情,我是刑警寧澤司浪,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布泊业,位于F島的核電站,受9級(jí)特大地震影響啊易,放射性物質(zhì)發(fā)生泄漏吁伺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一租谈、第九天 我趴在偏房一處隱蔽的房頂上張望篮奄。 院中可真熱鬧仿耽,春花似錦颂碧、人聲如沸狞玛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)夸赫。三九已至菩帝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茬腿,已是汗流浹背呼奢。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留切平,地道東北人握础。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像悴品,于是被迫代替她去往敵國(guó)和親禀综。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容