IOS及时通讯中消息的处理方式

通常我们做及时通讯的消息,都是使用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

IOS及时通讯中消息的处理方式的相关文章

在iOS微信浏览器中自动播放HTML5 audio(音乐)的2种正确方式

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"

IOS OS X 中集中消息的传递机制

1 KVO (key-value Observing) 是提供对象属性被改变是的通知机制.KVO的实现实在Foundation中,很多基于 Foundation 的框架都依赖与它.如果只对某一个对象的值的改变感兴趣的话.就可以使用KVO消息传递.满足KVO的前提条件:1接受者(接受对象改变的通知的对象)需要知道发送者(值会改变的对象):2,接受者需要知道发送者的生命周期,因为它需要在发送者被销毁前注销观察者身份.如果这两个要求都符合的话,这个消息传递机制可以一对多(多个观察者可以注册同一个对象的

ITMS-SERVICES://方式安装IPA在IOS 7.1中的变化

转:https://laoyur.com/?p=414 iOS7.1中,通过itms-services://方式安装ipa已经发生了改变,.plist文件必须是https://的,.ipa文件的链接则依然可以是http://的. 目前的解决方案大致有以下几种: Dropbox大法.把plist文件放到Dropbox上,生成一个https的下载链接. 用StarSSL之类的免费SSL服务获得SSL证书,来加密你的服务器. 没钱的穷屌丝可以自建CA,生成自签名SSL证书加密你的服务器,然后为你的CA

IOS开发之UI中开启动画的方式

UI中开启动画的方式 开启动画是UIImageView中的功能属性  有渐进式动画和序列帧动画 渐进式动画包括头尾式动画和block式动画 序列帧动画即为在极短时间内播放一组连续的图片所产生的动画效果 首先需要创建一个UIImageView对象为imageView1.序列帧动画基本步骤 将所要播放的图片数组赋值给UIImageView对象的animationImages属性,它就是一个数组对象 imageView.animationImages=array 设置动画的执行次数(animation

iOS 即时通讯,从入门到 “放弃”?

原文链接:http://www.jianshu.com/p/2dbb360886a8 本文会用实例的方式,将 iOS 各种 IM 的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. —— 由宇朋Look分享 前言 本文会用实例的方式,将iOS各种IM的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. 注:文中的所有的代码示例,在github中都有demo:iOS即时通讯,从入门到“放弃”?(demo)可以打开项目先预览效果,对照着进行阅读. 言归正传,首先我们来总

WCF中常用的binding方式

原文地址:http://www.cnblogs.com/Anima0My/archive/2008/04/16/1156146.html WCF中常用的binding方式: BasicHttpBinding: 用于把 WCF 服务当作 ASMX Web 服务.用于兼容旧的Web ASMX 服务.WSHttpBinding: 比 BasicHttpBinding 更加安全,通常用于 non-duplex 服务通讯.WSDualHttpBinding: 和 WSHttpBinding 相比,它支持 

iOS 处理方法中的可变參数

## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录下来,以备后需. 代码实现 - (instancetype)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelBu

WCF中常用的binding方式 z

WCF中常用的binding方式: BasicHttpBinding: 用于把 WCF 服务当作 ASMX Web 服务.用于兼容旧的Web ASMX 服务. WSHttpBinding: 比 BasicHttpBinding 更加安全,通常用于 non-duplex 服务通讯. WSDualHttpBinding: 和 WSHttpBinding 相比,它支持 duplex 类型的服务. WSFederationHttpBinding: WS-Federation 安全通讯协议. NetTcp

iOS即时通讯之CocoaAsyncSocket源码解析四

原文 前言: 本文为CocoaAsyncSocket源码系列中第二篇:Read篇,将重点涉及该框架是如何利用缓冲区对数据进行读取.以及各种情况下的数据包处理,其中还包括普通的.和基于TLS的不同读取操作等等.注:由于该框架源码篇幅过大,且有大部分相对抽象的数据操作逻辑,尽管楼主竭力想要简单的去陈述相关内容,但是阅读起来仍会有一定的难度.如果不是诚心想学习IM相关知识,在这里就可以离场了... 注:文中涉及代码比较多,建议大家结合源码一起阅读比较容易能加深理解.这里有楼主标注好注释的源码,有需要的