如何通过iOS SDK接入消息服务

消息服务准备

  1. 注册微吼开发者账号

  2. 创建应用 获取AppID

  3. 设置应用Bundle ID

  4. 获取 频道ID channelID

    可以通过 【测试工具】 或 【API】 获得

  5. 获取包含消息模块权限的access_token

    可以通过 【测试工具】 或 【API】 获得

工程配置

在开始使用sdk之前,我们要配置好IDE和创建基础的工程代码。相关内容在【工程配置】中有详细说明。

时序图

注:已知频道ID的情况下虚线框部分无需请求。

对接流程

1: 引入消息模块头文件

#import "VHImSDK.h"

2: 创建IMSDK 实例

获取 channelID 和 accessToken 参考本页开始部分消息服务准备

NSString* channelID = @"xxxxxx";
NSString* accessToken = @"xxxxxxxxxx";
_chatSDK = [[VHImSDK alloc]initWithChannelID:channelID accessToken:accessTokend delegate:self];

3: 设置 delegate

  • delegate 设置IM代理
_chatSDK.delegate = self;

4: 发送聊天内容

现在支持最长消息 200字

[_chatSDK sendMessage:_msgTextField.text completed:^(NSError *error) {
            if(error)
                [wf showMsg:[NSString stringWithFormat:@"%ld%@",error.code,error.domain] afterDelay:2];
            else
                [wf showMsg:@"发送成功" afterDelay:2];
        }];

事件处理

SDK 通过 VHImSDKDelegate 代理来监听消息模块相关的状态和事件

具体 VHImSDKDelegate 中方法参考【消息模块参考手册

1: 接收聊天消息

/**
 *  接收IM消息
 *  @param imSDK IM实例
 *  @param message   IM消息
 */
- (void)imSDK:(VHImSDK *)imSDK receiveMessage:(VHMessage*)message;

2: 接收自定义消息

/**
 *  接收自定义消息
 *  @param imSDK IM实例
 *  @param message   自定义消息
 */
- (void)imSDK:(VHImSDK *)imSDK receiveCustomMessage:(VHMessage*)message;

3: 接收上下线消息

/**
 *  上下线消息
 *  @param imSDK IM实例
 *  @param message   消息
 */
- (void)imSDK:(VHImSDK *)imSDK onlineMessage:(VHMessage*)message;

4: 错误回调

/**
 *  错误回调
 *  @param imSDK IM实例
 *  @param error    错误
 */
- (void)imSDK:(VHImSDK *)imSDK error:(NSError *)error;

快速集成代码

可以把消息模块代码写到 ViewController.m 的 viewDidLoad 方法中测试观看,代码如下:

//
//  ViewController.m
//  TestProject
//
//  Created by vhall on 2018/3/12.
//  Copyright © 2018年 vhall. All rights reserved.
//

#import "ViewController.h"

#import "VHImSDK.h"

@interface ViewController ()<VHImSDKDelegate>
@property (nonatomic,strong)VHImSDK *chatSDK;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    NSString* channelID = @"xxxxxx";//channelID 获得方式 参考页面开始处
    NSString* accessToken = @"xxxxxxxxxx";//accessToken 获得方式 参考页面开始处
    
    //直播文档初始化
    _chatSDK = [[VHImSDK alloc]initWithChannelID:channelID accessToken:accessToken delegate:self];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)sendMessage:(NSString*)msg
{
    [_chatSDK sendMessage:msg completed:^(NSError *error) {
        if(error)
        {
            NSLog(@"发送失败: %@",[NSString stringWithFormat:@"%ld%@",error.code,error.domain]);
        }
        else
        {
            NSLog(@"发送成功");
        }
    }];
}


#pragma mark - VHImSDKDelegate
/**
 *  接收IM消息
 *  @param imSDK IM实例
 *  @param message   IM消息
 */
- (void)imSDK:(VHImSDK *)imSDK receiveMessage:(VHMessage*)message
{
    NSLog(@"收到消息: %@",message.data);
}

/**
 *  接收自定义消息
 *  @param imSDK IM实例
 *  @param message   自定义消息
 */
- (void)imSDK:(VHImSDK *)imSDK receiveCustomMessage:(VHMessage*)message
{
    NSLog(@"收到自定义消息: %@",message.data);
}

/**
 *  上下线消息
 *  @param imSDK IM实例
 *  @param message   消息
 */
- (void)imSDK:(VHImSDK *)imSDK onlineMessage:(VHMessage*)message
{
    NSLog(@"收到上下线消息: %@",message.third_party_user_id);
}

/**
 *  错误回调
 *  @param imSDK IM实例
 *  @param error    错误
 */
- (void)imSDK:(VHImSDK *)imSDK error:(NSError *)error
{
    NSLog(@"错误: %@",error );
}

@end

其他相关文档

  1. 快速开始
  2. 消息模块参考手册