LiveCenterManager.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. //
  2. // LiveCenterManager.h
  3. // BuguLive
  4. //
  5. // Created by 岳克奎 on 16/12/13.
  6. // Copyright © 2016年 xfg. All rights reserved.
  7. // 是对悬浮 非悬浮 主播 主播启动 直播间的单例类
  8. #import <Foundation/Foundation.h>
  9. #import "STSuspensionWindow.h"
  10. #pragma mark - window type
  11. typedef NS_ENUM(NSUInteger,LiveWindowType)
  12. {
  13. LiveWindowTypeDefault = 0, // 未设置window类型
  14. LiveWindowTypeOfNormolOfFullSize = 1, // 非悬浮 满屏幕
  15. liveWindowTypeOfSusOfFullSize = 2, // 悬浮 满屏幕
  16. LiveWindowTypeOfNormolSmallSize = 3, // 非悬浮 小屏幕
  17. LiveWindowTypeOfSusSmallSize = 4, // 悬浮 小屏幕
  18. } ;
  19. typedef NS_ENUM(NSUInteger,UIAlertCState)
  20. {
  21. UIAlertCdefault = 0,
  22. UIAlertCNeed = 1,
  23. UIAlertCNeedNO = 2,
  24. };
  25. typedef NS_ENUM(NSUInteger,LiveFinishViewState)
  26. {
  27. LiveFinishViewDefault = 0,
  28. LiveFinishViewNeed = 1,
  29. LiveFinishViewNoNeed = 2,
  30. };
  31. @protocol LiveCenterManagerDelegate <NSObject>
  32. @optional
  33. - (void)showCloseLiveComplete:(FWIsFinishedBlock)block;
  34. @end
  35. @interface LiveCenterManager : NSObject
  36. // 单例模式
  37. BogoSingletonH(Instance);
  38. @property (nonatomic, assign) LiveWindowType liveWindowType;
  39. @property (nonatomic, assign) FW_LIVE_TYPE liveType;
  40. @property (nonatomic, assign) FW_LIVESDK_TYPE liveSDKType;
  41. // 控制加载、显示、手势交互
  42. @property (nonatomic, strong) STSuspensionWindow *stSuspensionWindow;
  43. // 记录创建的直播间ViewC
  44. @property (nonatomic, strong) UIViewController *recordLiveViewC;
  45. // 直播退出,前需要设置
  46. @property (nonatomic, assign) UIAlertCState uIAlertCState;
  47. @property (nonatomic, assign) LiveFinishViewState liveFinishViewState;
  48. @property (nonatomic, weak) id<LiveCenterManagerDelegate> delegate;
  49. //2020-1-7 小直播变大
  50. @property (nonatomic, strong) TCShowLiveListItem *itemModel;
  51. - (void)showCloseLiveComplete:(FWIsFinishedBlock)block;
  52. // 判断是否需要悬浮Window
  53. - (BOOL)judgeIsSusWindow;
  54. // 判断是否需要悬浮小Window
  55. - (BOOL)judgeIsSmallSusWindow;
  56. #pragma mark ------------------------------------------- 直播间开启部分 -------------------------------------------
  57. #pragma mark - 主播自己开直播
  58. /**
  59. 主播自己开直播 (考虑UI效果不佳,不建议用)
  60. @param dic 参数
  61. @param isSusWindow 是否需要悬浮Window
  62. @param isSmallScreen 是否需要悬浮小Window
  63. @param block 回调
  64. */
  65. - (void)showLiveOfAPIPramaDic:(NSMutableDictionary *)dic isSusWindow:(BOOL)isSusWindow isSmallScreen:(BOOL)isSmallScreen block:(FWIsFinishedBlock)block;
  66. /**
  67. 主播自己开直播(建议用),主要是指 主播自己开直播 不包含列表中包含主播视频,再次进入,这样的把主播当成观众
  68. @param responseJson 参数
  69. @param isSusWindow 是否需要悬浮Window
  70. @param isSmallScreen 是否需要悬浮小Window
  71. @param block 回调
  72. */
  73. - (void)showLiveOfAPIResponseJson:(NSMutableDictionary *)responseJson isSusWindow:(BOOL)isSusWindow isSmallScreen:(BOOL)isSmallScreen block:(FWIsFinishedBlock)block;
  74. #pragma mark - 进入直播
  75. /**
  76. 进入直播
  77. @param liveListItem 进入直播间实体
  78. @param liveWindowType LiveWindowType
  79. @param liveType 视频类型
  80. @param liveSDKType SDK类型
  81. @param block 回调
  82. */
  83. - (void)showLiveOfTCShowLiveListItem:(TCShowLiveListItem *)liveListItem andLiveWindowType:(LiveWindowType)liveWindowType andLiveType:(FW_LIVE_TYPE)liveType andLiveSDKType:(FW_LIVESDK_TYPE)liveSDKType andCompleteBlock:(FWIsFinishedBlock)block;
  84. /**
  85. 观众进直播
  86. @param dic 参数
  87. @param isSusWindow 是否需要悬浮Window
  88. @param isSmallScreen 是否需要悬浮小Window
  89. @param block 回调
  90. */
  91. - (void)showLiveOfAudienceLiveofPramaDic:(NSMutableDictionary *)dic isSusWindow:(BOOL)isSusWindow isSmallScreen:(BOOL)isSmallScreen block:(FWIsFinishedBlock)block;
  92. /**
  93. 观众进直播
  94. @param item 进入直播间实体
  95. @param isSusWindow 是否需要悬浮Window
  96. @param isSmallScreen 是否需要悬浮小Window
  97. @param block 回调
  98. */
  99. //- (void)showLiveOfAudienceLiveofTCShowLiveListItem:(TCShowLiveListItem *)item isSusWindow:(BOOL)isSusWindow isSmallScreen:(BOOL)isSmallScreen block:(FWIsFinishedBlock)block;
  100. - (void)showLiveOfAudienceLiveofTCShowLiveListItem:(TCShowLiveListItem *)item modelArr:(NSArray *)modelArr isSusWindow:(BOOL)isSusWindow isSmallScreen:(BOOL)isSmallScreen block:(FWIsFinishedBlock)block;
  101. #pragma mark ------------------------------------------- 直播间关闭 部分 -------------------------------------------
  102. /**
  103. 直播关闭
  104. @param liveViewController 需要关闭的vc
  105. @param paiTimeNum 竞拍倒计时
  106. @param isDirectCloseLive 是否直接关闭直播而不弹出结束界面
  107. @param isHostShowAlert 是否弹出对话框
  108. @param block 回调
  109. */
  110. - (void)closeLiveOfPramaOfLiveViewController:(UIViewController *)liveViewController paiTimeNum:(int)paiTimeNum alertExitLive:(BOOL)isDirectCloseLive isHostShowAlert:(BOOL)isHostShowAlert colseLivecomplete:(FWIsFinishedBlock)block;
  111. /**
  112. 悬浮参数处理,紧跟直播关闭后代码
  113. @param block 回调
  114. */
  115. - (void)resetSuswindowPramaComple:(FWIsFinishedBlock)block;
  116. /**
  117. 屏幕大小缩放处理,使用前提:需要悬浮挂起或挂起小屏幕后再恢复满屏幕
  118. @param isSmallScreen 是否悬浮小Window
  119. @param block 回调
  120. */
  121. - (void)showChangeLiveScreenSOfIsSmallScreen:(BOOL)isSmallScreen complete:(FWIsFinishedBlock)block;
  122. #pragma mark ----------------------------------------- 竞拍区域 ------------------------------------------------------
  123. /**
  124. 竞拍屏幕处理大小处理,使用前提:竞拍开启直播后,需要悬浮挂起或挂起小屏幕后再恢复满屏幕
  125. @param isSmallScreen 是否悬浮小Window
  126. @param nextViewController 你回到满屏,可为nil
  127. @param delegateWindowRCNameStr 当你去下个VC,可为nil
  128. @param block 回调
  129. */
  130. - (void)showChangeAuctionLiveScreenSOfIsSmallScreen:(BOOL)isSmallScreen nextViewController:(UIViewController *)nextViewController delegateWindowRCNameStr:(NSString *)delegateWindowRCNameStr complete:(FWIsFinishedBlock)block;
  131. #pragma mark ---------------------------------------- 踢下线通知 -------------------------------------------------------
  132. /**
  133. 踢下线通知
  134. @param imAPlatform 里监听到有互踢消息执行对应的方法,这个方法主要解决先视频的退出问题
  135. @param block 回调
  136. */
  137. - (void)showOffLineWarningwithIMAPlatform:(IMAPlatform *)imAPlatform complete:(FWIsFinishedBlock)block;
  138. @end