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

可配置项

数据

  • 课节相关 课程码,默认为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