集成环信 ios 2.0

一、准备工作

1、注册环信帐号注册一个环信账号之后,我们用注册的帐号登陆。然后创建一个应用,会得到一个对应的AppKey,这个AppKey在初始化环信SDK的时候需要用到。(这个去环信官网自己弄环信)

2、制作推送证书如果需要做离线推送的功能,需要制作一个推送证书。如果只是需要实现单聊、群聊等功能,可以跳过此步骤。个人建议刚开始接触环信的开发者可以忽略此步骤。制作证书

3、下载环信sdk .下的是2.0

二、集成环信的SDK

1、把环信SDK添加到工程中

从环信官网下载下来的是一个压缩包,解压之后,把我们需要的环信SDK,即EaseMobSDK这个文件夹,整个的拖入到我们的工程中。如下图:

在lib文件夹下面有两个静态库,只需要用到一个,根据你的需求选择。

libEaseMobClientSDKLite.a不包含实时语音功能,libEaseMobClientSDK.a包含所有功能。

2、添加对应的依赖库

向Build Phases → Link Binary With Libraries 中添加依赖库

MobileCoreServices.framework

CFNetwork.frame

libsqlite3.tbd

libstdc++.6.0.9.tbd

libz.tbd

libiconv.tbd

libresolv.tbd

libxml2.tbd

温馨提示:注意不要添加错了,也不能添加少了,添加完毕之后,不要着急,先编译一下。编译成功,则说明没有问题;如果编译报错,则仔细对照上面例举的静态库进行添加,直到编译成功,再进行下一步。

3、配置工程

3.1 不包含语音静态库的配置方法

(1) 删掉libEaseMobClientSDK.a,保留libEaseMobClientSDKLite.a;

(2) 在Build Settings -> Other Linker Flags 添加”fore_load”和”libEaseMobClientSDKLite.a”的相对路径。

如下图所示:

3.2 包含语音静态库的配置方法

(1) 删掉libEaseMobClientSDKLite.a,保留libEaseMobClientSDK.a;

(2) 在Build Settings -> Other Linker Flags 添加”-ObjC”。

如下图所示:

4、验证SDK是否添加成功

在AppDelegate.m文件中添加环信SDK初始化的方法,记得添加头文件”EaseMob.h”。下面提供了我用的测试AppKey,你可以替换成你自己申请的AppKey。编译成功,则说明你已经正确集成了环信的SDK了。

如果编译有问题,可能存在的原因:

(1) 静态库没有添加正确;

(2) 静态库工程配置不正确

#define APPKEY      @"1101#testrongyun"    //环信APPKEY

#define APNSCert    @"TestHuanXin"          //环信推送证书名称

#import "AppDelegate.h"

#import "EaseMob.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//初始化环信SDK[[EaseMob sharedInstance] registerSDKWithAppKey:APPKEY apnsCertName:APNSCert];

return YES;

}

三、添加UI文件到你的工程

集成环信2.0UI文件,需要添加的文件,如下图所示:

添加完成之后,如下图所示:

四、设置pch文件的路径

文件添加成功之后,编译会报错,因为你没有添加pch文件。自己手动添加pch文件(EaseUI-Prefix.pch),设置一下pch文件的加载路径即可。如下图所示:

在EaseUI-Prefix.pch中添加头文件”EaseUI.h”,如下图:

最后,编译一下,编译成功则说明添加集成UI文件成功。

五,搭建基本框架

1、新建三个UIViewController

新建三个ViewController,继承UIViewController,分别命名为:FirstViewController,SecondViewController,ThirdViewController。如下图所示

2、添加登陆方法

在AppDelegate.m中添加如下代码:

#define APPKEY      @"1101#testrongyun"    //环信APPKEY

#define APNSCert    @"TestHuanXin"          //环信推送证书名称

#import "AppDelegate.h"

#import "EaseMob.h"

#import "FirstViewController.h"

#import "SecondViewController.h"

#import "ThirdViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.//初始化环信SDK

[[EaseMob sharedInstance] registerSDKWithAppKey:APPKEY apnsCertName:APNSCert];//异步登陆的方法(这里的账号密码要去环信后台自己注册)

[[EaseMob sharedInstance].chatManager asyncLoginWithUsername:@"账号" password:@"密码" completion:^(NSDictionary *loginInfo, EMError *error) {

if (!error && loginInfo) {

     NSLog(@"登陆成功");[self setUpNav];

}}

onQueue:nil];

return YES;}

- (void)setUpNav{

FirstViewController *firstVC =[[FirstViewController alloc] init];

SecondViewController *secondVC =[[SecondViewController alloc] init];

ThirdViewController *thirdVC =[[ThirdViewController alloc] init];

firstVC.title = @"会话列表";

secondVC.title = @"通讯录";

thirdVC.title = @"设置";

UITabBarController *tabBar =[[UITabBarController alloc] init];

tabBar.viewControllers = @[[[UINavigationController alloc] initWithRootViewController:firstVC],[[UINavigationController alloc] initWithRootViewController:secondVC],[[UINavigationController alloc] initWithRootViewController:thirdVC]];

self.window.rootViewController = tabBar;

self.window.backgroundColor =[UIColor whiteColor];

}

@end

编译一下,看下效果。

六、添加与聊天有关的文件

1、添加GifImage文件2、添加chat文件

添加完成之后,编译一下,把报错的地方全部注释掉,有很多地方需要注释掉,这些地方是因为有些我们不需要的文件没有添加进来。(自己注释比较麻烦)

注释好的GifImage和chat文件,下载后无需注释无关代码,可直接使用注释好的文件,

七、实现单聊在SecondViewController.m中添加如下代码:

#import "SecondViewController.h"

#import "ChatViewController.h"

@interface SecondViewController (){

NSArray *arrSystem;

NSArray *arrFriends;

}

@property (retain, nonatomic)  UITableView *tableView;

@end

@implementation SecondViewController

- (void)viewDidLoad {[super viewDidLoad];

arrSystem = @[@"申请与通知",@"群聊",@"聊天室"];

_tableView =[[UITableView alloc] initWithFrame:self.view.frame];

_tableView.delegate = self;

_tableView.dataSource = self;

[self.view addSubview:_tableView];//获取好友列表

[[EaseMob sharedInstance].chatManager asyncFetchBuddyListWithCompletion:^(NSArray *buddyList, EMError *error) {

if (!error) {NSLog(@"获取成功 -- %@",buddyList);

arrFriends =[NSArray arrayWithArray:buddyList];

[_tableView reloadData];

}}onQueue:nil];

}

#pragma mark - UITableViewDelegate & UITableViewDataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

return 2;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

if (section == 0) {

return arrSystem.count;

} else {

return arrFriends.count;

}}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *identifier = @"CELL";

UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:identifier];

if (cell == nil) {

cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];

}

switch (indexPath.section) {

case 0:{

cell.textLabel.text =[arrSystem objectAtIndex:indexPath.row];

cell.imageView.image =[UIImage imageNamed:@"groupPublicHeader"];

break;

}

case 1:{

EMBuddy *eMBuddy =[arrFriends objectAtIndex:indexPath.row];

cell.textLabel.text = eMBuddy.username;

cell.imageView.image =[UIImage imageNamed:@"chatListCellHead"];

break;}default:break;

}

return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

EMBuddy *buddy =[arrFriends objectAtIndex:indexPath.row];

ChatViewController *chatVC =[[ChatViewController alloc] initWithConversationChatter:buddy.username conversationType:eConversationTypeChat];

chatVC.title = buddy.username; //好友的名字

chatVC.hidesBottomBarWhenPushed = YES;

[self.navigationController pushViewController:chatVC animated:YES];

}

编译,效果

真机运行一下,可能会报错,

解决方案:

把这个值设置成no

文章作者:环信热心用户樊呵呵

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

推荐阅读更多精彩内容

  • 一、准备工作 1、注册环信帐号 注册一个环信账号之后,我们用注册的帐号登陆。然后创建一个应用,会得到一个对应的Ap...
    樊二哈阅读 1,271评论 1 10
  • 第一次集成环信SDK应该是在去年吧,那个时候还是2.0的版本,没想到后面做的几个APP都用到了环信的及时聊天,用过...
    imGeek阅读 1,607评论 4 16
  • 上官网注册账号 首先来到环信的官网,然后登陆.没有账号先注册一个. 进去之后创建应用,如图 创建应用界面 点击确定...
    loneWolf01阅读 500评论 0 0
  • 前几天集成环信移动客服,遇到了许多问题,集成的过程也是磕磕绊绊,现在总结出来记录一下。步骤大体是这样: 1.首先到...
    元野__阅读 3,842评论 13 15
  • 高温炎热 挡不住你蓬勃向上的张力 几滴雨露 便是你渴慕已久的欢喜 地处边陲 和小城一起沉寂了往事 而我遇见你 是这...
    上官飞鸿阅读 162评论 4 11