环信(iOS_IM_SDK_3.2.0)单聊集成

<b>闲来无事,试了一发环信,目前主要写了登录、注册、好友(添加、删除、获取)及好友单聊。本文章主要简单的讲解下环信单聊集成。后续有时间再做其他功能。</b>


先看效果吧,这gif是我录制的模拟器,手机的界面没有录制。【watering222】是我手机登录的用户在配合演示。

gif.gif

下面简单讲解下步骤(我按照我自己的集成步骤讲解,仅仅做参考):

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中注册(※注意:登录注册也得完成,很简单,看看就知道,我就不写了※)。如下代码:
1.0.png

2.0.png

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文件中(如下代码片段),这个很关键的**
    3.0.png

4.0.png

5.0.png

// 就是这个
#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)。


    6.0.png

既然这样就换一种方法解决它,<解决方案>:在下载的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权限的问题上。所以这篇文章也是献给为工作劳累的同行们。本文章如有错误欢迎留言指出。如有更好方法也希望各位大神分享。谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容

  • 第一次集成环信SDK应该是在去年吧,那个时候还是2.0的版本,没想到后面做的几个APP都用到了环信的及时聊天,用过...
    imGeek阅读 1,622评论 4 16
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 前言 公司最近要求做即时通讯, 直接用了三方环信了,今天和大...
    Heaven7th阅读 9,620评论 24 30
  • 一、准备工作 1、注册环信帐号注册一个环信账号之后,我们用注册的帐号登陆。然后创建一个应用,会得到一个对应的App...
    niceSYT阅读 413评论 1 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,028评论 25 707
  • 习惯的打开微信,打开朋友圈,一个多月都没在联系,或许是提及你已经有生命中的另一半,而我却不想打扰你,许久你...
    Royal丶浅逝阅读 144评论 0 0