7_6-核心common-互动
1 功能概述
该模块位于文件夹 PolyvLiveCommonModule/Modules/Interact 下,多个场景都可以共用的一个功能模块,包含了如下互动应用:公告、签到、抽奖、答题卡、和问卷,是对sdk层的PLVInteractWebview和js桥PLVJSBridge的交互封装,使集成互动功能更简单方便。由PLVInteractView作为核心类来集成。
互动模块需要登录 socket,在创建聊天模块的时候,已默认自动登录了 socket,所以集成互动功能,最好先集成聊天模块,如果不需要聊天模块,务必提前做好 socket 的登录。、
2 socket 登录与登出
首先,导入头文件 #import <PLVLiveScenesSDK/PLVSocketManager.h>,登录代码示例如下:
其次,需要监听 socket 模块的回调,遵循协议 PLVSocketManagerProtocol 并添加监听代码示例如下:
代码示例中,delegateQueue 参数传入 dispatch_get_main_queue() 表示希望回调方法从主线程执行,socket 模块登录成功、失败回调如下:
最后,离开直播间页面时,需要对 socket 模块进行登出,代码示例如下:
3 核心类介绍
代码如下:
具体的使用方法请参考PLVLCCloudClassViewController、PLVECWatchRoomViewController中对PLVInteractView接口的调用。
3.1 对外API介绍
PLVInteractView定义了如下几个需要在页面中使用的方法:
3.2 实现介绍
PLVInteractView内部实现了互动应用的逻辑:
3.2.1 初始化
初始化数据
setupData方法中keepInteractViewTop是互动视图需要最顶层,才能保证接收到最新互动时,可完整地被用户查看,YES:每次互动出现时,自动移至同级最顶层,NO:每次互动出现时,不做层级上的变动;默认为YES
初始化UI
setupUI方法初始化互动应用WebviewPLVInteractWebview对象,通过设置PLVInteractWebview加载在线、本地资源。
设置具体的互动应用
setupInteractApps设置具体的互动应用,将所需的互动应用添加进来。
3.2.2 互动应用的实现
设置互动应用即将想要的互动应用添加进来。见方法:setupInteractApps
setupInteractApps方法的逻辑分为两步:
实例化具体的互动应用,并设置对应的回调。注意,通用控制不属于业务上的互动应用,他是用于控制所有互动应用的一个通用类,是必须要添加的。
将所有互动应用添加到互动应用webView中。
4 互动应用的实现
4.1 互动应用类简介
互动应用的具体实现在PolyvLiveCommonModule/Modules/Interact目录下与PLVInteractView同级目录,共有5个互动应用,每个类分别表示:
PLVInteractAnswer:答题
PLVInteractBulletin:公告
PLVInteractLottery:抽奖
PLVInteractQuestionnaire:问卷
PLVInteractSignIn:签到
该目录的其他类: PLVInteractBaseApp+General是sdk中PLVInteractBaseApp扩展类,该类主要是使用SDK 层PLVSocketManager给服务端发送数据。
4.2 具体互动应用实现逻辑
5个互动应用均继承自PLVInteractBaseApp,PLVInteractBaseApp主要是绑定js桥、发送数据到webView和与代理回调。
5个互动应用子类分别处理各自功能,发组装数据发送到webView。
5 SDK核心类介绍
5.1 PLVInteractBaseApp
PLVInteractBaseApp是互动应用基础类,所有的互动应用以该类作为父类拓展,来实现各自的业务逻辑。
5.1.1 子类重写方法
需要具体的互动应用子类重写的方法。
5.1.2 代理回调
5.1.3 子类使用的方法
父类中定义了一些通用方法可供互动应用子类调用。
5.2 PLVJSBridge
PLVJSBridge是Webview Js交互器,可用于与Webview 进行数据交互)
5.2.1 对外API介绍
方法API调用代码的示例可以在PLVInteractView、PLVInteractBaseApp和PLVInteractBaseApp子类中找到。
5.2.2 代理回调
设置代理回调的示例可以在Demo的PLVInteractView中找到。
Last updated
Was this helpful?