说明
公众号模块主要包括公众号列表、消息列表、详情和搜索界面。融云都上诉界面进行了封装,使用公众号只需调用融云自带的 viewcontroll,包括:
* RCPublicServiceListViewController:公众号列表
* RCPublicServiceChatViewController:消息列表
* RCPublicServiceProfileViewController:详情
* RCPublicServiceSearchViewController:搜索
自定义UI
绝大情况下,我们都需要安装美工所提供的效果图来进行开发,但是使用融云的公众号自定义UI有着诸多限制。
公众号列表
公众号列表自定义的方法相对比较简单,提供一个tableview,数据源通过融云的API去获取。
NSArray *publicServices = [[RCIMClient sharedRCIMClient] getPublicServiceList];
这里所能获取的是已关注的公众号数组。
消息列表
最主要的消息列表是没有办法提供自定义的。除了导航栏和输入框,公众号消息 cell 无法和其他自定义消息一样去定义。
按照正常的融云自定义消息的方式去定义的话
// RCPublicServiceMultiRichContentMessage公众号的图文消息
[self registerClass:[SubscriptionMessageCell class] forMessageClass:[RCPublicServiceMultiRichContentMessage class]]
则会报错
-[SubscriptionMessageCell setPublicServiceDelegate:]: unrecognized selector sent to instance 0x7f99e8e39b50
这个 delegate 并没有开放给我们
融云给出的答复是:
* 联系我们商务同事索取 IMKit 源码,直接拿 IMKit 中RCPublicServiceMultiRichContentMessage 对应 cell 的源码进行修改
* 详细描述您的需求,我们根据您的需求判断如何处理
基本等于没法改…
底部输入框的隐藏方法
self.chatSessionInputBarControl.hidden = YES;
CGRect rect = self.conversationMessageCollectionView.frame;
rect.size.height = self.view.frame.size.height-kStatusAndNavBarHeight;
self.conversationMessageCollectionView.frame = rect;
自定义消息列表的启动
// ConversationType_APPSERVICE应用内公众号(无法添加底部菜单栏)
RCPublicServiceProfile *servicePro = [_sortDataSource objectForKey:_indexDataSource[indexPath.section]][indexPath.row];
SubscriptionViewController *vc = [[SubscriptionViewController alloc] init];
vc.conversationType = ConversationType_APPSERVICE;
vc.targetId = servicePro.publicServiceId;
vc.title = servicePro.name;
vc.servicePro = servicePro;
[[AppDelegate sharedAppDelegate] pushViewController:vc];
详情
获取公众号详情的 API 有两种:
从服务器获取
- (void)getPublicServiceProfile:(NSString *)targetId
conversationType:(RCConversationType)type
onSuccess:(void (^)(RCPublicServiceProfile *serviceProfile))onSuccess
onError:(void (^)(NSError *error))onError;
从缓存中获取
- (RCPublicServiceProfile *)getPublicServiceProfile:(RCPublicServiceType)publicServiceType
publicServiceId:(NSString *)publicServiceId;
这两个方法都只能获取已关注的公众号,无法获取未关注公众号
详情中的关注和取消关注 API 如下:
关注:
- (void)subscribePublicService:(RCPublicServiceType)publicServiceType
publicServiceId:(NSString *)publicServiceId
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode status))errorBlock;
如果后台设置的公众号是默认关注,是无法取消的
取消关注:
- (void)unsubscribePublicService:(RCPublicServiceType)publicServiceType
publicServiceId:(NSString *)publicServiceId
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode status))errorBlock;
搜索
融云搜索API
可设置为模糊搜索,搜索出结果包括关注和未关注
- (void)searchPublicServiceByType:(RCPublicServiceType)publicServiceType
searchType:(RCSearchType)searchType
searchKey:(NSString *)searchKey
success:(void (^)(NSArray *accounts))successBlock
error:(void (^)(RCErrorCode status))errorBlock;
如果只需要已关注公众号,调用获取公众号接口,在返回数组中筛选数据
网友评论