腾讯云即时通信IMAndroid&iOS&Windows&Mac_AI解决方案_同尘科技

即时通信 IM 2年前 (2023-12-14) 浏览 123

功能描述

公众号可以为订阅的用户发送广播消息,也可以与订阅的用户进行单聊。当其中有消息的收发时,会产生单聊会话,会话 conversationID 的组成为 c2c_officialAccountID。公众号的创建等管理功能参考服务端的接口,IMSDK 主要提供订阅公众号、取消订阅公众号、获取公众号列表等功能。说明:从 7.6.5011 版本开始支持。

公众号资料类介绍

属性 含义 说明
officialAccountID 公众号 ID 以 @TOA#_ 作为前缀,最长48个字节,可自定义公众号 ID
officialAccountName 公众号名称 最长150字节,使用 UTF-8 编码,1个汉字占3个字节
faceUrl 公众号展示头像 最长500字节
organization 组织名称 最长500字节,使用 UTF-8 编码,1个汉字占3个字节
introduction 简介 最长400字节,使用 UTF-8 编码,1个汉字占3个字节
customData 自定义数据 最长3000字节
createTime 创建时间 单位:秒
subscriberCount 订阅的人数 公众号目前的订阅者人数
subscribeTime 登录用户订阅的时间 单位:秒

订阅公众号

调用 subscribeOfficialAccount (Android / iOS & Mac / Windows) 订阅公众号,直接传入公众号的 officialAccountID 即可。1. 订阅公众号成功后,订阅者会收到 onOfficialAccountSubscribed (Android / iOS & Mac / Windows) 通知。2. 当调用 服务端接口 修改订阅的公众号资料时,订阅者会收到 onOfficialAccountInfoChanged (Android / iOS & Mac / Windows) 通知。3. 当调用 服务端接口 销毁订阅的公众号资料时,订阅者会收到 onOfficialAccountDeleted (Android / iOS & Mac / Windows) 通知。示例代码如下:AndroidiOS & MacWindows

V2TIMManager.getFriendshipManager().subscribeOfficialAccount("official_test", new V2TIMCallback() {
    @Override
    public void onSuccess() {
        // 订阅公众号成功
    }

    @Override
    public void onError(int code, String desc) {
        // 订阅公众号失败
    }
});
V2TIMManager.getFriendshipManager().addFriendListener(new V2TIMFriendshipListener() { @Override public void onOfficialAccountSubscribed(V2TIMOfficialAccountInfo officialAccountInfo) { // 订阅公众号通知 } @Override public void onOfficialAccountDeleted(String officialAccountID) { // 订阅的公众号被销毁通知 } @Override public void onOfficialAccountInfoChanged(V2TIMOfficialAccountInfo officialAccountInfo) { // 订阅的公众号资料更新通知 } });
[[V2TIMManager sharedInstance] subscribeOfficialAccount:@"official_test" succ:^ {    NSLog(@"订阅公众号成功");} fail:^(int code, NSString *desc) {    NSLog(@"订阅公众号失败, code: %d, msg: %@", code, msg);}];
[[V2TIMManager sharedInstance] addFriendListener:self];
- (void)onOfficialAccountSubscribed:(V2TIMOfficialAccountInfo *)officialAccountInfo { // 公众号订阅通知}
- (void)onOfficialAccountDeleted:(NSString *)officialAccountID { // 订阅的公众号被销毁通知}
- (void)onOfficialAccountInfoChanged:(V2TIMOfficialAccountInfo *)officialAccountInfo { // 订阅的公众号资料更新通知}
template class ValueCallback final : public V2TIMValueCallback {public:    using SuccessCallback = std::function;    using ErrorCallback = std::function;        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 Callback;callback->SetCallback( [=]() { // 订阅公众号成功 delete callback; }, [=](int error_code, const V2TIMString& error_message) { // 订阅公众号失败 delete callback; });V2TIMManager::GetInstance()->GetFriendshipManager()->SubscribeOfficialAccount( "official_test", callback);
// 公众号通知class FriendshipListener final : public V2TIMFriendshipListener {public: FriendshipListener() = default; ~FriendshipListener() override = default; void OnOfficialAccountSubscribed(const V2TIMOfficialAccountInfo &info) override { // 公众号订阅通知 } void OnOfficialAccountDeleted(const V2TIMString &officialAccountID) override { // 订阅的公众号被销毁通知 } void OnOfficialAccountInfoChanged(const V2TIMOfficialAccountInfo &info) override { // 订阅的公众号资料更新通知 }};
FriendshipListener friendshipListener;V2TIMManager::GetInstance()->AddFriendshipListener(&friendshipListener);

取消订阅公众号

调用 unsubscribeOfficialAccount (Android / iOS & Mac / Windows) 订阅公众号,直接传入公众号的 officialAccountID 即可。取消订阅公众号成功后,取消订阅的用户会收到 onOfficialAccountUnsubscribed (Android / iOS & Mac / Windows) 通知。示例代码如下:AndroidiOS & MacWindows

V2TIMManager.getFriendshipManager().unsubscribeOfficialAccount("official_test", new V2TIMCallback() {    @Override    public void onSuccess() {         // 取消订阅公众号成功     }      @Override    public void onError(int code, String desc) {        // 取消订阅公众号失败     } });
V2TIMManager.getFriendshipManager().addFriendListener(new V2TIMFriendshipListener() { @Override public void onOfficialAccountUnsubscribed(String officialAccountID) { // 取消订阅公众号通知 }});
[[V2TIMManager sharedInstance] unsubscribeOfficialAccount:@"official_test" succ:^ {    NSLog(@"取消订阅公众号成功");} fail:^(int code, NSString *desc) {    NSLog(@"取消订阅公众号失败, code: %d, msg: %@", code, msg);}];
[[V2TIMManager sharedInstance] addFriendListener:self];
- (void)onOfficialAccountUnsubscribed:(V2TIMOfficialAccountInfo *)officialAccountInfo { // 取消订阅公众号通知}
template class ValueCallback final : public V2TIMValueCallback {public:    using SuccessCallback = std::function;    using ErrorCallback = std::function;        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 Callback;callback->SetCallback( [=]() { // 取消订阅公众号成功 delete callback; }, [=](int error_code, const V2TIMString& error_message) { // 取消订阅公众号失败 delete callback; }); V2TIMManager::GetInstance()->GetFriendshipManager()->UnsubscribeOfficialAccount( "official_test", callback);
// 公众号通知class FriendshipListener final : public V2TIMFriendshipListener {public: FriendshipListener() = default; ~FriendshipListener() override = default;
void OnOfficialAccountUnsubscribed(const V2TIMString &officialAccountID) override { // 取消订阅公众号通知 }};
FriendshipListener friendshipListener;V2TIMManager::GetInstance()->AddFriendshipListener(&friendshipListener);



获取公众号列表

调用 getOfficialAccountsInfo (Android / iOS & Mac / Windows) 接口获取公众号列表。当 officialAccountIDList 列表为空时,为获取订阅的公众号列表;当 officialAccountIDList 填入指定的公众号 ID 时,为获取填入的公众号列表。示例代码如下:AndroidiOS & MacWindows

List officialAccountIDList = new ArrayList();V2TIMManager.getFriendshipManager().getOfficialAccountsInfo(officialAccountIDList, new V2TIMValueCallback<List>() {    @Override    public void onSuccess(List v2TIMOfficialAccountInfoResults) {        // 获取订阅的公众号列表成功    }
@Override public void onError(int code, String desc) { // 获取订阅的公众号列表失败 }});
[[V2TIMManager sharedInstance] getOfficialAccountsInfo:nil succ:^(NSArray *resultList) {    [self appendString:[NSString stringWithFormat:@"获取订阅的公众号列表完成:%@", resultList]];} fail:^(int code, NSString *desc) {    [self appendString:[NSString stringWithFormat:@"获取订阅的公众号列表失败,code:%d msg:%@",code,desc]];}];
template class ValueCallback final : public V2TIMValueCallback {public:    using SuccessCallback = std::function;    using ErrorCallback = std::function;        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 officialAccountIDList;
auto callback = new ValueCallback{};callback->SetCallback( [=](const V2TIMOfficialAccountInfoResultVector& officialAccountInfoResultList) { // 获取订阅的公众号列表成功 delete callback; }, [=](int error_code, const V2TIMString& error_message) { // 获取订阅的公众号列表失败 delete callback; });
V2TIMManager::GetInstance()->GetFriendshipManager()->GetOfficialAccountsInfo( officialAccountIDList, callback);

公众号收发消息

公众号的消息分为:公众号给所有订阅者发送的广播消息和公众号与某一个订阅者之间的单聊消息。

公众号发送广播消息

调用 服务端公众号发送广播消息接口 可以向关注公众号的所有订阅者发送广播消息,

公众号与订阅者互发单聊消息

调用 IMSDK 的 sendMessage (Android/iOS & Mac/Windows) 接口发送给公众号消息,其中 receiver 填公众号 officialAccountID。调用 服务端发送单聊消息接口 向该订阅者发送单聊消息,其中 From_Account 填公众号 officialAccountID,To_Account 填订阅者 userID。

接收消息

两种消息都可以通过 IMSDK 的 消息监听器 来接收。




对即时通讯IM解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?