使用GCDAsyncSocket应用在后台能接受消息吗?

不能.
即使加上以下代码也不可以

[asyncSocket enableBackgroundingOnSocket]

GCDAsyncSocket文档注释:

* Note: Apple does not officially support backgrounding server sockets.
* That is, if your socket is accepting incoming connections, Apple does not officially support
* allowing iOS applications to accept incoming connections while an app is backgrounded.

大概意思:苹果是不支持应用在后台长连接接受消息

那么微信和QQ是怎么在后台接受消息呢?

以下是个人猜测

后台推送消息,发现应用在后台,那么把这条或者多条消息以远程推送的形式推给App,当我们重新让应用在前台的时候,我们发现正在接受消息,也就是说远程推送过来的消息并没有存储到本地,只是作为提醒,打开App的时候,socket会继续推送的消息,并且存储到本地

你可能感兴趣的:(使用GCDAsyncSocket应用在后台能接受消息吗?)