本文介绍iOS端如何在低代码集成(含UI)方式接入的互动直播默认UI上添加自定义的UI和控制逻辑。
背景信息
低代码集成(含UI)接入的互动直播iOS端支持以下自定义功能:
前提条件
您已经完成了iOS端集成。
自定义主播端起播页面
在主播端,如果想要改变默认的起播页面,可以在ASLRBLiveRoomViewController
的属性livePrestartCustomizedViewHolder
添加自定义UI控件。
livePrestartCustomizedViewHolder
添加自定义的直播标题输入、开播按钮、摄像头切换按钮和打开美颜按钮。
livePrestartCustomizedViewHolder
上添加自定义UI的逻辑必须在push当前ASLRBLiveRoomViewController
前执行。
自定义主播端和观众端直播间页面
在主播端和观众端的直播间页面,如果想要自定义UI,可根据以下图表展示的自定义区域及提示信息操作。

序号 | 区域 | 自定义UI |
---|---|---|
① | 左上自定义区域 |
|
② | 右上自定义区域 | 如果需要完全自定义右上角区域,可以在upperRightCustomizedViewHolder 中添加自定义UI控件。
|
③ | 中心自定义区域 |
|
④ | 弹幕区域 | 弹幕区域的自定义请参考直播弹幕相关自定义配置。 |
⑤ | 底部自定义区域 |
|
直播弹幕相关自定义配置
- 直播弹幕view,即liveCommentView支持丰富多样的样式自定义,具体如下。更多的自定义能力,详见ASLRBLiveCommentViewConfig头文件说明。
ASLRBLiveInitConfig* config = [[ASLRBLiveInitConfig alloc] init]; //进入直播间时是否展示历史弹幕以及展示的条数,默认不展示 config.liveCommentViewsConfig.countOfHistoryCommentsWhenEntered = 100; //修改进入直播间弹幕区展示的公告内容, 默认是 "欢迎大家来到直播间!直播间内严禁出现违法违规、低俗色情、吸烟酗酒等内容,若有违规行为请及时举报。" config.liveCommentViewsConfig.liveCommentWarningNotice = @"这是一个新的直播间公告说明"; //修改直播间弹幕区展示的公告文本的颜色,默认"#12DBE6" config.liveCommentViewsConfig.liveCommentWarningNoticeTextColor = [UIColor redColor]; //修改直播弹幕发送人昵称的文本的统一颜色,默认是根据发送人nick hash出的随机颜色 config.liveCommentViewsConfig.defaultLiveCommentSenderColor = [UIColor redColor];
- 监听直播弹幕view的手势识别结果。
// 这里的liveRoomVC即已经初始化好的ASLRBLiveRoomViewController实例 //设置delegate liveRoomVC.liveCommentView.delegate = self; //实现以下回调方法 /** * 直播评论区某条评论长按事件回调 */ - (void) onASLRBLiveCommentViewCommentLongPressed:(ASLRBLiveCommentModel*)comment; /** * 直播评论区某条评论单击事件回调 */ - (void) onASLRBLiveCommentViewCommentTapped:(ASLRBLiveCommentModel*)comment;
- 监听并修改直播弹幕文本内容。
// 这里的liveRoomVC即已经初始化好的ASLRBLiveRoomViewController实例 liveRoomVC.liveCommentView.delegate = self; - (void) onASLRBLiveCommentJustAboutToPresent:(ASLRBLiveCommentModel*)comment { // 特定修改某个nick的内容和颜色 if ([comment.senderNick.string isEqualToString:@"xxx"]) { comment.sentContent = @"xxxxxxx"; //修改弹幕内容 comment.senderNickColor = [UIColor greenColor]; // } // 特定修改包含某些敏感词的弹幕内容 if ([comment.sentContent isEqualToString:@"fxxk"] || [comment.sentContent isEqualToString:@"他xxx嘛"]) { comment.sentContent = @"***"; //修改弹幕内容,对敏感词操作脱敏 } }
添加自定义商品卡片
只要在bottomCustomizedViewHolder
(或bottomViewsHolder
)和liveCommentView
之间插入自定义view,就能实现插入商品卡片。
添加可唤起和收回的自定义UIViewController
ASLRBLiveRoomViewController
内部有对系统UIViewController
的扩展,支持以非常便捷的方式添加自定义UIViewController
。以下代码演示了在直播liveRoomVC
上从底部向上展示一个自定义的UIViewController
。
观众端小窗播放相关
观众端可以一键开启小窗播放能力(1.7.0版本及以上支持),可以配合在直播间页面跳转到其他页面需要同时看直播的时候使用,代码如下
- 在直播间唤起其他页面并进入小窗模式播放。
//这里的liveRoomVC即已经初始化好的ASLRBLiveRoomViewController实例 [liveRoomVC enterFloatingMode:YES]; //进入小窗模式 [liveRoomVC presentViewController:xxxViewController]; // 跳转到某个其他ViewController
- 在小窗模式下,点击小窗从而退出小窗模式,即从当前页面回到直播间页面。
//这里的liveRoomVC即已经初始化好的ASLRBLiveRoomViewController实例 - (void)onASLRBLiveRoomEventInViewController:(nonnull ASLRBLiveRoomViewController *)liveRoomVC liveRoomEvent:(ASLRBEvent)liveRoomEvent info:(nonnull NSDictionary *)info { switch (liveRoomEvent) { case ASLRBAudienceEventFloatingPlayWindowTapped:{ // 跳转到当前ASLRBLiveRoomViewController实例页面 } break; ... }
- 在小窗模式下,调用代码退出小窗模式。
//这里的liveRoomVC即已经初始化好的ASLRBLiveRoomViewController实例 [liveRoomVC enterFloatingMode:NO]; //退出小窗模式
- 小窗模式下,切后台再回到前台会隐藏小窗,如果需要关闭这个功能,即小窗模式下切后台再回到前台后继续保持小窗,需要主动进行以下配置。
//这里的liveRoomVC即已经初始化好的ASLRBLiveRoomViewController实例 liveRoomVC.floatingPlayWindow.disappearAfterResignActive = NO;
主播端开启美颜
主播端美颜是内部已经默认实现了的一个ViewController,可以一键打开,需要版本1.7.0及以上。
//这里的liveRoomVC即已经初始化好的ASLRBLiveRoomViewController实例
[liveRoomVC showBeautyPanel]; //打开美颜, 关闭美颜只要手动触动美颜VC之外的区域即可。
//另外,美颜面板的打开和收起,会自动触发以下事件
ASLRBCommonEventFaceBeautyViewControllerWillAppear // 美颜面板打开事件(2.0.0及之后版本,如果控制台未主动开启美颜,则不会触发此事件)
ASLRBCommonEventFaceBeautyViewControllerWillDisappear // 美颜面板收起
主播端开启横屏样式
主播端可以在打开直播间时开启横屏样式(2.0.0版本及以上支持,横屏下暂不支持美颜),方法如下:
__weak typeof(self) weakSelf = self;
[[ASLRBLiveRoomManager sharedInstance] createLiveRoomVCWithConfig:({
ASLRBLiveInitConfig* config = [[ASLRBLiveInitConfig alloc] init];
config.liveID = @"<您的liveID>"; //低代码集成场景下主播侧liveID非必传,为空时内部会自动创建新直播
config.role = ASLRBUserRoleAnchor; //主播侧必填ASLRBUserRoleAnchor
config.pushOrientation = 1; //开启横屏样式
config;
}) onSuccess:^(ASLRBLiveRoomViewController * _Nonnull liveRoomVC) {
[weakSelf setupLiveRoomViewController:liveRoomVC];
} onFailure:^(NSString * _Nonnull errorMessage) {
NSLog(@"获取直播ViewController失败:%@", errorMessage);
}];
观众端打开横屏样式
观众端可以打开横屏样式,方法如下:
//这里的liveRoomVC即已经初始化好的ASLRBLiveRoomViewController实例
//允许横竖屏切换
liveRoomVC.enableViewRotation = YES;
//可以使用以下接口切换横竖屏,也可以旋转设备自动切换横竖屏
[liveRoomVC switchViewOrientation];
//配置好开关后,每当切换横竖屏过程中,都会触发以下事件,可以通过以下方法来监听ASLRBCommonEventViewOrientationChanged获取通知
//具体旋转后的屏幕方法可以在info字段中看到
-(void)onASLRBLiveRoomEventInViewController:liveEvent:info:
观众端开启后台播放模式
默认情况下,观众端进入后台会停止播放,如果需要开启后台播放,首先需要做以下设置。
ASLRBLiveInitConfig* config = [[ASLRBLiveInitConfig alloc]init];
config.enableBackgroundLivePlaying = YES;
