通常我们做及时通讯的消息,都是使用socket,原因其实很多,其中最重要的一点就是socket可以由服务器主动推送消息到客户端。
我们都知道在IOS中,我们的APP可以被切换到后台,当我们APP被切换到后台的时候,官方的说法是说,可以给我们300秒的时间,处理一些从前台进入后台的事情,但不一定是300秒,如果内存吃紧的情况的时候,就会被操作系统无情的kill掉。
通常客户端与服务器保持连接的方法通常是通过心跳包维护socket连接的,当我们的APP被切换到后台的时候,如果连接不断的话,那么我们的连接理论上是可以使用的,但这时候当服务器向客户端推送消息的时候我们应该怎么显示呢?
我在做这个的时候,曾经用过2种方式处理:
1、当我进入后台的时候把,我进入后台的状态,告诉服务器,让服务器进行推送消息到客户端(APNS),这样消息就可以显示到桌面上了,但这种方式消息反映往往比较迟钝。我们试想一下,用户会怎么样使用我们的软件呢?
步骤应该是这个样子的:打开APP---->聊天------->切到前台------>收到消息-------->打开APP进行聊天,后来经过讨论我们使用了第2中方式。
2、在线模式服务器推送消息。
其实就是当我们的APP在后台,并且socket是活着的时候,把socket的消息,用定时器的方式,模拟由操作系统的方式(模拟APNS),发送显示到桌面上。
大概的流程图如下:
时间: 2024-11-09 05:50:00