فهرست منبع

直播功能完善

Steven 3 سال پیش
والد
کامیت
9e049daad3
24فایلهای تغییر یافته به همراه358 افزوده شده و 73 حذف شده
  1. 6 0
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. 1 1
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist
  3. BIN
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  4. 48 0
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  5. 34 1
      KulexiuForTeacher/KulexiuForTeacher/AppDelegate.m
  6. 21 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/emoji.imageset/Contents.json
  7. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/emoji.imageset/emoji@2x.png
  8. 21 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/keyboard.imageset/Contents.json
  9. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/keyboard.imageset/keyboard.png
  10. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_mine.imageset/Contents.json
  11. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_mine.imageset/seat_mine@2x.png
  12. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_mine.imageset/seat_mine@3x.png
  13. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_other.imageset/Contents.json
  14. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_other.imageset/seat_other@2x.png
  15. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_other.imageset/seat_other@3x.png
  16. 2 12
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h
  17. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m
  18. 58 28
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveVideoRoomViewController.m
  19. 3 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/Model/KSEnterLiveroomManager.m
  20. 2 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/LiveSeatApplyCell.m
  21. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/SeatContentView.m
  22. 18 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/SeatTipsView.h
  23. 72 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/SeatTipsView.m
  24. 26 26
      KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

+ 6 - 0
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -450,6 +450,7 @@
 		BCB6340527F6A2F000ACFDCF /* tock.wav in Resources */ = {isa = PBXBuildFile; fileRef = BCB6340327F6A2EF00ACFDCF /* tock.wav */; };
 		BCB6340627F6A2F000ACFDCF /* tick.wav in Resources */ = {isa = PBXBuildFile; fileRef = BCB6340427F6A2F000ACFDCF /* tick.wav */; };
 		BCB6340927F6A35700ACFDCF /* LiveroomTimeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340827F6A35700ACFDCF /* LiveroomTimeManager.m */; };
+		BCB635B627F6FB0A00ACFDCF /* SeatTipsView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB635B527F6FB0A00ACFDCF /* SeatTipsView.m */; };
 		BCC9F35527F5F4FD00647449 /* LiveSeatMember.m in Sources */ = {isa = PBXBuildFile; fileRef = BCC9F35427F5F4FD00647449 /* LiveSeatMember.m */; };
 		BCC9F40727F69BD200647449 /* SealClass.strings in Resources */ = {isa = PBXBuildFile; fileRef = BCC9F35C27F69BD100647449 /* SealClass.strings */; };
 		BCC9F40927F69BD200647449 /* ZoomControl.m in Sources */ = {isa = PBXBuildFile; fileRef = BCC9F36427F69BD100647449 /* ZoomControl.m */; };
@@ -1359,6 +1360,8 @@
 		BCB6340427F6A2F000ACFDCF /* tick.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = tick.wav; sourceTree = "<group>"; };
 		BCB6340727F6A35700ACFDCF /* LiveroomTimeManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LiveroomTimeManager.h; sourceTree = "<group>"; };
 		BCB6340827F6A35700ACFDCF /* LiveroomTimeManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LiveroomTimeManager.m; sourceTree = "<group>"; };
+		BCB635B427F6FB0A00ACFDCF /* SeatTipsView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SeatTipsView.h; sourceTree = "<group>"; };
+		BCB635B527F6FB0A00ACFDCF /* SeatTipsView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeatTipsView.m; sourceTree = "<group>"; };
 		BCC9F35327F5F4FD00647449 /* LiveSeatMember.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LiveSeatMember.h; sourceTree = "<group>"; };
 		BCC9F35427F5F4FD00647449 /* LiveSeatMember.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LiveSeatMember.m; sourceTree = "<group>"; };
 		BCC9F35B27F69BD100647449 /* KSRemoteUserManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSRemoteUserManager.h; sourceTree = "<group>"; };
@@ -2897,6 +2900,8 @@
 				BCF1BA5727F5CF3C00FA36C4 /* LiveSeatApplyCell.h */,
 				BCF1BA5827F5CF3C00FA36C4 /* LiveSeatApplyCell.m */,
 				BCF1BA5927F5CF3C00FA36C4 /* LiveSeatApplyCell.xib */,
+				BCB635B427F6FB0A00ACFDCF /* SeatTipsView.h */,
+				BCB635B527F6FB0A00ACFDCF /* SeatTipsView.m */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -4034,6 +4039,7 @@
 				277931F827E30FC20010E277 /* UIImageView+CornerRadius.m in Sources */,
 				277932E627E310070010E277 /* TZVideoPlayerController.m in Sources */,
 				BCC9F41B27F69BD200647449 /* RecentSharedWhiteboardCell.m in Sources */,
+				BCB635B627F6FB0A00ACFDCF /* SeatTipsView.m in Sources */,
 				277935EB27E32A930010E277 /* KSBaseWKWebViewController.m in Sources */,
 				275B172627EB1C6C0081FDEF /* KSBaseTableViewController.m in Sources */,
 				BCC9F43D27F69BD200647449 /* InviteUpgradeMessage.m in Sources */,

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>KulexiuForTeacher.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>3</integer>
+			<integer>25</integer>
 		</dict>
 	</dict>
 </dict>

BIN
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate


+ 48 - 0
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -20,5 +20,53 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "50774B82-170A-4E4B-9E23-E7D1EB45D484"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Live/Controller/LiveVideoRoomViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "342"
+            endingLineNumber = "342"
+            landmarkName = "-didPublishStreams:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "9891432A-238E-4FBA-991D-D6B604BBB96E"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Live/Controller/LiveVideoRoomViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "347"
+            endingLineNumber = "347"
+            landmarkName = "-subscribeRemoteResource:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "3B221876-4402-4D21-858B-AA325637EF5C"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Live/View/SeatContentView.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "102"
+            endingLineNumber = "102"
+            landmarkName = "-queryUserInfoWithUserId:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 34 - 1
KulexiuForTeacher/KulexiuForTeacher/AppDelegate.m

@@ -25,7 +25,7 @@
 #import "KSTouchCapturingWindow.h"
 #import "KSBaseWKWebViewController.h"
 #import "UserInfoManager.h"
-//#import "KSIMService.h"
+#import "KSIMService.h"
 #import "RCConnectionManager.h"
 #import "KSRCIMDataSource.h"
 
@@ -413,6 +413,39 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
 
 - (void)onRCIMReceiveMessage:(RCMessage *)message left:(int)left {
     
+    NSLog(@"conversationType----%lu",(unsigned long)message.conversationType);
+    // 此处根据消息类型处理对应信息
+    if (message.conversationType == ConversationType_CHATROOM) { // 聊天室类型为直播
+        [[KSIMService sharedService] ksOnReceivedChatroom:message left:left object:@""];
+    }
+    if (![message.targetId containsString:@"S"] && ![message.targetId containsString:@"DAYA"] && ![message.targetId containsString:@"I"]) {
+        // 此处对单聊、群聊消息处理
+        dispatch_async(dispatch_get_main_queue(), ^{
+        
+            if ([message.content isMemberOfClass:[RCGroupNotificationMessage class]]) {
+                RCGroupNotificationMessage *msg = (RCGroupNotificationMessage *)message.content;
+                if ([msg.operation isEqualToString:GroupNotificationMessage_GroupOperationKicked]) {
+                    //                    [[RCIMClient sharedRCIMClient] removeConversation:ConversationType_GROUP targetId:message.targetId];
+                }
+            }
+            else {
+                int unreadMsgCount = [[RCIMClient sharedRCIMClient] getUnreadCount:@[
+                @(ConversationType_PRIVATE), @(ConversationType_APPSERVICE), @(ConversationType_GROUP),@(ConversationType_SYSTEM)
+                ]];
+                [UIApplication sharedApplication].applicationIconBadgeNumber = unreadMsgCount;
+                if (unreadMsgCount >= 1) {
+                    [self.tabBarController noteNewsWithIndex:1 count:unreadMsgCount];
+                } else {
+                    [self.tabBarController clearNewsWithIndex:1];
+                }
+            }
+        });
+    }
+    // 小班课视频聊天
+    else {
+        [[RCIMClient sharedRCIMClient] clearMessagesUnreadStatus:ConversationType_GROUP targetId:message.targetId];
+        [[KSIMService sharedService] ksOnReceived:message left:left object:@""];
+    }
 }
 
 

+ 21 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/emoji.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "emoji@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/emoji.imageset/emoji@2x.png


+ 21 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/keyboard.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "keyboard.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/keyboard.imageset/keyboard.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_mine.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "seat_mine@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "seat_mine@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_mine.imageset/seat_mine@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_mine.imageset/seat_mine@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_other.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "seat_other@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "seat_other@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_other.imageset/seat_other@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/seat_other.imageset/seat_other@3x.png


+ 2 - 12
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h

@@ -399,7 +399,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (void)musicListRequest:(NSString *)post auditStatus:(NSString *)auditStatus pageNo:(NSInteger)pageNo pageSize:(NSInteger)pageSize success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 #pragma mark ----- 直播房间与课程的关系表
-// /teacher-server/liveRoom/createTempLiveRoom
+// /api-teacher/liveRoom/createTempLiveRoom
 
 /// 创建直播 (临时开播)
 /// @param post post
@@ -411,7 +411,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (void)liveRoomCreateTempLiveRoom:(NSString *)post coverPic:(NSString *)coverPic liveRemark:(NSString *)liveRemark roomTitle:(NSString *)roomTitle success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 // 进入直播房间
-// /teacher-server/liveRoom/joinRoom
+// /api-teacher/liveRoom/joinRoom
 
 /// 进入房间
 /// @param get get
@@ -420,16 +420,6 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)liveRoomJoinRoomRequest:(NSString *)get roomUid:(NSString *)roomUid success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
-// 进入直播间通知
-// /imLiveBroadcastRoom/joinRoom
-
-/// 进入直播间通知
-/// @param get get
-/// @param roomId 房间号
-/// @param userId 用户id
-/// @param success 成功
-/// @param faliure 失败
-+ (void)LiveroomJoinRequest:(NSString *)get roomId:(NSString *)roomId userId:(NSString *)userId success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 // 退出直播间通知
 // /api-teacher/liveRoom/syncUserStatus

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m

@@ -86,7 +86,7 @@
 }
 
 - (void)toMessageCenter {
-//    NSString *url = @"alipays://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/bax009111esl5ddjcouq257c";
+//    NSString *url = @"alipays://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/bax07359bpqggi2qc3ih0052";
 //    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];
 }
 

+ 58 - 28
KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveVideoRoomViewController.m

@@ -19,6 +19,7 @@
 #import "SeatContentView.h"
 #import "LiveSeatApplyView.h"
 #import "LiveroomTimeManager.h"
+#import "SeatTipsView.h"
 
 @interface LiveVideoRoomViewController ()<RCRTCRoomEventDelegate,RCRTCStatusReportDelegate,UIGestureRecognizerDelegate,KSChatInputBarControlDelegate,UITableViewDataSource,UITableViewDelegate,LiveroomTimeManagerDelegate>
 
@@ -77,6 +78,9 @@
 // 远端连麦用户
 @property (nonatomic, strong) NSMutableArray *remoteMemberArray;
 
+/// 连麦申请统计数据
+@property (nonatomic, strong) SeatTipsView *seatApplyTips;
+
 @end
 
 @implementation LiveVideoRoomViewController
@@ -456,6 +460,7 @@
 //            }
 //            else { // 加入直播间成功
                 strongSelf.room = room;
+                strongSelf.room.delegate = self;
                 [strongSelf countMemberCount];
                 // 发布本地视频流
                 [self publishLocalStream];
@@ -556,36 +561,36 @@
                 if ([rcMessage.content isMemberOfClass:[KSLiveChatroomLike class]]) {
                     KSLiveChatroomLike *likeMessage = (KSLiveChatroomLike *)rcMessage.content;
                     // 统计点赞数量
-                    self.likeCount += likeMessage.counts;
-                    [self countLikeMessageCount];
+                    __blockSelf.likeCount += likeMessage.counts;
+                    [__blockSelf countLikeMessageCount];
                 }
                 else if ([rcMessage.content isMemberOfClass:[KSLiveChatroomWelcome class]]) {
                     //  过滤自己发送的欢迎消息
                     if ([rcMessage.senderUserId isEqualToString:UserDefault(UIDKey)]) {
                         return;
                     }
-                    self.totalCount++;
-                    [self countMemberCount];
+                    __blockSelf.totalCount++;
+                    [__blockSelf countMemberCount];
                 }
                 // 用户退出消息
                 else if ([rcMessage.content isMemberOfClass:[KSLiveChatroomLeave class]]) {
                     KSLiveChatroomLeave *memberLeaveMsg = (KSLiveChatroomLeave *)rcMessage.content;
-                    self.totalCount--;
-                    [self countMemberCount];
-                    if ([self judgeContainMember:memberLeaveMsg.userId]) {
-                        [self removeMember:memberLeaveMsg.userId];
-                        [self refreshSeatApplyView];
+                    __blockSelf.totalCount--;
+                    [__blockSelf countMemberCount];
+                    if ([__blockSelf judgeContainMember:memberLeaveMsg.userId]) {
+                        [__blockSelf removeMember:memberLeaveMsg.userId];
+                        [__blockSelf refreshSeatApplyView];
                     }
                     return;
                 }
                 // 用户退出消息
                 else if ([rcMessage.content isMemberOfClass:[KSLiveChatroomUserQuit class]]) {
                     KSLiveChatroomUserQuit *memberLeaveMsg = (KSLiveChatroomUserQuit *)rcMessage.content;
-                    self.totalCount--;
-                    [self countMemberCount];
-                    if ([self judgeContainMember:memberLeaveMsg.userId]) {
-                        [self removeMember:memberLeaveMsg.userId];
-                        [self refreshSeatApplyView];
+                    __blockSelf.totalCount--;
+                    [__blockSelf countMemberCount];
+                    if ([__blockSelf judgeContainMember:memberLeaveMsg.userId]) {
+                        [__blockSelf removeMember:memberLeaveMsg.userId];
+                        [__blockSelf refreshSeatApplyView];
                     }
                     return;
                 }
@@ -599,15 +604,15 @@
                         member.name = seatApplyMessage.audienceName;
                         member.userId = seatApplyMessage.audienceId;
                         member.isConnected = NO;
-                        if (![self judgeContainMember:member.userId]) {
-                            [self.seatApplyArray addObject:member];
-                            [self refreshSeatApplyView];
+                        if (![__blockSelf judgeContainMember:member.userId]) {
+                            [__blockSelf.seatApplyArray addObject:member];
+                            [__blockSelf refreshSeatApplyView];
                         }
                     }
                     else if (seatApplyMessage.type == SEATHANDLE_CANCELAPPLY) { // 观众取消申请 从申请中剔除
-                        if ([self judgeContainMember:seatApplyMessage.audienceId]) {
-                            [self removeMember:seatApplyMessage.audienceId];
-                            [self refreshSeatApplyView];
+                        if ([__blockSelf judgeContainMember:seatApplyMessage.audienceId]) {
+                            [__blockSelf removeMember:seatApplyMessage.audienceId];
+                            [__blockSelf refreshSeatApplyView];
                         }
                     }
                     return;
@@ -618,9 +623,9 @@
                 }
                 else if ([rcMessage.content isMemberOfClass:[KSLiveChatroomDownSeat class]]) { // 观众下麦,从列表中移除
                     KSLiveChatroomDownSeat *downSeatMessage = (KSLiveChatroomDownSeat *)rcMessage.content;
-                    if ([self judgeContainMember:downSeatMessage.audienceId]) {
-                        [self removeMember:downSeatMessage.audienceId];
-                        [self refreshSeatApplyView];
+                    if ([__blockSelf judgeContainMember:downSeatMessage.audienceId]) {
+                        [__blockSelf removeMember:downSeatMessage.audienceId];
+                        [__blockSelf refreshSeatApplyView];
                     }
                     return;
                 }
@@ -665,10 +670,31 @@
 }
 
 - (void)refreshSeatApplyView {
+    if (self.seatApplyArray.count) {
+        [self showSeatTips:self.seatApplyArray.count];
+    }
+    else {
+        [self hideSeatTips];
+    }
     [self.seatApplyView refreshSeatApplyTable:self.seatApplyArray];
 }
 
+- (void)showSeatTips:(NSInteger)count {
+    NSString *countDesc = count >= 100 ? @"99+" : [NSString stringWithFormat:@"%zd",count];
+    if (![self.view.subviews containsObject:self.seatApplyTips]) {
+        [self.view addSubview:self.seatApplyTips];
+        [self.seatApplyTips mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.bottom.mas_equalTo(self.bottomView.mas_top).offset(2);
+            make.height.mas_equalTo(20);
+            make.left.mas_equalTo(self.bottomView.mas_right).offset(-72);
+        }];
+    }
+    [self.seatApplyTips configCountMessage:countDesc];
+}
 
+- (void)hideSeatTips {
+    [self.seatApplyTips removeFromSuperview];
+}
 // 发送人数同步消息
 - (void)sendMemberCountMessage {
     KSLiveChatroomMemberCount *syncMessage = [[KSLiveChatroomMemberCount alloc] init];
@@ -699,8 +725,6 @@
 }
 
 
-
-
 #pragma mark ---- sendMessage/showMessage
 - (void)sendMessage:(RCMessageContent *)messageContent displayMessage:(BOOL)displayMessage callback:(void(^)(BOOL success))callback {
     if (_roomId == nil) {
@@ -763,7 +787,7 @@
         //  view刷新
         [self.conversationMessageTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
         if ([self isAtTheBottomOfTableView] || self.isNeedScrollToButtom) {
-            [self scrollToBottomAnimated:NO];
+            [self scrollToBottomAnimated:YES];
             self.isNeedScrollToButtom=NO;
         }
     }
@@ -905,9 +929,15 @@
     }
 }
 
+- (SeatTipsView *)seatApplyTips {
+    if (!_seatApplyTips) {
+        _seatApplyTips = [[SeatTipsView alloc] init];
+    }
+    return _seatApplyTips;
+}
 - (void)displaySeatView {
     [self.view addSubview:self.seatApplyView];
-    [self.seatApplyView refreshSeatApplyTable:self.seatApplyArray];
+    [self refreshSeatApplyView];
 }
 
 - (void)quitAction {
@@ -1060,7 +1090,7 @@
     else {
         member.isConnected = YES;
     }
-    [self.seatApplyView refreshSeatApplyTable:self.seatApplyArray];
+    [self refreshSeatApplyView];
 }
 
 

+ 3 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Live/Model/KSEnterLiveroomManager.m

@@ -14,6 +14,7 @@
     [KSNetworkingManager liveRoomJoinRoomRequest:KS_GET roomUid:roomId success:^(NSDictionary * _Nonnull dic) {
         callback();
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            [dic setValue:@"COOLESHOW-TEMP-7-1648802348522" forKey:@"roomUid"];
             [self joinRoomWithMessage:[dic dictionaryValueForKey:@"data"] controller:navCtrl];
         }
         else {
@@ -26,7 +27,8 @@
 
 + (void)joinRoomWithMessage:(NSDictionary *)source controller:(CustomNavViewController *)navCtrl {
     LiveVideoRoomViewController *liveVC = [[LiveVideoRoomViewController alloc] init];
-    liveVC.roomId = [source stringValueForKey:@"roomUid"];
+//    liveVC.roomId = [source stringValueForKey:@"roomUid"];
+    liveVC.roomId = @"COOLESHOW-TEMP-7-1648802348522";
     liveVC.liveRoleType = RCRTCLiveRoleTypeBroadcaster;
     liveVC.createrId = [source stringValueForKey:@"speakerId"];
     liveVC.createrName = [source stringValueForKey:@"speakerName"];

+ 2 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/LiveSeatApplyCell.m

@@ -42,12 +42,12 @@
     self.userName.text = [NSString returnNoNullStringWithString:member.name];
     if (member.isConnected) {
         self.refuseButton.hidden = YES;
-        [self.approveButton.titleLabel setText:@"下麦"];
+        [self.approveButton setTitle:@"下麦" forState:UIControlStateNormal];
         self.seatStatus.text = @"连麦中";
     }
     else {
         self.refuseButton.hidden = NO;
-        [self.approveButton.titleLabel setText:@"同意"];
+        [self.approveButton setTitle:@"同意" forState:UIControlStateNormal];
         self.seatStatus.text = @"申请连麦";
     }
 }

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/SeatContentView.m

@@ -101,7 +101,7 @@
     [KSNetworkingManager imUserFriendQueryDetail:KS_POST userId:userId success:^(NSDictionary * _Nonnull dic) {
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
             NSDictionary *result = [dic dictionaryValueForKey:@"data"];
-            self.nameLabel.text = [result stringValueForKey:@"nickname"];
+            self.nameLabel.text = [result stringValueForKey:@"friendNickname"];
         }
         else {
             self.nameLabel.text = @"连麦用户";

+ 18 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/SeatTipsView.h

@@ -0,0 +1,18 @@
+//
+//  SeatTipsView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/1.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SeatTipsView : UIView
+
+- (void)configCountMessage:(NSString *)countString;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 72 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/SeatTipsView.m

@@ -0,0 +1,72 @@
+//
+//  SeatTipsView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/1.
+//
+
+#import "SeatTipsView.h"
+
+@interface SeatTipsView ()
+
+@property (nonatomic, strong) UILabel *countLabel;
+
+@end
+
+@implementation SeatTipsView
+
+- (instancetype)init {
+    self = [super init];
+    if (self) {
+        self.backgroundColor = HexRGB(0xff4e19);
+        self.layer.borderWidth = 1.0f;
+        self.layer.borderColor = HexRGB(0xffffff).CGColor;
+        [self setupRadius];
+        [self addSubview:self.countLabel];
+        [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.left.mas_equalTo(self.mas_left).offset(6);
+            make.top.mas_equalTo(self.mas_top).offset(2);
+            make.right.mas_equalTo(self.mas_right).offset(-7);
+            make.bottom.mas_equalTo(self.mas_bottom).offset(-2);
+        }];
+    }
+    return self;
+}
+
+- (void)setupRadius {
+    if (@available(iOS 11.0, *)) {
+        self.layer.cornerRadius = 8;
+        self.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner | kCALayerMaxXMaxYCorner;
+    }
+    else {
+        UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomRight cornerRadii:CGSizeMake(8, 8)];
+        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
+        maskLayer.frame = self.bounds;
+        maskLayer.path = path.CGPath;
+        self.layer.mask = maskLayer;
+    }
+    self.layer.masksToBounds = YES;
+}
+
+- (void)configCountMessage:(NSString *)countString {
+    self.countLabel.text = countString;
+}
+
+- (UILabel *)countLabel {
+    if (!_countLabel) {
+        _countLabel = [[UILabel alloc] init];
+        _countLabel.textColor = HexRGB(0xffffff);
+        _countLabel.font = [UIFont systemFontOfSize:11.0f weight:UIFontWeightMedium];
+    }
+    return _countLabel;
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 26 - 26
KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,132 +7,132 @@
 		<key>AFNetworking.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>19</integer>
+			<integer>3</integer>
 		</dict>
 		<key>Bugly.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>15</integer>
+			<integer>9</integer>
 		</dict>
 		<key>IQKeyboardManager.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>12</integer>
+			<integer>4</integer>
 		</dict>
 		<key>JCore.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>13</integer>
+			<integer>0</integer>
 		</dict>
 		<key>JPush.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>0</integer>
+			<integer>16</integer>
 		</dict>
 		<key>JXCategoryView.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>24</integer>
+			<integer>21</integer>
 		</dict>
 		<key>JXPagingView.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>17</integer>
+			<integer>24</integer>
 		</dict>
 		<key>MBProgressHUD.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>5</integer>
+			<integer>11</integer>
 		</dict>
 		<key>MJExtension.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>9</integer>
+			<integer>10</integer>
 		</dict>
 		<key>MJRefresh.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>25</integer>
+			<integer>22</integer>
 		</dict>
 		<key>Masonry.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>6</integer>
+			<integer>15</integer>
 		</dict>
 		<key>Pods-KulexiuForTeacher.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>7</integer>
+			<integer>20</integer>
 		</dict>
 		<key>RSKImageCropper.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>16</integer>
+			<integer>8</integer>
 		</dict>
 		<key>Reachability.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>20</integer>
+			<integer>23</integer>
 		</dict>
 		<key>RongCloudIM.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>10</integer>
+			<integer>26</integer>
 		</dict>
 		<key>RongCloudRTC.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>11</integer>
+			<integer>5</integer>
 		</dict>
 		<key>SDWebImage.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>14</integer>
+			<integer>1</integer>
 		</dict>
 		<key>SSZipArchive.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>2</integer>
+			<integer>12</integer>
 		</dict>
 		<key>SocketRocket.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>23</integer>
+			<integer>13</integer>
 		</dict>
 		<key>UMAPM.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>26</integer>
+			<integer>6</integer>
 		</dict>
 		<key>UMCommon.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>1</integer>
+			<integer>14</integer>
 		</dict>
 		<key>UMDevice.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>8</integer>
+			<integer>2</integer>
 		</dict>
 		<key>Whiteboard-Whiteboard.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>21</integer>
+			<integer>18</integer>
 		</dict>
 		<key>Whiteboard.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>4</integer>
+			<integer>17</integer>
 		</dict>
 		<key>YYModel.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>22</integer>
+			<integer>19</integer>
 		</dict>
 		<key>dsBridge.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>18</integer>
+			<integer>7</integer>
 		</dict>
 	</dict>
 </dict>