IM在群组中接收后端发送来的消息,需要显示还需要保存在本地,应该怎么处理呢?

2020-12-13 22:07:31 浏览数 (1)

情景再现

App内有一个领取红包的消息通知,是通过服务端推送过来的消息(服务端使用的方法如下图)

目前已经知道IMSDK会有收到群内系统推送的方法(如下)

在TUIKit中回调了这个方法后发送了一个通知

如果您是用了TUIkit的话,您只要注册这个通知即可接受到消息,并调用自己的方法

保存本地并显示消息

现将这条消息保存到本地,我们可以使用一下api来保存消息

代码语言:objective-c复制
/**
 *  4.8 向群组消息列表中添加一条消息
 *
 *  该接口主要用于满足向群组聊天会话中插入一些提示性消息的需求,比如“您已经退出该群”,这类消息有展示
 *  在聊天消息区的需求,但并没有发送给其他人的必要。
 *  所以 insertGroupMessageToLocalStorage() 相当于一个被禁用了网络发送能力的 sendMessage() 接口。
 *
 *  @return msgID 消息唯一标识
 *  @note 通过该接口 save 的消息只存本地,程序卸载后会丢失。
 */
- (NSString *)insertGroupMessageToLocalStorage:(V2TIMMessage *)msg to:(NSString *)groupID sender:(NSString *)sender succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;

使用方法

创建一个自定义消息(消息类型可根据您自己的实际情况选择)

代码语言:objective-c复制
    NSDictionary *dict = @{@"test2":@"1223455",
                           @"test1":@"1223455",
                           @"test3":@"1223455",
                           @"test4":@"您已成功领取了1223455用户的红包",
                           @"test5":@"1223455",
                           @"test6":@"1223455",

    };
    NSData *data= [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];

    V2TIMMessage *message = [[V2TIMManager sharedInstance] createCustomMessage:data];

将消息保存到本地

代码语言:objective-c复制
    NSString *string = [[V2TIMManager sharedInstance] insertGroupMessageToLocalStorage:message to:groupId sender:@" " succ:^{
        
    } fail:^(int code, NSString *desc) {
        
    }];

显示消息,模拟收到一条新消息即可

代码语言:objective-c复制
    [[NSNotificationCenter defaultCenter] postNotificationName:TUIKitNotification_TIMMessageListener object:message];

完整代码截图,这样就实现了保存数据并展示给自己看。

0 人点赞