tencent cloud

文档反馈

Android & iOS & Mac

最后更新时间:2023-07-17 15:56:57

    功能描述

    如果您需屏蔽某人的消息,可以把该用户拉入黑名单。

    黑名单

    拉黑某人

    您可以调用 addToBlackList (Android / iOS & Mac / Windows) 接口把某用户加入黑名单,即拉黑该用户。 如果您事先调用 addFriendListener 添加了监听器,拉黑后会触发 onBlackListAdded 回调。
    说明
    如果用户 A 与用户 B 之间存在好友关系,拉黑后会解除双向好友关系,二者之间无法发起会话、无法发起加好友请求。
    被拉黑的用户默认不会感知到 “被拉黑” 的状态,消息发送后不会返回已被对方拉黑的错误码。 如果您希望被拉黑的用户在发消息时返回 ”已被对方拉黑“ 的错误提示,可以登录 即时通信 IM 控制台 关闭 “黑名单检查”。关闭后,被拉黑的用户在发送消息时,SDK 会报 20007 错误码。配置页面路径为:
    
    
    
    示例代码如下:
    Android
    iOS & Mac
    Windows
    List<String> userIDList = new ArrayList<>();
    userIDList.add("user1");
    userIDList.add("user2");
    V2TIMManager.getFriendshipManager().addToBlackList(userIDList, new V2TIMValueCallback<List<V2TIMFriendOperationResult>>() {
    @Override
    public void onSuccess(List<V2TIMFriendOperationResult> v2TIMFriendOperationResults) {
    // 拉黑成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 拉黑失败
    }
    });
    
    // 监听黑名单列表新增通知
    V2TIMManager.getFriendshipManager().addFriendListener(new V2TIMFriendshipListener() {
    @Override
    public void onBlackListAdd(List<V2TIMFriendInfo> infoList) {
    // 黑名单列表新增通知
    }
    });
    // 拉黑某人
    [[V2TIMManager sharedInstance] addToBlackList:@[@"user1", @"user2"] succ:^(NSArray<V2TIMFriendOperationResult *> *resultList) {
    // 拉黑成功
    } fail:^(int code, NSString *desc) {
    // 拉黑失败
    }];
    
    // 监听黑名单列表新增通知
    [[V2TIMManager sharedInstance] addFriendListener:self];
    - (void)onBlackListAdded:(NSArray<V2TIMFriendInfo *>*)infoList {
    // 黑名单列表新增通知
    }
    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(u8"user1");
    userIDList.PushBack(u8"user2");
    
    auto callback = new ValueCallback<V2TIMFriendOperationResultVector>{};
    callback->SetCallback(
    [=](const V2TIMFriendOperationResultVector& friendOperationResultList) {
    // 拉黑成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 拉黑失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetFriendshipManager()->AddToBlackList(userIDList, callback);
    
    // 监听黑名单列表新增通知
    class FriendshipListener final : public V2TIMFriendshipListener {
    public:
    void OnBlackListAdded(const V2TIMFriendInfoVector& infoList) override {
    // 黑名单列表新增通知
    }
    // 其他成员 ...
    };
    // 添加关系链事件监听器,注意在移除监听器之前需要保持 friendshipListener 的生命期,以免接收不到事件回调
    FriendshipListener friendshipListener;
    V2TIMManager::GetInstance()->GetFriendshipManager()->AddFriendListener(&friendshipListener);

    解除拉黑

    您可以调用 deleteFromBlackList (Android / iOS & Mac / Windows) 将某用户从黑名单中移除,移除后可正常发起加好友请求、发起会话。 如果您事先调用 addFriendListener 添加了监听器,解除拉黑后会触发 onBlackListDeleted 回调。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    List<String> userIDList = new ArrayList<>();
    userIDList.add("user1");
    userIDList.add("user2");
    V2TIMManager.getFriendshipManager().deleteFromBlackList(userIDList, new V2TIMValueCallback<List<V2TIMFriendOperationResult>>() {
    @Override
    public void onSuccess(List<V2TIMFriendOperationResult> v2TIMFriendOperationResults) {
    // 解除拉黑成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 解除拉黑失败
    }
    });
    
    // 监听黑名单列表删除通知
    V2TIMManager.getFriendshipManager().addFriendListener(new V2TIMFriendshipListener() {
    @Override
    public void onBlackListDeleted(List<String> userList) {
    // 黑名单列表删除通知
    }
    });
    // 解除拉黑
    [[V2TIMManager sharedInstance] deleteFromBlackList:@[@"user1", @"user2"] succ:^(NSArray<V2TIMFriendOperationResult *> *resultList) {
    // 解除拉黑成功
    } fail:^(int code, NSString *desc) {
    // 解除拉黑失败
    }];
    
    // 监听黑名单列表删除通知
    [[V2TIMManager sharedInstance] addFriendListener:self];
    - (void)onBlackListDeleted:(NSArray*)userIDList {
    // 黑名单列表删除通知
    }
    
    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(u8"user1");
    userIDList.PushBack(u8"user2");
    
    auto callback = new ValueCallback<V2TIMFriendOperationResultVector>{};
    callback->SetCallback(
    [=](const V2TIMFriendOperationResultVector& friendOperationResultList) {
    // 解除拉黑成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 解除拉黑失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetFriendshipManager()->DeleteFromBlackList(userIDList, callback);
    
    // 监听黑名单列表删除通知
    class FriendshipListener final : public V2TIMFriendshipListener {
    public:
    void OnBlackListAdded(const V2TIMFriendInfoVector& infoList) override {
    // 黑名单列表删除通知
    }
    // 其他成员 ...
    };
    // 添加关系链事件监听器,注意在移除监听器之前需要保持 friendshipListener 的生命期,以免接收不到事件回调
    FriendshipListener friendshipListener;
    V2TIMManager::GetInstance()->GetFriendshipManager()->AddFriendListener(&friendshipListener);

    获取黑名单列表

    您可以通过 getBlackList (Android / iOS & Mac / Windows) 查看已拉黑多少用户,并对黑名单人员进行管理。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMManager.getFriendshipManager().getBlackList(new V2TIMValueCallback<List<V2TIMFriendInfo>>() {
    @Override
    public void onSuccess(List<V2TIMFriendInfo> v2TIMFriendInfos) {
    // 获取黑名单列表成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 获取黑名单列表失败
    }
    });
    // 获取黑名单列表
    [[V2TIMManager sharedInstance] getBlackList:^(NSArray<V2TIMFriendInfo *> *infoList) {
    // 获取黑名单列表成功
    } fail:^(int code, NSString *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<V2TIMFriendInfoVector>{};
    callback->SetCallback(
    [=](const V2TIMFriendInfoVector& friendInfoList) {
    // 获取黑名单列表成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 获取黑名单列表失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetFriendshipManager()->GetBlackList(callback);
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持