iOS socket保持后臺(tái)連接 ios9.0 xcode8.0
可以保持后臺(tái),但申請上架是肯定會(huì)被拒的
本教程是基于AsyncSocket庫的簡單開發(fā)!
socket機(jī)制今天就不說了,畢竟百度上太多太詳盡了!
1.先new一個(gè)工程;
?2.要寫socket的界面遵循<</span>AsyncSocketDelegate>代理方法;?如圖

遵循代理方法
3.創(chuàng)建全局的服務(wù)發(fā)送端;如圖

服務(wù)端
?4.在viewDidLoad里實(shí)例化服務(wù)器對象并綁定端口號;

服務(wù)端實(shí)力方法
?這里需要注意的是:端口最大為65535 其中端口建議設(shè)置為5000以上,另外還有一些特殊端口,例如8080端口為視頻端口,建議不要占用
5.實(shí)現(xiàn)AsyncSocket的代理方法?:
這里可以創(chuàng)建一個(gè)可變數(shù)組socketArray,用來保存接入的?鏈接,并保持鏈接;
下圖的-1代表持續(xù)監(jiān)聽,如果設(shè)置為100,就是100秒后不在監(jiān)聽;?

有鏈接接入則會(huì)走此代理

用于接收新鏈接發(fā)送的消息
注意:iOS的機(jī)制是進(jìn)入后臺(tái)后程序就會(huì)進(jìn)入休眠狀態(tài)!這樣就導(dǎo)致socket無法進(jìn)行持續(xù)通信,接下來就講解怎樣破了它!
?1.首先:plist中加入

voip
或者配置如下圖所示
?

勾選下面兩項(xiàng) 主要勾選這兩項(xiàng)就能保持socket連接
2.然后在AppDelegate中的進(jìn)入后臺(tái)和返回工程里的代理實(shí)現(xiàn)如圖的方法

進(jìn)入后臺(tái)后和系統(tǒng)借用時(shí)間
?

重新回來后歸還時(shí)間
接下來在這里寫個(gè)定時(shí)器后就實(shí)現(xiàn)了程序在后臺(tái)持續(xù)工作了!

定時(shí)器
?
完成這些后就可以在網(wǎng)頁上訪問:127.0.0.1:5019 看看控制臺(tái)的輸出了~?
git:https://github.com/SingleTap?