码迷,mamicode.com
首页 > 移动开发 > 详细

iOS-Senior21-环信(代码)

时间:2016-06-01 22:48:24      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:

//先引入类库

#import "EMSDK.h"

1.在AppDelegate.m中

//初始化一个环信对象

EMOptions *emOp =[EMOptionsoptionsWihtAppkey:@"lyf520zln#bjs160305"];

[[EMClient sharedClient] initializeSDKWithOptions : emOp];

//获取到keyWindow

[self.window makeKeyAndVisible];

//获取main.storyboard

UIStoryboard *main = [UIStoryboard storyboardWithName : @"Main" bundle : nil];

UINavigationController *loginNC = [main instanttiateInitialViewController];

//通过chat.storyboard的根视图控制器,模态推出下个界面

[self.window.rootViewController presentViewController : loginNC animated : YES completion : nil];

2.在viewController.m里

//声明两个插座变量

 

@property (weak, nonatomic) IBOutlet UITextField *userNameField;

 

@property (weak, nonatomic) IBOutlet UITextField *passwordField;

#pragma mark - 点击登录按钮

- (IBAction) loginButton : (id) sender {

if (self.userNameField.text.length == 0 || self.passwordField.text.length == 0){

NSLog(@"用户名密码不能为空");

return ;

}

//环信登录的方法

EMError *error = [[EMClient sharedClient] loginWithUserName : self.userNameField.text password : self.passwordField.text];

NSLog(@"error = %@",error);

if (!error){ 

NSLog(@"登录成功");

//返回会话列表

[self dismissViewControllerAnimated : YES completion : nil];

}

}

2.在RegisterViewController.m里

//声明两个插座变量

@property (weak, nonatomic) IBOutlet UITextField *userNameField;

@property (weak, nonatomic) IBOutlet UITextField *passwordField;

#pragma mark - 点击注册按钮

- (IBAction)didClickRegistButton : (UIButton *)sender {

if (self.userNameField.text.length == 0 || self.passwordField.text.length == 0) {

NSLog(@"用户名或密码不能为空");

return ;

}

//环信的注册

EMError *error =[ [EMClient sharedClient] registerWithUserName: self.userNameField.text password : self.passwordField.text];

NSLog(@"error = %@",error);

if (!error){

NSLog(@"注册成功");

}

}

3.在chatTableViewController.m里

//会话属性

@property (nonatomic,strong) EMConversation *conversation;

//消息数组

@property (nonatomic,strong) NSMutableArray *messageArray;

#pragma mark - 视图显示

- (void) viewDidAppear :(BOOL) animationed {

[super viewDidAppear : animated];

NSLog(@"%@",[EMClient sharedClient].currentUsername);

//创建一个会话

self.conversation = [[EMClient sharedClient].chatManager getConversation : @"[EMClicent sharedClient].currentUsername" type : EMConversationTypeChat createIfNotExist : YES];

//注册接收消息

[[EMClient sharedClient].chatManager addDelegate : self delegateQueue : nil];

//移除消息回调

[[EMClient sharedClient].chatManager removeDelegate : self];

}

- (void) viewDidLoad {

[super viewDidLoad];

self.messageArray = [NSMutableArray array];

//注册接收消息

[[EMClient sharedClient].chatManager addDelegate : self delegateQueue : nil];

//注册cell

[self.tableView registerClass : [UITableViewCell class] forCellReuseIdent ifier : @"cell"];

}

#pragma mark - 接收消息的代理方法

- (void) didReceiveMessages : (NSArray *)aMessages {

NSLog (@"接收到: %@",aMessages);

//刷新tableview

[self.tableView reloadData];

}

#pragma mark - 点击注销按钮

- (void)didClickLogoutButton :(UIBarButtonItem *)sender {

EMError *error = [[EMClient sharedClient]logout : YES];

if(!error){

NSLog(@"退出成功");

}

//返回登录页面

UIStoryboard *main = [UIStoryboard storyboardWithName : @"Main" bundle : nil];

UINavigationController *loginNC = [main instantiateInitialViewController];

[self pressentViewController :loginNC animated :YES completion : nil];

}

#pragma mark - 点击发送按钮

- (void) didClickSendMessageButton :(UIBarButtonItem *) sender {

//创建消息内容messageBody

EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText : @"向对方扔一坨屎"];

NSString *from = [[EMClient sharedClient] currentUsername];

//消息对象

EMMessage *message = [[EMMessage alloc] initWithConversationID : from from : from to : from body :body ext : nil];

message.chatType = EMChatTypeChat;

#pragma mark - 发送消息

    [[EMClient sharedClient].chatManager asyncSendMessage:message progress:^(int progress) {

        

    } completion:^(EMMessage *message, EMError *error) {

        NSLog(@"发送的消息%@",message);

        if (!error) {

            NSLog(@"发送成功");

           message.to = @"";

            //设置发送方向

            message.direction = EMMessageDirectionReceive;

            [self.messageArray addObject:message];

            //刷新tableview

            [self.tableView reloadData];

        }

    }];

}

#pragma mark - 设置cell

分区:1

列数:self.messageArray.count

cell:用系统自带初始化

{

UITableViewCell = *cell = [tableView dequeueReusableCellWithIdentifier :@"cell" forIndexPath : indexPath];

EMMessage *message = self.messageArray[indexPath.row];

if (message.direction == EMMessageDirectionSend){

cell.textLabel.text = @"";

cell.detailTextLabel.text  = [self textFromMessage : message];

cell.detailTextLabel.textColor = [UIColor magentaColor];

}else {

cell.textLabel.text = [self textFromMessage : message];

cell.detailTextLabel.text = @"";

}

return cell;

}

#pragma mark - 取出消息中的文本

- (NSString *)textFromMessage :(EMMessage *)message {

EMMessageBody *body = message.body;

EMTextMessageBody *textBody = (EMTextMessageBody *)body;

//输出文本内容

NSLog(@"textBody = %@",textBody.text);

NSString *text = textBody.text;

return text;

}

 

iOS-Senior21-环信(代码)

标签:

原文地址:http://www.cnblogs.com/zhoulina/p/5551121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!