<b>闲来无事,试了一发环信,目前主要写了登录、注册、好友(添加、删除、获取)及好友单聊。本文章主要简单的讲解下环信单聊集成。后续有时间再做其他功能。</b>
先看效果吧,这gif是我录制的模拟器,手机的界面没有录制。【watering222】是我手机登录的用户在配合演示。
下面简单讲解下步骤(我按照我自己的集成步骤讲解,仅仅做参考):
1、环信官网注册应用获取AppKey。
2、环信官网下载SDK,我下载的是最新的SDK。
3、配置工程,这一步有些地方需要注意(导入依赖库我就不提了,对着导入就可以了)。
- 3.1 创建.pch文件,方便使用。在Build Phases 中配置好.pch。别到时候找不到.pch。
- 3.2 把HyphenateFullSDK(以包含语音SDK为例)拉到工程中,记得勾上copy,然后就是在之前创建好的pch文件中添加** #import "EMSDK.h"**,此时应该会报错(如图1.0),解决方案(如图2.0)。在AppDelegate.m中注册(※注意:登录注册也得完成,很简单,看看就知道,我就不写了※)。如下代码:
AppDelegate.m中注册AppKey
//1、AppKey:注册的AppKey
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
EMOptions *options = [EMOptions optionsWithAppkey:AppKey];
options.apnsCertName = nil;// 没有证书暂时设置为nil
[[EMClient sharedClient] initializeSDKWithOptions:options];
}
- 3.3 从下载的SDK文件夹找到EaseUI(如图3.0),然后拉到工程中,此时编译会报很多错,别急,现在先在pch文件中添加** #import "EaseUI.h",此时你会发现------还是没卵用,哈哈~~~🙄。然后就解决呗,在工程左侧找到它(如图4.0)内部代码(如图5.0),把红色圈里面的
#ifdef __OBJC__
和#endif
拷贝到之前自己创建的pch文件中(如下代码片段),这个很关键的**
// 就是这个
#ifdef __OBJC__
#ifndef PrefixHeader_pch
#define PrefixHeader_pch
#import "EMSDK.h"
#import "EaseUI.h"
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
#endif /* PrefixHeader_pch */
// 和这个
#endif
4、此时基本配置完成了,然后就是调用了。在你需要的控制器添加#import "EaseMessageViewController.h"使用
- (IBAction)push:(id)sender {
EaseMessageViewController *ease = [[EaseMessageViewController alloc] initWithConversationChatter:@"watering6" conversationType:EMConversationTypeChat];
[self.navigationController pushViewController:ease animated:YES];
}
-
4.1此时就可以发送消息了,但是当你点击表情按钮的时候,会程序崩溃掉(如图6.0)。
既然这样就换一种方法解决它,<解决方案>:在下载的SDK中按顺序(1)ChatDemo-UI3.0 -->(2)ChatDemo-UI3.0-->(3)Class-->(4)Chat找到Chat文件夹后,把Chat文件夹拉到工程中。替换掉之前的方法,如下(为什么要换成ChatViewController来解决问题,是因为基本表情的处理都在此类中,而现在只是集成单聊):
- (IBAction)push:(id)sender {
ChatViewController *ease = [[ChatViewController alloc] initWithConversationChatter:@"watering6" conversationType:EMConversationTypeChat];
[self.navigationController pushViewController:ease animated:YES];
// EaseMessageViewController *ease = [[EaseMessageViewController alloc] initWithConversationChatter:@"watering6" conversationType:EMConversationTypeChat];
// [self.navigationController pushViewController:ease animated:YES];
}
此时编译你会发现在刚刚拉进来的Chat中的ChatViewController.m中报好多错。<解决方案>:把ChatViewController.m中所有的报错全注释掉就好了。哈哈,这好像不是什么解决方案,那些报错的代码,是因为写的其它功能,反正我们只需要单聊,把其它先注释,如果你以后需要其它功能你再研究一发。反正现在全注释掉就好了。此时基本完成了,是基本完成哦,后面还有问题要解决的。
4.2跑起来吧骚年,看看还有什么问题,当你在点点点时,那么问题就来了,你会发现兔基斯的表情包没有对吧?<解决方案>:还是找到下载的SDK(1)ChatDemo-UI3.0 -->(2)ChatDemo-UI3.0-->(3)Resources-->(4)emotion把emotion文件夹拉到你的工程中。然后编译没问题,跑起来兔基斯就会出来了。
4.3基本该有的都有了,然后试试其他功能,图片,拍照,录音,定位。TMD程序又闪退了。我当时一直不明白是为什么,查了好久。突然我想起来我特么升级xcode8了!!这应该是权限问题,当时我真的好气,这都能忘。然后在info.plist中添加了对应的权限。然后跑起来,试了一发。搞定!权限的添加可以自行百度或者到我另外一篇文章查看。
总结
以上集成步骤虽然都很简单,但是有些问题一时半会没想到,往往要浪费好多时间去解决,有可能一个细节都能让你崩溃,就好像我在xcode8权限的问题上。所以这篇文章也是献给为工作劳累的同行们。本文章如有错误欢迎留言指出。如有更好方法也希望各位大神分享。谢谢!