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

功能描述

公众号可以为订阅的用户发送广播消息,也可以与订阅的用户进行单聊。
当其中有消息的收发时,会产生单聊会话,会话 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) 通知。
示例代码如下:
Android
iOS & Mac
Windows
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 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 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) 通知。
示例代码如下:
Android
iOS & Mac
Windows
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 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 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 时,为获取填入的公众号列表。
示例代码如下:
Android
iOS & Mac
Windows
List<String> officialAccountIDList = new ArrayList<>();
V2TIMManager.getFriendshipManager().getOfficialAccountsInfo(officialAccountIDList, new V2TIMValueCallback<List<V2TIMOfficialAccountInfoResult>>() {
@Override
public void onSuccess(List<V2TIMOfficialAccountInfoResult> v2TIMOfficialAccountInfoResults) {
// 获取订阅的公众号列表成功
}
?
@Override
public void onError(int code, String desc) {
// 获取订阅的公众号列表失败
}
});
[[V2TIMManager sharedInstance] getOfficialAccountsInfo:nil succ:^(NSArray<V2TIMOfficialAccountInfoResult *> *resultList) {
[self appendString:[NSString stringWithFormat:@"获取订阅的公众号列表完成:%@", resultList]];
} fail:^(int code, NSString *desc) {
[self appendString:[NSString stringWithFormat:@"获取订阅的公众号列表失败,code:%d msg:%@",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 officialAccountIDList;
?
auto callback = new ValueCallback<V2TIMTopicInfoResultVector>{};
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 的 消息监听器 来接收。
?
?
?
?


http://www.vxiaotou.com