iOS 集成环信即时聊天

原创
2016/05/11 15:16
阅读数 973

环信的文档写得比较详细,基本看文档就能解决,贴个最简单的demo。

环信文档地址:http://docs.easemob.com/im/300iosclientintegration/20iossdkimport

  1. 首选导入SDK 添加依赖库 sdk不含语音版:https://github.com/easemob/hyphenate-cocoapods.git

SDK不支持bitcode,在Build Settings → Linking → Enable Bitcode中设置NO

  1. 在AppDelegate.m 导入头文件#import "EMSDK.h",并实现以下方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    EMOptions *options = [EMOptions optionsWithAppkey:KEY]; 
    options.apnsCertName = @"istore_dev"; //这个是离线退送功能,由于我没设置证书,先不管
    [[EMClient sharedClient] initializeSDKWithOptions:options];
    
    return YES;
}

//进入后台
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [[EMClient sharedClient] applicationDidEnterBackground:application];
}

// 从后台返回
- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [[EMClient sharedClient] applicationWillEnterForeground:application];
}

在发送消息页面 viewController 中设置代理

    // 设置代理
    [[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil];
  1. 注册和登录
    //注册
    EMError *error = [[EMClient sharedClient] registerWithUsername:_userNameTextField.text password:_passWordTextField.text];
    if (error==nil) {
        NSLog(@"注册成功");
    }

    //登录

EMError *error = [[EMClient sharedClient] loginWithUsername:_userNameTextField.text password:_passWordTextField.text];
    if (!error) {
        NSLog(@"登录成功");
    }

    
  1. 发送消息
    EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"这是要发送的消息"];
    NSString *from = [[EMClient sharedClient] currentUsername];
    //生成Message
    EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:_nameTextField.text  body:body ext:nil];
    message.chatType = EMChatTypeChat;// 设置为单聊消息
    //message.chatType = EMChatTypeGroupChat;// 设置为群聊消息
    //message.chatType = EMChatTypeChatRoom;// 设置为聊天室消息
    
    // 发送消息(异步方法)
    [[EMClient sharedClient].chatManager asyncSendMessage:message progress:nil completion:^(EMMessage *aMessage, EMError *aError) {
        NSLog(@"消息发送完成");
    }];
  1. 收到消息,回调代理方法
- (void)didReceiveMessages:(NSArray *)aMessages
{
    for (EMMessage *message in aMessages) {
        EMMessageBody *msgBody = message.body;
        switch (msgBody.type) {
            case EMMessageBodyTypeText:
            {
                // 收到的文字消息
                EMTextMessageBody *textBody = (EMTextMessageBody *)msgBody;
                NSString *txt = textBody.text;
                NSLog(@"收到的文字是 txt -- %@",txt);
                // 消息显示在界面上
                _receiveTextfield.text = txt;
            }
                break;
            // 除了文字消息,还有其他图片,音频,视频,位置消息等等    
            default:
                break;
        }
    }
}

这样基本就能在两台机器上发送文字消息了。

代码下载: http://git.oschina.net/yupcode/ChatDemo

展开阅读全文
打赏
2
18 收藏
分享
加载中
OneAPM 能快速捕捉性能表现差的应用代码,发现错误并随时向你发送警报,这一切只需下载并安装 OneAPM iOS SDK,然后更新你的应用,快来官网注册吧~
2016/05/30 14:59
回复
举报
更多评论
打赏
1 评论
18 收藏
2
分享
返回顶部
顶部