iOS开发--即时通讯

什么是环信?

1.环信是一个第三平台,提供即时通信(IM–Instant Messaging )的服务

2.环信是在XMPP的基础上进行二次开发

3.环信在网络上传输的数据也是XML

4.使用环信,不用自己搭建服务器,节约成本

5.环信日活30万以下,永远免费

为什么要选择环信?

数据来源艾瑞:点击跳转

数据来源易观:点击跳转

集成环信前提准备:

1.注册成为环信开发者点击进入环信

2.在开发者后台创建APP获取Key

3.下载官方SDK DEMO点击查看

集成SDK步骤:

1.导入SDK

2. 设置工程属性

2.2 SDK依赖库有

注意:(如果使用的是xcode7,后缀为tbd) <官网有提示>

2.3 如果项目中使用-ObjC有冲突,可以添加-force_load来解决

2.4 SDK不支持bitcode,向Build Settings → Linking → Enable Bitcode中设置NO。

编译工程

以上步骤进行完后,编译工程,如果没有报错,恭喜你,集成sdk成功,可以进行下一步了。

SDK同步/异步方法区分:

SDK中,大部分与网络有关的操作,提供的是同步方法(注:同步方法会阻塞主线程,需要用户自己创建异步线程执行;带有async的方法为异步方法)

初始化SDK

1.引入相关头文件 #import “EMSDK.h”

2.在工程的AppDelegate中的以下方法中,调用SDK对应方法:

调用的SDK接口参数解释如下:

1.AppKey: 区别app的标识,开发者注册及管理后台

2.apnsCertName: iOS中推送证书名称。制作与上传推送证书

3.环信为im部分提供了apns推送功能,如果您要使用,请跳转到apns离线推送

注册:

1.注册模式分两种,开放注册和授权注册。只有开放注册时,才可以客户端注册。

2.开放注册是为了测试使用,正式环境中不推荐使用该方式注册环信账号, 授权注册的流程应该是您服务器通过环信提供的rest api注册,之后保存到您的服务器或返回给客户端。

登陆:

登录:调用SDK的登录接口进行的操作;

自动登录:

自动登录:即首次登录成功后,不需要再次调用登录方法,在下次app启动时,SDK会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。配置是否进行自动登录SDK中自动登录属性默认是关闭的,需要您在登录成功后设置,以便您在下次app启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。

自动登录在以下几种情况下会被取消

1.用户调用了SDK的登出动作;

2.用户在别的设备上更改了密码, 导致此设备上自动登陆失败;

3.用户的账号被从服务器端删除;

4.用户从另一个设备登录,把当前设备上登陆的用户踢出.

所以,在您调用登录方法前,应该先判断是否设置了自动登录,如果设置了,则不需要您再调用

SDK中,如果发生自动登录,会有以下回调

重连:

当掉线时,IOS SDK会自动重连,只需要监听重连相关的回调,无需进行任何操作。

退出登陆:

退出登录分两种类型:主动退出登录和被动退出登录。

主动退出登录:调用SDK的退出接口;

被动退出登录: 1、 正在登陆的账号在另一台设备上登陆; 2、 正在登陆的账号被从服务器端删除。

logout:YES:是否解除device token的绑定,在被动退出时SDK内部处理,不需要调用退出方法

被动退出登录:

回调方法监听:

还有很多很多功能,而且官网 写的非常非常清楚!

好友管理

注:环信不是好友也可以聊天,不推荐使用环信的好友机制。如果你有自己的服务器或好友关系,请自己维护好友关系。

获取好友列表

获取好友列表,环信提供了两种方法。

1. 从服务器获取所有的好友

2. 从数据库获取所有的好友

好友申请

发送加好友申请

环信iOS SDK提供了添加好友的方法

如果您已经发过,并且对方没有处理,您将不能再次发送

实时通话管理

客户端

1.发起实时通话

2.被叫方同意实时通话

3.结束实时通话

4.实时通话实例

等等等...   点击查看详细

EaseUI使用指南

EaseUI是一个UI库,封装了IM功能常用的控件、fragment等等,旨在帮助开发者快速集成环信sdkeaseui及demo的github下载地址为:

https://github.com/easemob/easeui

https://github.com/easemob/sdkdemoapp3.0_android,3.0的代码需要切换到sdk3.0分支

注意:因为这是一个ui库,后续很可能还会继续改动,新旧版本在api的兼容上不会像im sdk那样绝对的兼容。(官网有提示)

代码导入

easeui库的代码是开源的,下载的sdk压缩包里面已经包含此库,解压后路径为/examples/easeui

Eclipse中导入:

1.先把easeui项目导入到eclipse中

2.在自己的项目中把easeui作为一个library引入。右键你的项目→Android→点击右下角的Add按钮→选中EaseUI→OK→OK

Android studio中导入:打开你的AS项目→File→New→Import Module→选择或输入easeui库路径→Next→Next→Finish

导入完可能会有如下错误:

找到相应报错的地方把swipeRefreshLayout.setColorSchemeResources改成swipeRefreshLayout.setColorScheme,ViewCompat.getX改成new ViewCompat().getX,然后重新build即可;或者把v4包的版本号加大,譬如compile ‘com.android.support:support-v4:23.1.1‘。

主要fragment

1.EaseConversationList - 聊天页面,最主要的fragment

2.EaseContactListFragment - 联系人页面

3.EaseConversationListFragment - 会话列表页面

主要控件

1.EaseTitleBar - 标题栏

2.EaseChatMessageList - 聊天消息列表控件

3.EaseConversationList - 会话列表控件

4.EaseContactList - 联系人列表页面

5.EaseChatInputMenu - 聊天输入菜单栏

其他子控件,后文会做详细介绍

这里对聊天页面几个控件做简单图示:

类似这些功能:

这里都有介绍,只不过觉得这么好的东西放在官网没人看,太可惜了...点击查看详细

API大致变动介绍:

都是官网的东西,与君共勉!

文/百度工程师阿伟(简书作者)
原文链接:http://www.jianshu.com/p/73be68baa1ac
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-11-12 05:34:14

iOS开发--即时通讯的相关文章

iOS之即时通讯相关理解

Socket: 1>Socket又称"套接字” 2>网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 3>应用程序通常通过"套接字"向网络发出请求或者应答网络请求 网络通信的要素: 1>网络上的请求就是通过Socket来建立连接然后互相通信 2>IP地址(网络上主机设备的唯一标识) 3>端口号(定位程序) 4>用于标示进程的逻辑地址,不同进程的标示 5>有效端口:0~65535,其中0~

手机 视频 开发即时通讯软件

手机视频开发即时通讯软件 据<第30次中国互联网络发展状况统计报告>显示,即时通信在中国网民中的使用率达82.8%,用户人数4.45亿.手机上网的进一步普及,尤其是智能终端的推广,以及手机聊天工具的创新,使得即时通信作为中国网民第一应用的地位更加稳固. 从整体来看,即时通信行业发展至今已历经多年,运营商凭借在市场中长期积累的经验,越来越了解用户的需求,运营商通过不断对产品功能进行更新,开创特色应用,增强了在网民中的渗透,并提高了用户黏性.而当用户对产品形成固定的使用习惯后,用户不易流失. 从手

手机视频开发即时通讯软件

据<第30次中国互联网络发展状况统计报告>显示,即时通信在中国网民中的使用率达82.8%,用户人数4.45亿.手机上网的进一步普及,尤其是智能终端的推广,以及手机聊天工具的创新,使得即时通信作为中国网民第一应用的地位更加稳固. 从整体来看,即时通信行业发展至今已历经多年,运营商凭借在市场中长期积累的经验,越来越了解用户的需求,运营商通过不断对产品功能进行更新,开创特色应用,增强了在网民中的渗透,并提高了用户黏性.而当用户对产品形成固定的使用习惯后,用户不易流失. 从手机端来看,手机即时通信的移

iOS开发-Socket通讯方式

1.程序之间的通信 两个应用程序之间的通信,我们可以理解为进程之间的通信,而进程之间进行通信的前提是我们能够找到某个进程,因此,我们需要给进程添加唯一的标示,在本地进程通信中我们可以使用PID来标示一个进程,但PID只在本地唯一,网络中的多个计算机之间的进程标示并不能保证唯一性,冲突的几率很大,这时候我们需要另辟蹊径,TCP/IP协议族已为我们解决了这个问题,IP层的ip地址可以标示主机,而TCP层协议和端口号可以标示某个主机的某个进程,于是我们采取"ip地址+协议+端口号"作为唯一标

iOS开发socket通讯

写写socket通讯那些事儿.     socket通讯公司用于给服务器发一些指令用于控制智能家居类的设备.socket无非就是发过来发过去,至于具体内容跟服务器协商就好.接下来先说说与socket通讯配合使用的socket Tool 的mac 工具.首先打开工具(工具连接以及socket用到的文件:SocketToolfor_mac_and_Third_for_xocde_socket.zip)选择Tcp Server 然后点击创建 端口号输入一个数字,60000 把. 注意可能完成之后这个数

IM即时通讯社交软件app开发,区块链社交直播软件开发

IM即时通讯设有数字资产钱包可进行实时发红包.转账.直播.聊天.发图.朋友圈.录像.建群.点对点聊天.加好友.相册.扫二维码等等一些有趣的功能实时上线.社交直播软件开发 Tel:前面 138中间2315后面3201 开发即时通讯APP能够带来什么 1.随时联系客户:在电子商务的发展中,客服咨询是重要的服务环节,电子商务IM即时通讯APP软件开发帮助为客服人员提供在线与消费者进行沟通互动,并且在为客服人员显示消费者在线的状态. 2.巧发商机:买家在发布产品信息的时候,能够通过系统一次性批量发布.重

Android基于xmpp的即时通讯应用

xmpp是一个通信协议.因为这是个开放的协议,为了节俭开发成本,很多即时应用都采用了这个协议.Android上最常用的组合asmack +openfire.Asmack是smack的android版,是对xmpp协议进行了封装,并提供了丰富的api,简化了操作.Openfire是一个开源的IM服务器,基于Xmpp实现.换句话说使用xmpp开发即时通讯应用的话,服务器端已经开发好了,就是openfire. 现在我做的一个android应用就是采用asmack+openfire.说实在的,xmpp协

iOS开发融云即时通讯集成详细步骤

1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注册了融云开发者帐号,请前往 融云开发者平台 创建应用:如果您还没有注册融云开发者帐号,请前往 融云官方网站 首先注册开发者帐号,注册后创建应用.注册地址  https://developer.rongcloud.cn/signup 3.登陆融云开发者平台 https://developer.rong

即时通讯 iOS音视频技术开发

随着iOS的强势面世,伴随着其出色的应用,一大堆开发人员在捣鼓IOS平台的开发,而基于iOS的音视频二次开发应用也为更多的程序员猛攻猛打.相信大家也使用过QQ的语音视频对话功能,但是不知道大家有没有试过自己来开发一个基于IOS平台的音视频即时通讯的应用,这个应用必须能够做到跨平台 支持iOS平台设备上的音频即时通讯应用开发 提供Objective-C语言API接口,开放示例源代码 集成H.264.AAC.AMR等编解码技术 封装音视频的采集.编解码.传输.显示和播放等模块 支持Android.W