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 核心类介绍

代码如下:

具体的使用方法请参考PLVLCCloudClassViewControllerPLVECWatchRoomViewController中对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方法的逻辑分为两步:

  1. 实例化具体的互动应用,并设置对应的回调。注意,通用控制不属于业务上的互动应用,他是用于控制所有互动应用的一个通用类,是必须要添加的。

  2. 将所有互动应用添加到互动应用webView中。

4 互动应用的实现

4.1 互动应用类简介

互动应用的具体实现在PolyvLiveCommonModule/Modules/Interact目录下与PLVInteractView同级目录,共有5个互动应用,每个类分别表示:

  • PLVInteractAnswer:答题

  • PLVInteractBulletin:公告

  • PLVInteractLottery:抽奖

  • PLVInteractQuestionnaire:问卷

  • PLVInteractSignIn:签到

该目录的其他类: PLVInteractBaseApp+General是sdk中PLVInteractBaseApp扩展类,该类主要是使用SDK 层PLVSocketManager给服务端发送数据。

4.2 具体互动应用实现逻辑

5个互动应用均继承自PLVInteractBaseAppPLVInteractBaseApp主要是绑定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调用代码的示例可以在PLVInteractViewPLVInteractBaseAppPLVInteractBaseApp子类中找到。

5.2.2 代理回调

设置代理回调的示例可以在Demo的PLVInteractView中找到。

Last updated

Was this helpful?