有奖捉虫:行业应用 & 管理与支持文档专题 HOT

功能描述

插入消息只会将消息插入本地数据库,不会发送到服务端。 该接口主要用于满足向聊天会话中插入一些提示性消息的需求,例如 “您已经退出该群”、“请注意信息安全,不要在群聊中发送任何账号、密码和验证码等私密信息“ 等。这类消息有展示在聊天消息区的需求,但并没有发送给其他人的必要。
注意
如果用户切换手机登录,或程序卸载重装,之前插入的消息会丢失。

向单聊插入本地消息

您可以调用 insertC2CMessageToLocalStorage (Android / iOS & Mac / Windows) 向单聊插入本地消息。
示例代码如下:
Android
iOS & Mac
Windows
// 创建一条消息
V2TIMMessage msg = V2TIMManager.getMessageManager().createTextMessage("本地插入一条 C2C 消息");
// 插入到本地存储
V2TIMManager.getMessageManager().insertC2CMessageToLocalStorage(msg, "receiver_userID", "sender_userID", new V2TIMValueCallback<V2TIMMessage>() {
@Override
public void onSuccess(V2TIMMessage message) {
// 插入 C2C 消息成功
}

@Override
public void onError(int code, String desc) {
// 插入 C2C 消息失败
}
});
// 创建一条消息
V2TIMMessage *msg = [[V2TIMManager sharedInstance] createTextMessage:@"本地插入一条 C2C 消息"];
// 插入到本地存储
[[V2TIMManager sharedInstance] insertC2CMessageToLocalStorage:msg
to:@"receiver_userID" // 接收者的 userID
sender:@"sender_userID" // 发送者的 userID
succ:^{
NSLog(@"插入 C2C 消息成功");
} fail:^(int code, NSString *msg) {
NSLog(@"插入 C2C 消息失败, code: %d, msg: %@", code, msg);
}];
template <class T>
class ValueCallback final : public V2TIMValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T&)>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

ValueCallback() = default;
~ValueCallback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess(const T& value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMMessage message =
V2TIMManager::GetInstance()->GetMessageManager()->CreateTextMessage(u8"本地插入一条 C2C 消息");
V2TIMString userID = "receiver_userID";
V2TIMString sender = "sender_userID";

auto callback = new ValueCallback<V2TIMMessage>{};
callback->SetCallback(
[=](const V2TIMMessage& message) {
// 插入 C2C 消息成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 插入 C2C 消息失败
delete callback;
});

V2TIMManager::GetInstance()->GetMessageManager()->InsertGroupMessageToLocalStorage(message, userID, sender,
callback);

向群聊插入本地消息

您可以调用 insertGroupMessageToLocalStorage (Android / iOS & Mac / Windows) 向群聊插入本地消息。
示例代码如下:
Android
iOS & Mac
Windows
// 创建一条消息
V2TIMMessage msg = V2TIMManager.getMessageManager().createTextMessage("本地插入一条群消息");
// 插入到本地存储
V2TIMManager.getMessageManager().insertGroupMessageToLocalStorage(msg, "groupID", "sender_userID", new V2TIMValueCallback<V2TIMMessage>() {
@Override
public void onSuccess(V2TIMMessage message) {
// 插入群消息成功
}

@Override
public void onError(int code, String desc) {
// 插入群消息失败
}
});
// 创建一条消息
V2TIMMessage *msg = [[V2TIMManager sharedInstance] createTextMessage:@"本地插入一条群消息"];
// 插入到本地存储
[[V2TIMManager sharedInstance] insertGroupMessageToLocalStorage:msg
to:@"groupID" // 群聊 groupID
sender:@"sender_userID" // 发送者的 userID
succ:^{
NSLog(@"插入群消息成功");
} fail:^(int code, NSString *msg) {
NSLog(@"插入群消息失败, code: %d, msg: %@", code, msg);
}];
template <class T>
class ValueCallback final : public V2TIMValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T&)>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

ValueCallback() = default;
~ValueCallback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess(const T& value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMMessage message =
V2TIMManager::GetInstance()->GetMessageManager()->CreateTextMessage(u8"本地插入一条群消息");
V2TIMString groupID = "groupID";
V2TIMString sender = "sender_userID";

auto callback = new ValueCallback<V2TIMMessage>{};
callback->SetCallback(
[=](const V2TIMMessage& message) {
// 插入群消息成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 插入群消息失败
delete callback;
});

V2TIMManager::GetInstance()->GetMessageManager()->InsertGroupMessageToLocalStorage(message, groupID, sender,
callback);