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大致变动介绍:


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



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码可以再进行一些改进。其中一个改进是,当用户输入的学号或姓名不存在时,程序应该输出更加友好的提示信息。例如,可以输出“未找到学号为XXX的学生信息”或“未找到姓名为XXX的学生信息”,其中XXX是用户输入的学号或姓名。另一个改进是,程序可以允许用户进行多次查询,直到用户选择退出程序为止。可以在程序结尾处添加一个循环,让用户可以多次进行查询,直到用户输入数字3为止。具体的代码实现如下所示: ``` while (true) { int a; cout << "学号查找按1,姓名查找请按2,退出程序请按3。"; cin >> a; if (a == 1) { cout << "请输入学生的学号:"; cin >> num; bool found = false; for (auto p = i.v.begin(); p != i.v.end(); ++p) { if (p->num == num) { found = true; cout << setiosflags(ios::left) << setw(12) << "学号" << setw(20) << "姓名" << setw(6) << "性别" << setw(6) << "英语" << setw(6) << "高数" << setw(6) << "汇编" << endl; cout << setiosflags(ios::left) << setw(12) << p->num << setw(21) << p->name << setw(6) << p->sex << setw(6) << p->score1 << setw(6) << p->score2 << setw(6) << p->score3 << endl; break; } } if (!found) { cout << "未找到学号为" << num << "的学生信息" << endl; } } else if (a == 2) { cout << "请输入学生的姓名:"; cin >> name; bool found = false; for (auto p = i.v.begin(); p != i.v.end(); ++p) { if (p->name == name) { found = true; cout << setiosflags(ios::left) << setw(12) << "学号" << setw(20) << "姓名" << setw(6) << "性别" << setw(6) << "英语" << setw(6) << "高数" << setw(6) << "汇编" << endl; cout << setiosflags(ios::left) << setw(12) << p->num << setw(21) << p->name << setw(6) << p->sex << setw(6) << p->score1 << setw(6) << p->score2 << setw(6) << p->score3 << endl; break; } } if (!found) { cout << "未找到姓名为" << name << "的学生信息" << endl; } } else if (a == 3) { cout << "退出程序。" << endl; break; } else { cout << "输入无效选项" << endl; } system("pause"); } return; ``` 这样改进之后,用户可以根据需要进行多次查询,程序会一直运行,直到用户选择退出程序为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值