onlineUserOnly
to true/YES
when calling sendMessage
. A message sent in this way differs from a general one in that:sendMessage
(Java / Swift / Objective-C / C++) to send a specified custom online message. After receiving the specified custom online message and determining that the sender is typing, the receiver can display "Typing..." on the UI.// Send the prompt "Typing…" to user AJSONObject jsonObject = new JSONObject();try {jsonObject.put("command", "textInput");} catch (JSONException e) {e.printStackTrace();}V2TIMMessage v2TIMMessage = V2TIMManager.getMessageManager().createCustomMessage(jsonObject.toString().getBytes());V2TIMManager.getMessageManager().sendMessage(v2TIMMessage, "userA", null, V2TIMMessage.V2TIM_PRIORITY_DEFAULT, true, v2TIMOfflinePushInfo, new V2TIMSendCallback<V2TIMMessage>() {@Overridepublic void onError(int code, String desc) {}@Overridepublic void onSuccess(V2TIMMessage v2TIMMessage) {}@Overridepublic void onProgress(int progress) {}});
// Send the prompt "Typing..." to user Alet customStr = "{\\"command\\": \\"textInput\\"}"if let customData = customStr.data(using: .utf8) {if let message = V2TIMManager.shared.createCustomMessage(data: customData) {V2TIMManager.shared.sendMessage(message: message, receiver: "userID", groupID: nil, priority: .V2TIM_PRIORITY_DEFAULT, onlineUserOnly: true, offlinePushInfo: nil) { progress in} succ: {print("Custom message sent successfully.")} fail: { code, desc inprint("Failed to send custom message: \\(code), \\(desc)")}}}
// Send the prompt "Typing..." to user ANSString *customStr = @"{\\"command\\": \\"textInput\\"}";NSData *customData = [customStr dataUsingEncoding:NSUTF8StringEncoding];V2TIMMessage *msg = [[V2TIMManager sharedInstance] createCustomMessage:customData];[[V2TIMManager sharedInstance] sendMessage:msg receiver:@"userA" groupID:nilpriority:V2TIM_PRIORITY_DEFAULT onlineUserOnly:YES offlinePushInfo:nil progress:^(uint32_t progress) {} succ:^{// Message sent successfully} fail:^(int code, NSString *msg) {// Failed to send the message}];
class SendCallback final : public V2TIMSendCallback {public:using SuccessCallback = std::function<void(const V2TIMMessage&)>;using ErrorCallback = std::function<void(int, const V2TIMString&)>;using ProgressCallback = std::function<void(uint32_t)>;SendCallback() = default;~SendCallback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback,ProgressCallback progress_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);progress_callback_ = std::move(progress_callback);}void OnSuccess(const V2TIMMessage& message) override {if (success_callback_) {success_callback_(message);}}void OnError(int error_code, const V2TIMString& error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}void OnProgress(uint32_t progress) override {if (progress_callback_) {progress_callback_(progress);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;ProgressCallback progress_callback_;};// Send the prompt "Typing…" to user Astd::string str{u8"{\\"command\\": \\"textInput\\"}"};V2TIMBuffer data = {reinterpret_cast<const uint8_t*>(str.data()), str.size()};V2TIMMessage message =V2TIMManager::GetInstance()->GetMessageManager()->CreateCustomMessage(data, description, extension);auto callback = new SendCallback{};callback->SetCallback([=](const V2TIMMessage& message) { delete callback; },[=](int error_code, const V2TIMString& error_message) { delete callback; },[=](uint32_t progress) {});V2TIMManager::GetInstance()->GetMessageManager()->SendMessage(message, "userA", {}, V2TIMMessagePriority::V2TIM_PRIORITY_DEFAULT, true, {}, callback);
Was this page helpful?