| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- //
- // IMAPlatform+TCAVLive.m
- // TCShow
- //
- // Created by AlexiChen on 16/4/12.
- // Copyright © 2016年 AlexiChen. All rights reserved.
- //
- #import "IMAPlatform+TCAVLive.h"
- #import <IMGroupExt/IMGroupExt.h>
- @implementation IMAPlatform (TCAVLive)
- - (void)asyncExitHistoryAVChatRoom
- {
- // [[TIMGroupManager sharedInstance] GetGroupList:^(NSArray *list) {
- // for(int index = 0; index < list.count; index++)
- // {
- // // AVChatRoom 使用longpoll
- // TIMGroupInfo* info = list[index];
- // if ([info.groupType isEqualToString:kAVChatRoomType])
- // {
- // // 不用处理返回码,会删除自己创建的群
- // DebugLog(@"解散或退出历史直播房间:%@", info.group);
- // [[TIMGroupManager sharedInstance] DeleteGroup:info.group succ:nil fail:nil];
- // }
- // }
- // } fail:nil];
- [[TIMGroupManager sharedInstance] getGroupList:^(NSArray *list) {
- for(int index = 0; index < list.count; index++)
- {
- // AVChatRoom 使用longpoll
- TIMGroupInfo* info = list[index];
- if ([info.groupType isEqualToString:kAVChatRoomType])
- {
- // 不用处理返回码,会删除自己创建的群
- DebugLog(@"解散或退出历史直播房间:%@", info.group);
- [[TIMGroupManager sharedInstance] deleteGroup:info.group succ:nil fail:nil];
- }
- }
- } fail:nil];
- }
- // 主播 : 主播创建直播聊天室
- // 观众 : 观众加入直播聊天室
- - (void)asyncEnterAVChatRoom:(id<AVRoomAble>)room isHost:(BOOL)isHost succ:(TCAVLiveChatRoomCompletion)succ fail:(TIMFail)fail
- {
- if (!room)
- {
- DebugLog(@"直播房房间信息不正确");
- if (fail)
- {
- fail(-1, @"直播房房间信息不正确");
- }
- return;
- }
-
-
- NSString *title = [room liveTitle];
- if (!title || title.length == 0)
- {
- DebugLog(@"直播房房间信息liveTitle不正确");
- if (fail)
- {
- fail(-1, @"直播房房间信息liveTitle不正确");
- }
- return;
- }
-
- // 外部保证聊天室ID是正确的
- NSString *roomid = [room liveIMChatRoomId];
-
- if (isHost)
- {
-
- #if kSupportFixLiveChatRoomID
- // 如果roomid不为空,说明使用roomid作标题来创建直播群
- // 否则使用room liveTitle来作群名创建群
- if (roomid && roomid.length != 0)
- {
- DebugLog(@"----->>>>>主播开始创建直播聊天室:%@ title = %@", roomid, title);
- [[TIMGroupManager sharedInstance] createGroup:kAVChatRoomType members:nil groupName:title groupId:roomid succ:^(NSString *groupId) {
- [room setLiveIMChatRoomId:groupId];
- if (succ)
- {
- succ(room);
- }
-
- } fail:^(int code, NSString *error) {
- // 返回10025,group id has be used,
- // 10025无法区分当前是操作者是否是原群的操作者(目前业务逻辑不存在拿别人的uid创建聊天室逻辑),
- // 为简化逻辑,暂定创建聊天室时返回10025,就直接等同于创建成功
- if (code == 10025)
- {
- DebugLog(@"----->>>>>主播开始创建直播聊天室成功");
- [room setLiveIMChatRoomId:roomid];
- if (succ)
- {
- succ(room);
- }
- }
- else
- {
- DebugLog(@"----->>>>>主播开始创建直播聊天室失败 code: %d , msg = %@", code, error);
- if (fail)
- {
- fail(code, error);
- }
- }
- }];
- }
- else
- #endif
- {
- #if kSupportAVChatRoom
- if(roomid){ // 主播在一段时间内断开直播重新连接直播的情况
-
- [[V2TIMManager sharedInstance] joinGroup:roomid msg:nil succ:^{
- if (succ)
- {
- succ(room);
- }
- } fail:^(int code, NSString *desc) {
- if (code == 10013)
- {
- DebugLog(@"----->>>>>主播重新加入自己的直播聊天室成功");
- if (succ)
- {
- succ(room);
- }
- }
- else
- {
- // DebugLog(@"----->>>>>主播重新加入自己的直播聊天室失败 code: %d , msg = %@", code, error);
- // 作已在群的处的处理
- if (fail)
- {
- fail(code, desc);
- }
- }
- }];
-
-
- /*[[TIMGroupManager sharedInstance] joinGroup:roomid msg:nil succ:^{
- DebugLog(@"----->>>>>主播重新加入自己的直播聊天室成功");
- if (succ)
- {
- succ(room);
- }
-
-
- } fail:^(int code, NSString *error) {
-
- if (code == 10013)
- {
- DebugLog(@"----->>>>>主播重新加入自己的直播聊天室成功");
- if (succ)
- {
- succ(room);
- }
- }
- else
- {
- DebugLog(@"----->>>>>主播重新加入自己的直播聊天室失败 code: %d , msg = %@", code, error);
- // 作已在群的处的处理
- if (fail)
- {
- fail(code, error);
- }
- }
-
- }];*/
- }else{
-
- [[TIMGroupManager sharedInstance] createAVChatRoomGroup:title succ:^(NSString *chatRoomID) {
- #else
- [[TIMGroupManager sharedInstance] createChatRoomGroup:@[[self.host imUserId]] groupName:title succ:^(NSString *chatRoomID) {
- #endif
- DebugLog(@"----->>>>>主播开始创建IM聊天室成功");
- [room setLiveIMChatRoomId:chatRoomID];
- if (succ)
- {
- succ(room);
- }
-
- } fail:^(int code, NSString *error) {
-
- DebugLog(@"----->>>>>主播开始创建IM聊天室失败 code: %d , msg = %@", code, error);
- if (fail)
- {
- fail(code, error);
- }
- }];
- }
-
- }
- }
- else
- {
-
- if (roomid.length == 0)
- {
- DebugLog(@"----->>>>>观众加入直播聊天室ID为空");
- if (fail)
- {
- fail(-1, @"直播聊天室ID为空");
- }
- return;
- }
-
-
- [[V2TIMManager sharedInstance] joinGroup:roomid msg:nil succ:^{
- if (succ)
- {
- succ(room);
- }
- } fail:^(int code, NSString *desc) {
-
- if (code == 10013)
- {
- DebugLog(@"----->>>>>观众加入直播聊天室成功");
- if (succ)
- {
- succ(room);
- }
- }
- else
- {
- // DebugLog(@"----->>>>>观众加入直播聊天室失败 code: %d , msg = %@", code, error);
- // 作已在群的处的处理
- if (fail)
- {
- fail(code, desc);
- }
- }
- }];
- // 观众加群
- /*[[TIMGroupManager sharedInstance] joinGroup:roomid msg:nil succ:^{
- DebugLog(@"----->>>>>观众加入直播聊天室成功");
- if (succ)
- {
- succ(room);
- }
-
-
- } fail:^(int code, NSString *error) {
-
- if (code == 10013)
- {
- DebugLog(@"----->>>>>观众加入直播聊天室成功");
- if (succ)
- {
- succ(room);
- }
- }
- else
- {
- DebugLog(@"----->>>>>观众加入直播聊天室失败 code: %d , msg = %@", code, error);
- // 作已在群的处的处理
- if (fail)
- {
- fail(code, error);
- }
- }
-
- }];*/
- }
- }
-
- // 主播 : 主播删除直播聊天室
- // 观众 : 观众退出直播聊天室
- - (void)asyncExitAVChatRoom:(id<AVRoomAble>)room succ:(TIMSucc)succ fail:(TIMFail)fail
- {
- if (!room)
- {
- DebugLog(@"直播房房间信息不正确");
- if (fail)
- {
- fail(-1, @"直播房房间信息不正确");
- }
- return;
- }
-
- id<IMUserAble> roomHost = [room liveHost];
- NSString *roomid = [room liveIMChatRoomId];
-
- if (roomid.length == 0)
- {
- DebugLog(@"----->>>>>观众退出的直播聊天室ID为空");
- if (fail)
- {
- fail(-1, @"直播聊天室ID为空");
- }
- return;
- }
-
-
- BOOL isHost = [self.host isEqual:roomHost];
- if (isHost)
- {
- // 主播删群
- // [[TIMGroupManager sharedInstance] DeleteGroup:roomid succ:succ fail:fail];
- if(succ)
- {
- succ();
- }
- }
- else
- {
-
-
- [[V2TIMManager sharedInstance] quitGroup:roomid succ:^{
- NSLog(@"退出群组 %@",roomid);
- // if (succ)
- // {
- // [[IMAPlatform sharedInstance].contactMgr removeUser:ws];
- // succ();
- // }
- } fail:^(int code, NSString *msg) {
- // DebugLog(@"Fail code = %d, msg = %@", code, msg);
- // [[BGHUDHelper sharedInstance] tipMessage:IMALocalizedError(code, msg)];
- // if (fail)
- // {
- // fail(code, msg);
- // }
- }];
-
- // 观众退群
- // [[TIMGroupManager sharedInstance] quitGroup:roomid succ:succ fail:fail];
- }
- }
- @end
|