消息服务准备
-
获取 频道ID channelID
-
获取包含消息模块权限的access_token
工程配置
在开始使用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