保利威文档中心

幫助中心

7_2-核心common-数据

更新時間:2023-04-27 09:43:40

1 概述

該模組位於資料夾 PolyvLiveCommonModule/Modules/Room 下,管理的資料包括:配置資料、http 資料、業務模組資料等。這些資料合併在一起,使用資料模型類別 PLVRoomData 進行資料獲取或儲存,並使用 PLVRoomDataManager 作為對外的資料路由器,當資料發生變化時,通知各個已註冊監聽的業務模組。

2 核心類別介紹

2.1 PLVRoomData

資料模型類別 PLVRoomData 對外提供了以下幾個介面,介面回傳的資料由 PLVRoomData 持有:

/// 设置 roomUser
- (void)setupRoomUser:(PLVRoomUser *)roomUser;

/// 获取频道菜单信息
- (void)requestChannelDetail:(void(^)(PLVLiveVideoChannelMenuInfo *channelMenuInfo))completion;

/// 上报观看热度
- (void)reportViewerIncrease;

/// 获取功能开关
- (void)requestChannelFunctionSwitch;

除了介面 -requestChannelFunctionSwitch 在初始化聊天室時(可選)進行請求,其他介面(必選)均在登入時進行呼叫,使用範例詳見登入管理器 PLVRoomLoginClient

2.2 PLVRoomDataManager

資料路由器 PLVRoomDataManager 是單例,負責持有每個直播間只允許存在一個實例的 PLVRoomData 物件,並對持有的 roomData 進行 KVO 監聽,當 roomData 管理的資料發生變化時,通知各個已註冊監聽的業務模組。

資料路由器 PLVRoomDataManager 中,roomData 的屬性相關介面定義如下:

/// 当前活跃的直播间数据
@property (nonatomic, strong, readonly) PLVRoomData *roomData;

/// 单例方法
+ (instancetype)sharedManager;

/// 配置当前的直播间数据,进入直播间时调用
- (void)configRoomData:(PLVRoomData *)roomData;

/// 移除当前的直播间数据,离开直播间时调用
- (void)removeRoomData;

使用範例如下,介面呼叫上下文詳見登入管理器 PLVRoomLoginClient

// 登录时调用
[[PLVRoomDataManager sharedManager] configRoomData:roomData];
// 退出登录时调用
[[PLVRoomDataManager sharedManager] removeRoomData];

資料監聽註冊、移除監聽相關介面如下:

/// 增加PLVRoomDataManagerProtocol协议的监听者
/// @param delegate 待增加的监听者
/// @param delegateQueue 执行回调的队列
- (void)addDelegate:(id<PLVRoomDataManagerProtocol>)delegate delegateQueue:(dispatch_queue_t)delegateQueue;

/// 移除PLVRoomDataManagerProtocol协议的监听者
/// @param delegate 待移除的监听者
- (void)removeDelegate:(id<PLVRoomDataManagerProtocol>)delegate;

/// 移除PLVRoomDataManagerProtocol协议的所有监听者
- (void)removeAllDelegates;

介面 -removeAllDelegates 在資料路由器 PLVRoomDataManager 內部已在呼叫 -removeAllDelegates 移除當前持有的直播間資料時進行了呼叫,只需要在各個需要監聽 roomData 資料的業務模組、功能頁面呼叫 -addDelegate:delegateQueue: 介面,在不需要監聽的時候(例如頁面退出、模組註銷時)呼叫 -removeDelegate: 介面。

联系客服,在线咨询