融云公众号的使用

2019-11-12  本文已影响0人  eAssh

说明

公众号模块主要包括公众号列表、消息列表、详情和搜索界面。融云都上诉界面进行了封装,使用公众号只需调用融云自带的 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;

如果只需要已关注公众号,调用获取公众号接口,在返回数组中筛选数据

上一篇下一篇

猜你喜欢

热点阅读