iOS socket保持后臺連接 ios9.0 xcode8.0
可以保持后臺,但申請上架是肯定會被拒的
本教程是基于AsyncSocket庫的簡單開發!
socket機制今天就不說了,畢竟百度上太多太詳盡了!
1.先new一個工程;
?2.要寫socket的界面遵循<</span>AsyncSocketDelegate>代理方法;?如圖
Paste_Image.png
遵循代理方法
3.創建全局的服務發送端;如圖
Paste_Image.png
服務端
?4.在viewDidLoad里實例化服務器對象并綁定端口號;
Paste_Image.png
服務端實力方法
?這里需要注意的是:端口最大為65535 其中端口建議設置為5000以上,另外還有一些特殊端口,例如8080端口為視頻端口,建議不要占用
5.實現AsyncSocket的代理方法?:
這里可以創建一個可變數組socketArray,用來保存接入的?鏈接,并保持鏈接;
下圖的-1代表持續監聽,如果設置為100,就是100秒后不在監聽;?
Paste_Image.png
有鏈接接入則會走此代理
Paste_Image.png
用于接收新鏈接發送的消息
注意:iOS的機制是進入后臺后程序就會進入休眠狀態!這樣就導致socket無法進行持續通信,接下來就講解怎樣破了它!
?1.首先:plist中加入
Paste_Image.png
voip
或者配置如下圖所示
?
Paste_Image.png
勾選下面兩項 主要勾選這兩項就能保持socket連接
2.然后在AppDelegate中的進入后臺和返回工程里的代理實現如圖的方法
Paste_Image.png
進入后臺后和系統借用時間
?
Paste_Image.png
重新回來后歸還時間
接下來在這里寫個定時器后就實現了程序在后臺持續工作了!
Paste_Image.png
定時器
?
完成這些后就可以在網頁上訪問:127.0.0.1:5019 看看控制臺的輸出了~?
git:https://github.com/SingleTap?