有人说环信需要服务器和iOS端配合,其实可以两种方式:
1.全有iOS端和环信交互。2.让服务器替我们保存环信密码。
先不说方式,先教大家如何集成。环信里有一个自带已经弄好的EaseUI,如果你对页面的要求不是很大,那就用环信自带的EaseUI开发。我使用的就是环信的EaseUI。为了不影响项目,你先导入需要的系统框架。我使用的是即时通讯V2版本。
集成准备前请看他们的官网文档介绍。http://docs.easemob.com/start/300iosclientintegration/20iossdkimport
是即时通讯V3,请按照他去添加对应的库!没有安全感的可以全部添加!只要你不限工程大,麻烦就可以。
添加完成以后。下载他的SDK,有几种文件需要你拖进来。
1.EaseUIResource.bundle
2.gifimage(包含文件:EMGifImage.h以及.m)
3.EaseMobSDK
4.EaseUI(包括子目录:include,lib,resources*请注意里面不是图片是库,XMPP框架。 )
5.Resource(环信的图片文件夹)
6.ChatViewController(你可以用他们示范demo里拖,这个类就是对话类)
7.CystomizableCell
8.PrefixHeader.pch
9.Localizable.strings
如果还是少了什么东西不知道怎么加,请加我们的QQ群:543911881,我给你发送所有需要的文件,前提请注意加好友时候留言清楚。
如果你前面有一个会话列表页面,例如下图:
如果你也有一个消息页面的话,如果没有什么太多内容,我建议放弃你自己自定义的TableViewCell,因为EaseUI 里有已经写好的消息页面:EaseConversationListViewController
这个页面不用改动太多。如果你发现这个页面为什么不用登录环信账号,环信是这样的:你在AppDelegate登录。
登录的demo为:
[[EaseMob sharedInstance].chatManager asyncLoginWithUsername:@“用户的环信账号” password:@“用户的环信密码” completion:^(NSDictionary *loginInfo, EMError *error) {
NSLog(@"error====%@",error);
if (!error)
{
NSLog(@"登录成功");
NSLog(@"===%@",loginInfo);
//获取数据库中数据
[[EaseMob sharedInstance].chatManager loadDataFromDatabase];
}
} onQueue:nil];
当然有登录就有注册
[[EaseMob sharedInstance].chatManager asyncRegisterNewAccount:phone.text password:password2.text withCompletion:^(NSString *username, NSString *password, EMError *error) {
NSLog(@"error====%@",error);
if (!error)
{
NSLog(@"注册成功");
NSLog(@"===%@",loginInfo);
}
} onQueue:nil];
关于这个如何让你的app流程走通,请听我细细说来。
1.只用iOS和环信交互:在你app注册会员的时候,注册成功获得返回值,正确的返回值内去注册环信账号,而环信账号就是用户注册你app的账号,密码需要写死,例如:123456,那么无论谁注册,传给环信的密码都是123456。这样方便登录。如果环信返回给你是注册成功,那么你需要在成功里创建NSUserDeafults存储你的环信账号,密码就不用存了。并且调用环信登录方法。如果不在AppDelegate里写登录,你的APP如果退出了,下次打开就没用了,所以必须时时刻刻登录。所以你需要在AppDelegate登录,账号就是你本地存储的账号。密码还是死的。如果正常流程来说就是:
1.注册自己APP账号-成功-注册环信账号,密码为死的-成功-登录环信账号。
2.登录自己APP账号-成功-登录环信
3.AppDelegate存储账号。
2.让iOS,服务器,环信交互:通过上面的那种方式,跟服务器唯一交互的就是密码,你需要在用户注册你自己产品的时候,密码也注册环信。注册成功,将密码post给服务器,登录的时候成功,服务器不光返回error,msg,还要加一个环信的password,这样你拿到password 可以再进行登录。当然注册的时候Phone和Password需都需要存储,方便在AppDelegate入口类登录。
1.注册自己APP账号-成功-注册环信账号,密码为注册APP的密码-成功-Post密码给服务器-成功-登录环信账号。
2.登录自己APP账号-成功-拿到服务器返回的Password,登录环信账号-成功。
3.AppDelegate存储账号和密码
除了上面两种方式,还有一种就是环信有一个会记录的方法,除了注销会一直存在。怎么简单怎么来。
OK,注册成功,我们继续讨论:EaseConversationListViewController
如果你的页面换成了EaseConversationListViewController,那么你不需要做任何操作都可以获取到最新数据,但是你需要点击进入会话页面。
ChatViewController 就是你的会话页,关于ChatViewController * chatVc = [[ChatViewController alloc]initWithConversationChatter:model.title conversationType:eConversationTypeChat];
1.model.title 这个会话页的用户名,你也可以写死。
2.eConversationTypeChat,枚举,这是单人会话,还有群聊等等。
有了这个就可以传到会话页了。
会话就不多说了,没有这个文件我直接发给你好了。
对了有人会出现这种情况,如下图:
是否发现重复消息。[self tableViewDidTriggerHeaderRefresh]; 检查一下这个方法是不是在chatViewController 和EaseMessageViewCOntroller 的ViewDidLoad 里面都调用了,看如果都有,随便删除一个这个方法。就ok了!
关于头像昵称如何能做成活的,思路是:环信有一个方法,可以获取消息列表的信息。
这个方法就在你的消息列表页拿出来。能获取到所有消息的环信的账号,如果你们注册的环信账号是手机号的。第一次发请求的话给服务器依次发送这个手机号,获取他的昵称和头像,然后存到IMessageModel 里,需要存到的类:1.EaseBaseMessageCell 2.EaseConversationCell。方法名:-(void)setModel:(id<IMessageModel>)model
这样会赋值给到列表页上,让用户的头像和昵称都有了。这样的列表就完成了。
如果你还有不懂得地方你加我们QQ群:622177838,欢迎一起交流。当然如果您觉得对您有帮助,请点赞或打赏!谢谢!