V2TIMReceiveMessageOpt
as follows. One-to-one chat settings support all except the fourth option, group chat settings support all options, and all message settings only support the first and third options.Message Receiving Option | Feature Description |
V2TIM_RECEIVE_MESSAGE | Messages will be received when the user is online, and offline push notifications will be received when the user is offline. |
V2TIM_NOT_RECEIVE_MESSAGE | Messages will not be received no matter whether the user is online or offline. |
V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE | Messages will be received when the user is online, and offline push notifications will not be received when the user is offline. |
V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT | Receive messages online, and only receive push for at messages when offline. |
V2TIMReceiveMessageOpt
options can be set to implement group message notification muting:V2TIM_NOT_RECEIVE_MESSAGE
, no messages will be received, and the conversation list will not be updated.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE
.unreadCount
(Android/iOS and macOS/Windows) in the V2TIMConversation
of the conversation.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE
based on the recvOpt
(Android/iOS and macOS/Windows) of V2TIMConversation
.at
messages.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT
.getAllReceiveMessageOpt
(Android/iOS and macOS/Windows) interface to obtain the global message receiving status V2TIMReceiveMessageOptInfo (Android/iOS & Mac/Windows) . Based on the set time window and receiving options, you can determine how the upper-level UI should be displayed.unreadCount
feature, it applies only to work groups (Work), public groups (Public), and communities (Community), but not to audio-video groups (AVChatRoom) or meeting groups (Meeting). For more information on group types, see Group System.setC2CReceiveMessageOpt
(Android/iOS and macOS/Windows) to set the message receiving option for a one-to-one chat.
You can use the userIDList
parameter to specify up to 30 users at a time.// Set not to receive messages no matter whether the user is online or offlineList<String> userList = new ArrayList<>();userList.add("user1");userList.add("user2");V2TIMManager.getMessageManager().setC2CReceiveMessageOpt(userList, V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE, new V2TIMCallback() {@Overridepublic void onSuccess() {Log.i("imsdk", "success");}@Overridepublic void onError(int code, String desc) {Log.i("imsdk", "failure, code:" + code + ", desc:" + desc);}});
// Set not to receive messages no matter whether the user is online or offlineNSArray* array = [NSArray arrayWithObjects:@"user1", @"user2", nil]];[[V2TIMManager sharedInstance] setC2CReceiveMessageOpt:array opt:V2TIM_NOT_RECEIVE_MESSAGE succ:^{NSLog(@"success");} fail:^(int code, NSString *desc) {NSLog(@"failure, code:%d, desc:%@", code, desc);}];
class Callback final : public V2TIMCallback {public:using SuccessCallback = std::function<void()>;using ErrorCallback = std::function<void(int, const V2TIMString&)>;Callback() = default;~Callback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess() override {if (success_callback_) {success_callback_();}}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_;};V2TIMStringVector userIDList;userIDList.PushBack("user1");userIDList.PushBack("user2");V2TIMReceiveMessageOpt opt = V2TIMReceiveMessageOpt::V2TIM_NOT_RECEIVE_MESSAGE;auto callback = new Callback;callback->SetCallback([=]() {// Configured successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to configuredelete callback;});V2TIMManager::GetInstance()->GetMessageManager()->SetC2CReceiveMessageOpt(userIDList, opt, callback);
getC2CReceiveMessageOpt
(Android/iOS and macOS/Windows) to get the message receiving option for a one-to-one chat.List<String> userList = new ArrayList<>();userList.add("user1");userList.add("user2");V2TIMManager.getMessageManager().getC2CReceiveMessageOpt(userList, new V2TIMValueCallback<List<V2TIMReceiveMessageOptInfo>>() {@Overridepublic void onSuccess(List<V2TIMReceiveMessageOptInfo> v2TIMReceiveMessageOptInfos) {for (int i = 0; i < v2TIMReceiveMessageOptInfos.size(); i++){V2TIMReceiveMessageOptInfo info = v2TIMReceiveMessageOptInfos.get(i);Log.i("imsdk", "userId: " + info.getUserID() ", receiveOpt: " + info.getC2CReceiveMessageOpt());}}@Overridepublic void onError(int code, String desc) {Log.i("imsdk", "failure, code:" + code + ", desc:" + desc);}});
NSArray* array = [NSArray arrayWithObjects:@"user1", @"user2", nil]];[[V2TIMManager sharedInstance] getC2CReceiveMessageOpt:array succ:^(NSArray<V2TIMReceiveMessageOptInfo *> *optList) {for (int i = 0; i < optList.count; i++) {V2TIMReceiveMessageOptInfo* info = optList[i];NSLog(@"userId: %@, receiveOpt: %@", info.userID, info.receiveOpt);}} fail:^(int code, NSString *desc) {NSLog(@"failure, code:%d, desc:%@", code, desc);}];
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_;};V2TIMStringVector userIDList;userIDList.PushBack("user1");userIDList.PushBack("user2");auto callback = new ValueCallback<V2TIMReceiveMessageOptInfoVector>{};callback->SetCallback([=](const V2TIMReceiveMessageOptInfoVector& receiveMessageOptInfoList) {for (size_t i = 0; i < receiveMessageOptInfoList.Size(); ++i) {const V2TIMReceiveMessageOptInfo& opt = receiveMessageOptInfoList[i];V2TIMString userID = opt.userID;V2TIMReceiveMessageOpt receiveOpt = opt.receiveOpt;}delete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to obtaindelete callback;});V2TIMManager::GetInstance()->GetMessageManager()->GetC2CReceiveMessageOpt(userIDList, callback);
setGroupReceiveMessageOpt
(Android/iOS and macOS/Windows) to set the message receiving option for a group chat.// Set not to receive messages no matter whether the user is online or offlineString groupID = "groupID";V2TIMManager.getMessageManager().setGroupReceiveMessageOpt(groupID, V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE, new V2TIMCallback() {@Overridepublic void onSuccess() {Log.i("imsdk", "success");}@Overridepublic void onError(int code, String desc) {Log.i("imsdk", "failure, code:" + code + ", desc:" + desc);}});
// Set not to receive messages no matter whether the user is online or offlineNSString *groupID = @"groupID";[[V2TIMManager sharedInstance] setGroupReceiveMessageOpt:groupID opt:V2TIM_NOT_RECEIVE_MESSAGE succ:^{NSLog(@"success");} fail:^(int code, NSString *desc) {NSLog(@"failure, code:%d, desc:%@", code, desc);}];
class Callback final : public V2TIMCallback {public:using SuccessCallback = std::function<void()>;using ErrorCallback = std::function<void(int, const V2TIMString&)>;Callback() = default;~Callback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess() override {if (success_callback_) {success_callback_();}}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_;};V2TIMString groupID = "groupID";V2TIMReceiveMessageOpt opt = V2TIMReceiveMessageOpt::V2TIM_NOT_RECEIVE_MESSAGE;auto callback = new Callback;callback->SetCallback([=]() {// Configured successfullydelete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to configuredelete callback;});V2TIMManager::GetInstance()->GetMessageManager()->SetGroupReceiveMessageOpt(groupID, opt, callback);
getGroupsInfo
API (Android/iOS and macOS/Windows) to get the list of V2TIMGroupInfo
objects in the group profile. Here, the recvOpt
field of the object indicates the message receiving option for the group chat.List<String> groupIDList = new ArrayList<>();groupIDList.add("groupID1");groupIDList.add("groupID2");V2TIMManager.getGroupManager().getGroupsInfo(groupIDList, new V2TIMValueCallback<List<V2TIMGroupInfoResult>>() {@Overridepublic void onSuccess(List<V2TIMGroupInfoResult> v2TIMGroupProfileResults) {for (V2TIMGroupInfoResult result : v2TIMGroupProfileResults) {V2TIMGroupInfo info = result.getGroupInfo();Log.i("imsdk", "recvOpt: " + info.getRecvOpt());}}@Overridepublic void onError(int code, String desc) {Log.i("imsdk", "failure, code:" + code + ", desc:" + desc);}});
NSArray* array = [NSArray arrayWithObjects:@"groupID1", @"groupID2", nil]];[[V2TIMManager sharedInstance] getGroupsInfo:array succ:^(NSArray<V2TIMGroupInfoResult *> * groupResultList) {for (V2TIMGroupInfoResult *result in groupResultList){V2TIMGroupInfo *info = result.info;NSLog(@"recvOpt, %d", (int)info.recvOpt);}} fail:^(int code, NSString *desc) {NSLog(@"failure, code:%d, desc:%@", code, desc);}];
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_;};V2TIMStringVector groupIDList;groupIDList.PushBack("groupID1");groupIDList.PushBack("groupID2");auto callback = new ValueCallback<V2TIMGroupInfoResultVector>{};callback->SetCallback([=](const V2TIMGroupInfoResultVector& groupInfoResultList) {for (size_t i = 0; i < groupInfoResultList.Size(); ++i) {const V2TIMGroupInfo& info = groupInfoResultList[i].info;V2TIMReceiveMessageOpt recvOpt = info.recvOpt;}delete callback;},[=](int error_code, const V2TIMString& error_message) {// Failed to obtaindelete callback;});V2TIMManager::GetInstance()->GetGroupManager()->GetGroupsInfo(groupIDList, callback);
setAllReceiveMessageOpt
(Android/iOS & Mac/Windows) to set the message receiving option for all message. Support is provided for setting daily repetition, as well as for specifying a specific time period for activation.// Set the logged-in account to receive messages normally online between 10 PM and 6 AM every day, without receiving push notifications when offline.V2TIMManager.getMessageManager().setAllReceiveMessageOpt(V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE, 22, 0, 0, 8*60*60, new V2TIMCallback() {@Overridepublic void onSuccess() {Log.d("imsdk", "setAllReceiveMessageOpt onSuccess");}@Overridepublic void onError(int code, String desc) {Log.d("imsdk", "setAllReceiveMessageOpt onError code = " + code + ", desc = " + desc);}});// Assuming that 10 PM UTC time tonight is 12345678// set the logged-in account to receive messages normally online and not receive push notifications when offline for a continuous period of three days starting from 10 PM tonight (12345678 UTC time).V2TIMManager.getMessageManager().setAllReceiveMessageOpt(V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE, 12345678, 3*24*60*60, new V2TIMCallback() {@Overridepublic void onSuccess() {Log.d("imsdk", "setAllReceiveMessageOpt onSuccess");}@Overridepublic void onError(int code, String desc) {Log.d("imsdk", "setAllReceiveMessageOpt onError code = " + code + ", desc = " + desc);}});
// Set the logged-in account to receive messages normally online between 10 PM and 6 AM every day, without receiving push notifications when offline.[[V2TIMManager sharedInstance] setAllReceiveMessageOpt:V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE startHour:22 startMinute:0 startSecond:0 duration:8*60*60 succ:^{NSLog(@"success");} fail:^(int code, NSString *desc) {NSLog(@"failure, code:%d, desc:%@", code, desc);}];// Assuming that 10 PM UTC time tonight is 12345678// set the logged-in account to receive messages normally online and not receive push notifications when offline for a continuous period of three days starting from 10 PM tonight (12345678 UTC time).[[V2TIMManager sharedInstance] setAllReceiveMessageOpt:V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE startTimeStamp:12345678 duration:3*24*60*60 succ:^{NSLog(@"success");} fail:^(int code, NSString *desc) {NSLog(@"failure, code:%d, desc:%@", code, desc);}];
class Callback final : public V2TIMCallback {public:using SuccessCallback = std::function<void()>;using ErrorCallback = std::function<void(int, const V2TIMString&)>;Callback() = default;~Callback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess() override {if (success_callback_) {success_callback_();}}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_;};V2TIMReceiveMessageOpt opt = V2TIMReceiveMessageOpt::V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE;auto callback = new Callback;callback->SetCallback([=]() {delete callback;},[=](int error_code, const V2TIMString& error_message) {delete callback;});// Set the logged-in account to receive messages normally online between 10 PM and 6 AM every day, without receiving push notifications when offline.V2TIMManager::GetInstance()->GetMessageManager()->SetAllReceiveMessageOpt(opt, 22, 0, 0, 8*60*60, callback);// Assuming that 10 PM UTC time tonight is 12345678// set the logged-in account to receive messages normally online and not receive push notifications when offline for a continuous period of three days starting from 10 PM tonight (12345678 UTC time).V2TIMManager::GetInstance()->GetMessageManager()->SetAllReceiveMessageOpt(opt, 12345678, 3*24*60*60, callback);
getAllReceiveMessageOpt
(Android/iOS and macOS/Windows) to get the message receiving option for all messages, which is V2TIMReceiveMessageOptInfo (Android/iOS & Mac/Windows) .V2TIMManager.getMessageManager().getAllReceiveMessageOpt(new V2TIMValueCallback<V2TIMReceiveMessageOptInfo>() {@Overridepublic void onSuccess(V2TIMReceiveMessageOptInfo v2TIMReceiveMessageOptInfo) {String result = "startHour = " + v2TIMReceiveMessageOptInfo.getStartHour() +", startMinute = " + v2TIMReceiveMessageOptInfo.getStartMinute() +", startSecond = " + v2TIMReceiveMessageOptInfo.getStartSecond() +", startTimeStamp = " + v2TIMReceiveMessageOptInfo.getStartTimeStamp() +", duration = " + v2TIMReceiveMessageOptInfo.getDuration() +", opt = " + v2TIMReceiveMessageOptInfo.getAllReceiveMessageOpt();Log.d("imsdk", "getAllReceiveMessageOpt onSuccess = " + result);}@Overridepublic void onError(int code, String desc) {Log.d("imsdk", "getAllReceiveMessageOpt onError code = " + code + ", desc = " + desc);}});
[V2TIMManager.sharedInstance getAllReceiveMessageOpt:^(V2TIMReceiveMessageOptInfo *optInfo) {NSLog(@"optInfo %@", optInfo);} fail:^(int code, NSString *desc) {NSLog(@"failure, code:%d, desc:%@", code, desc);}];
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_;};auto callback = new ValueCallback<V2TIMReceiveMessageOptInfo>{};callback->SetCallback([=](const V2TIMReceiveMessageOptInfo& receiveMessageOptInfo) {delete callback;},[=](int error_code, const V2TIMString& error_message) {delete callback;});V2TIMManager::GetInstance()->GetMessageManager()->GetAllReceiveMessageOpt(callback);
Was this page helpful?