一、业务场景
有的时候 发送一条消息可能 发现自己发送错误了,但消息又不送出去了,就可以使用这个功能
二、主工功能代码实现
实现这个功能首先要有一个发送消息
发送消息有以下几个状态,上代码解释:
/*
V2TIM_MSG_STATUS_SENDING = 1, ///< 消息发送中
V2TIM_MSG_STATUS_SEND_SUCC = 2, ///< 消息发送成功
V2TIM_MSG_STATUS_SEND_FAIL = 3, ///< 消息发送失败
V2TIM_MSG_STATUS_HAS_DELETED = 4, ///< 消息被删除
V2TIM_MSG_STATUS_LOCAL_REVOKED = 6, ///< 被撤销的消息
*/
如果消息撤回 在拉取消息的时候 V2TIMMessage 这个类中的 属性 status会发生变化。把消息过虑显示就行了。
这简单介绍以下几个功能
发送消息方法调用
拉取历史消息调用
撤回消息调用
直接上代码:
以下代码可以测试 消息撤回功能,可以直接把代码复制在DEMO中,验证。
发送消息
V2TIMMessage *msg= [[V2TIMManager sharedInstance] createTextMessage:@"999"];
[[V2TIMManager sharedInstance]sendMessage:msg receiver:@"66" groupID:nil priority:V2TIM_PRIORITY_DEFAULT onlineUserOnly:NO offlinePushInfo:Nil progress:nil succ:^{
NSLog(@"消息文本发送成功");
} fail:^(int code, NSString *desc) {
NSLog(@"文本消息发送失败---->%@",desc);
}] ;
拉取服务器上的历史消息
V2TIMMessageListGetOption *getinfo = [[V2TIMMessageListGetOption alloc]init];
getinfo.getType = V2TIM_GET_CLOUD_OLDER_MSG;
getinfo.userID = @"66";
getinfo.count = 10;
getinfo.lastMsg = nil;
[[V2TIMManager sharedInstance]getHistoryMessageList:getinfo succ:^(NSArray *msgs) {
for (int i = 0; i < msgs.count; i++) {
if (i == 0) {
self.message = [msgs objectAtIndex:i];
}
V2TIMMessage *mg = [msgs objectAtIndex:i];
[self readData:mg];
}
} fail:^(int code, NSString *desc) {
NSLog(@"---%d---message-->%@",code,desc);
}];
-(void)readData:(V2TIMMessage *)msg
{
/*
V2TIM_MSG_STATUS_SENDING = 1, ///< 消息发送中
V2TIM_MSG_STATUS_SEND_SUCC = 2, ///< 消息发送成功
V2TIM_MSG_STATUS_SEND_FAIL = 3, ///< 消息发送失败
V2TIM_MSG_STATUS_HAS_DELETED = 4, ///< 消息被删除
V2TIM_MSG_STATUS_LOCAL_REVOKED = 6, ///< 被撤销的消息
*/
if (msg.elemType == V2TIM_ELEM_TYPE_NONE) {
NSLog(@"未知消息-->%@",msg.textElem.text);
}else if (msg.elemType == V2TIM_ELEM_TYPE_TEXT){
NSLog(@"文本消-->%@----state---%ld",msg.textElem.text,(long)msg.status);
//status 跟据这个状态 来判断是否撤回
}else if (msg.elemType == V2TIM_ELEM_TYPE_CUSTOM){
NSString * str =[[NSString alloc] initWithData:msg.customElem.data encoding:NSUTF8StringEncoding];
NSLog(@"自定义消息--->>%@",str);
}else if (msg.elemType == V2TIM_ELEM_TYPE_IMAGE){
NSLog(@"图片消息%@",msg.imageElem.imageList);
}else if (msg.elemType == V2TIM_ELEM_TYPE_VIDEO){
NSLog(@"视频消息--->>%@",msg.videoElem.videoPath);
}else if (msg.elemType == V2TIM_ELEM_TYPE_FILE){
NSLog(@"文件消息---->>%@",msg.fileElem.path);
}else if (msg.elemType == V2TIM_ELEM_TYPE_LOCATION){
NSLog(@"地理位置消息---->>%@",msg.locationElem.desc);
}else if (msg.elemType == V2TIM_ELEM_TYPE_FACE){
NSLog(@"表情消息---->>%d",msg.faceElem.index);
}else if (msg.elemType == V2TIM_ELEM_TYPE_GROUP_TIPS){
NSLog(@"msg----%@",msg.groupTipsElem.groupID);
}
}
注意事项
源代码