PLVHiClassManager
Objective-C
@interface PLVHiClassManager : NSObject
#pragma mark - [ 属性 ]
#pragma mark 可配置项
@property (nonatomic, weak) id<PLVHiClassManagerDelegate> delegate;
#pragma mark 数据
/// 课节相关
/// 课程码,默认为nil,仅在学生端使用课程码登录时,不为空
@property (nonatomic, copy, readonly) NSString * _Nullable courseCode;
/// 课节ID
@property (nonatomic, copy, readonly) NSString *lessonId;
/// 课节状态枚举值
@property (nonatomic, assign, readonly) PLVHiClassStatus status;
/// 上课时长(单位秒),status不为PLVHiClassStatusInClass时,duration为0
@property (nonatomic, assign, readonly) NSInteger duration;
/// 实际上课时间(时间戳),未上课时为0
@property (nonatomic, assign, readonly) NSInteger classTime;
/// 原定上课时间(时间戳),不为0
@property (nonatomic, assign, readonly) NSInteger lessonStartTime;
/// 原定下课时间(时间戳),不为0
@property (nonatomic, assign, readonly) NSInteger lessonEndTime;
/// 分组相关
/// 当前用户所处分组状态,默认为PLVHiClassGroupStateNotInGroup
@property (nonatomic, assign, readonly) PLVHiClassGroupState groupState;
/// 当前用户是否为分组组长,默认为NO
@property (nonatomic, assign, readonly) BOOL currentUserIsGroupLeader;
/// 讲师是否在当前分组中,默认为NO
@property (nonatomic, assign, readonly) BOOL teacherInGroup;
/// 当前用户所在分组ID
@property (nonatomic, copy, readonly) NSString *groupId;
/// 当前用户所在分组名
@property (nonatomic, copy, readonly) NSString *groupName;
/// 当前用户所在分组组长ID
@property (nonatomic, copy, readonly) NSString *groupLeaderId;
/// 当前用户所在分组组长昵称
@property (nonatomic, copy, readonly) NSString *groupLeaderName;
#pragma mark - [ 方法 ]
/// 单例方法
+ (instancetype)sharedManager;
/// 进入课室之前,获取到课节详情时,配置基本数据
/// @param detailDict 课节详情接口返回数据
/// @param courseCode 学生登录用的课程码,如果非学生端,以及非课程码登录,设为nil
- (void)setupWithLessonDetail:(NSDictionary *)detailDict courseCode:(NSString * _Nullable)courseCode;
/// 退出课室时,用于销毁计时器、复位数据、撤除socket消息监听
- (void)clear;
/// 进入课室时,用于设置socket消息监听、设置定时器
- (void)enterClassroom;
#pragma mark 讲师专用方法
/// 调用http接口跟socket消息,修改课节状态为上课中
- (void)startClass;
/// 调用http接口跟socket消息,修改课节状态为已下课
- (void)finishClass;
#pragma mark 学生专用方法
/// 请求课节列表获取是否有下一节课的权限,以及课节结束信息
/// @param completion 请求结束执行的代码块,如果请求失败或者无权限,lessonDict为nil,duration为0时表示请求课节结束信息失败
- (void)requestWatcherNextLessonInfoWithCompletion:(void(^)(NSDictionary *lessonDict, NSInteger duration))completion;
/// 组长请求帮助
- (BOOL)requestHelp;
/// 组长取消请求帮助
- (BOOL)cancelRequestHelp;
@end
Swift
class PLVHiClassManager : NSObject
Undocumented
-
Undocumented
Declaration
Objective-C
@property (nonatomic, weak) id<PLVHiClassManagerDelegate> delegate
Swift
weak var delegate: PLVHiClassManagerDelegate? { get set }
-
课节相关 课程码,默认为nil,仅在学生端使用课程码登录时,不为空
Declaration
Objective-C
@property (nonatomic, copy, readonly) NSString *_Nullable courseCode;
Swift
var courseCode: String? { get }
-
课节ID
Declaration
Objective-C
@property (nonatomic, copy, readonly) NSString *_Nonnull lessonId;
Swift
var lessonId: String { get }
-
课节状态枚举值
Declaration
Objective-C
@property (nonatomic, readonly) PLVHiClassStatus status;
Swift
var status: PLVHiClassStatus { get }
-
上课时长(单位秒),status不为PLVHiClassStatusInClass时,duration为0
Declaration
Objective-C
@property (nonatomic, readonly) NSInteger duration;
Swift
var duration: Int { get }
-
实际上课时间(时间戳),未上课时为0
Declaration
Objective-C
@property (nonatomic, readonly) NSInteger classTime;
Swift
var classTime: Int { get }
-
原定上课时间(时间戳),不为0
Declaration
Objective-C
@property (nonatomic, readonly) NSInteger lessonStartTime;
Swift
var lessonStartTime: Int { get }
-
原定下课时间(时间戳),不为0
Declaration
Objective-C
@property (nonatomic, readonly) NSInteger lessonEndTime;
Swift
var lessonEndTime: Int { get }
-
分组相关 当前用户所处分组状态,默认为PLVHiClassGroupStateNotInGroup
Declaration
Objective-C
@property (nonatomic, readonly) PLVHiClassGroupState groupState;
Swift
var groupState: PLVHiClassGroupState { get }
-
当前用户是否为分组组长,默认为NO
Declaration
Objective-C
@property (nonatomic, readonly) BOOL currentUserIsGroupLeader;
Swift
var currentUserIsGroupLeader: Bool { get }
-
讲师是否在当前分组中,默认为NO
Declaration
Objective-C
@property (nonatomic, readonly) BOOL teacherInGroup;
Swift
var teacherInGroup: Bool { get }
-
当前用户所在分组ID
Declaration
Objective-C
@property (nonatomic, copy, readonly) NSString *_Nonnull groupId;
Swift
var groupId: String { get }
-
当前用户所在分组名
Declaration
Objective-C
@property (nonatomic, copy, readonly) NSString *_Nonnull groupName;
Swift
var groupName: String { get }
-
当前用户所在分组组长ID
Declaration
Objective-C
@property (nonatomic, copy, readonly) NSString *_Nonnull groupLeaderId;
Swift
var groupLeaderId: String { get }
-
当前用户所在分组组长昵称
Declaration
Objective-C
@property (nonatomic, copy, readonly) NSString *_Nonnull groupLeaderName;
Swift
var groupLeaderName: String { get }
-
单例方法
Declaration
Objective-C
+ (nonnull instancetype)sharedManager;
Swift
class func shared() -> Self
-
进入课室之前,获取到课节详情时,配置基本数据
Declaration
Objective-C
- (void)setupWithLessonDetail:(nonnull NSDictionary *)detailDict courseCode:(NSString *_Nullable)courseCode;
Swift
func setup(withLessonDetail detailDict: [AnyHashable : Any], courseCode: String?)
Parameters
detailDict
课节详情接口返回数据
courseCode
学生登录用的课程码,如果非学生端,以及非课程码登录,设为nil
-
退出课室时,用于销毁计时器、复位数据、撤除socket消息监听
Declaration
Objective-C
- (void)clear;
Swift
func clear()
-
进入课室时,用于设置socket消息监听、设置定时器
Declaration
Objective-C
- (void)enterClassroom;
Swift
func enterClassroom()
-
调用http接口跟socket消息,修改课节状态为上课中
Declaration
Objective-C
- (void)startClass;
Swift
func startClass()
-
调用http接口跟socket消息,修改课节状态为已下课
Declaration
Objective-C
- (void)finishClass;
Swift
func finishClass()
-
请求课节列表获取是否有下一节课的权限,以及课节结束信息
Declaration
Objective-C
- (void)requestWatcherNextLessonInfoWithCompletion: (nonnull void (^)(NSDictionary *_Nonnull, NSInteger))completion;
Swift
func requestWatcherNextLessonInfo() async -> ([AnyHashable : Any], Int)
Parameters
completion
请求结束执行的代码块,如果请求失败或者无权限,lessonDict为nil,duration为0时表示请求课节结束信息失败
-
组长请求帮助
Declaration
Objective-C
- (BOOL)requestHelp;
Swift
func requestHelp() -> Bool
-
组长取消请求帮助
Declaration
Objective-C
- (BOOL)cancelRequestHelp;
Swift
func cancelRequestHelp() -> Bool