YMAudioVideoMatchingViewModel.m 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. //
  2. // YMAudioVideoMatchingViewModel.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/20.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMAudioVideoMatchingViewModel.h"
  9. #import "YOUPAIBBVideoRequestVC.h"
  10. #import "YOUPAILCVideoRequestVC.h"
  11. @interface YMAudioVideoMatchingViewModel ()
  12. /// 音视频匹配类型
  13. @property (nonatomic, assign, readwrite) YMAudioVideoMatchingType audioVideoMatchingType;
  14. /// 音视频匹配过渡动画文件名
  15. @property (nonatomic, copy, readwrite) NSString *audioVideoMatchingTransitionFileName;
  16. /// 用户头像
  17. @property (nonatomic, copy, readwrite) NSString *userAvatar;
  18. /// 匹配类型图标
  19. @property (nonatomic, strong, readwrite) UIImage *matchingTypeIcon;
  20. /// 音视频匹配过渡动画文件名
  21. @property (nonatomic, copy) NSString *matchingType;
  22. @end
  23. @implementation YMAudioVideoMatchingViewModel
  24. - (void)ym_initialize{
  25. [super ym_initialize];
  26. self.audioVideoMatchingType = [self.params integerValueForKey:ParamsCategoryType defaultValue:YMAudioVideoMatchingTypeVideo];
  27. switch (self.audioVideoMatchingType) {
  28. case YMAudioVideoMatchingTypeVideo:
  29. {
  30. self.customNavTitle = @"视频匹配";
  31. self.matchingTypeIcon = ImageByName(@"ym_audio_video_matching_type_video");
  32. self.matchingType = @"video";
  33. }
  34. break;
  35. case YMAudioVideoMatchingTypeAudio:
  36. {
  37. self.customNavTitle = @"语音匹配";
  38. self.matchingTypeIcon = ImageByName(@"ym_audio_video_matching_type_voice");
  39. self.matchingType = @"voice";
  40. }
  41. break;
  42. default:
  43. break;
  44. }
  45. self.audioVideoMatchingTransitionFileName = @"audio_video_matching_animation";
  46. self.userAvatar = [LCSaveModel getUserModel].youpaipuserinfo.youpaipavatar;
  47. }
  48. - (void)openAudioVideoMatchingCompletion:(void (^)(BOOL))completion{
  49. [LCHttpHelper requestWithURLString:OpenMatching parameters:@{
  50. @"type":self.matchingType,
  51. } needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  52. NSDictionary* dict = (NSDictionary*)responseObject;
  53. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  54. if (code == 0) {
  55. completion(YES);
  56. }else{
  57. completion(NO);
  58. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  59. }
  60. } failure:^(NSError *error) {
  61. completion(NO);
  62. [ZCHUDHelper showTitle:error.localizedDescription];
  63. }];
  64. }
  65. - (void)closeAudioVideoMatchingCompletion:(void (^)(BOOL))completion{
  66. [LCHttpHelper requestWithURLString:CloseMatching parameters:@{
  67. @"type":self.matchingType,
  68. } needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  69. NSDictionary* dict = (NSDictionary*)responseObject;
  70. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  71. if (code == 0) {
  72. completion(YES);
  73. }else{
  74. completion(NO);
  75. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  76. }
  77. } failure:^(NSError *error) {
  78. completion(NO);
  79. [ZCHUDHelper showTitle:error.localizedDescription];
  80. }];
  81. }
  82. - (void)receiveAudioVideoMatchingWithMatchId:(NSString*)matchId OfUserId:(NSInteger)userId{
  83. [LCHttpHelper requestWithURLString:ReceiveMatching parameters:@{
  84. @"type":@"receive",
  85. @"match_id":matchId
  86. } needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  87. NSDictionary* dict = (NSDictionary*)responseObject;
  88. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  89. if (code == 0) {
  90. if ([YOUPAILZChatRoomManager shareManager].chatroomWindow != nil && [YOUPAILZChatRoomManager shareManager].chatroomWindow.hidden == NO) {
  91. [ZCHUDHelper showTitle:@"你正在房间中,暂不可拨打视频"];
  92. return;
  93. }
  94. [UMengRecordTool umengEventCountWithId:StartVideoPersonal];
  95. [UCAuthorityManager cameraAuthority:^{
  96. if ([LCSaveData getWhiteVersion]) {//1
  97. [LCHttpHelper requestWithURLString:UserShowPage parameters:@{
  98. @"user_id":@(userId)
  99. } needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  100. NSDictionary* dict = (NSDictionary*)responseObject;
  101. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  102. if (code==0) {//成功
  103. NSDictionary *data = [dict objectForKey:@"data"];
  104. YOUPAILCUserShowInfo *info = [YOUPAILCUserShowInfo mj_objectWithKeyValues:[data objectForKey:@"info"]];
  105. YOUPAIBBVideoRequestVC* chatRequest = [[YOUPAIBBVideoRequestVC alloc]init];
  106. YOUPAILCVideoChatModel *videoModel = [[YOUPAILCVideoChatModel alloc] init];
  107. videoModel.youpaiproom_id = [NSString stringWithFormat:@"C%@",[LCTools randomNumberWithLength:6]];
  108. videoModel.youpaipauditState = 1;
  109. videoModel.youpaipfrom_uid = [LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id;
  110. videoModel.youpaipfrom_nickname = [LCSaveModel getUserModel].youpaipuserinfo.youpaipnickname;
  111. videoModel.youpaipfrom_avatar = [LCSaveModel getUserModel].youpaipuserinfo.youpaipavatar;
  112. videoModel.youpaipto_uid = stringFormat(@"%ld",userId);
  113. videoModel.youpaipto_nickname = info.youpaipnickname;
  114. videoModel.youpaipto_avatar = info.youpaipavatar;
  115. chatRequest.youpaipvideoModel = videoModel;
  116. ZCBaseNavigationVC *nav = [[ZCBaseNavigationVC alloc]initWithRootViewController:chatRequest];
  117. //modify by leo fix bug ios13
  118. nav.modalPresentationStyle =0;
  119. [[YMGlobalUtils getCurrentVC].navigationController presentViewController:nav animated:YES completion:^{
  120. }];
  121. }
  122. } failure:^(NSError *error) {
  123. }];
  124. }else{//0
  125. YOUPAILCVideoChatModel* videoModel = [YOUPAILCVideoChatModel mj_objectWithKeyValues:[dict objectForKey:@"data"]];
  126. [[YOUPAILZChatRoomManager shareManager] youpaifcloseChatRoom];
  127. [[NSNotificationCenter defaultCenter] postNotificationName:@"MeCallVideo" object:nil userInfo:nil];
  128. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  129. YOUPAILCVideoRequestVC* chatRequest = [[YOUPAILCVideoRequestVC alloc]init];
  130. chatRequest.youpaipvideoModel = videoModel;
  131. //modify by leo fix bug ios13
  132. ZCBaseNavigationVC *nav = [[ZCBaseNavigationVC alloc]initWithRootViewController:chatRequest];
  133. chatRequest.definesPresentationContext = YES;
  134. nav.modalPresentationStyle = UIModalPresentationOverCurrentContext&UIModalPresentationOverFullScreen;
  135. chatRequest.view.backgroundColor=HexColorFromRGBA(0x000000, 0.55);
  136. [[YMGlobalUtils getCurrentVC].navigationController presentViewController:nav animated:YES completion:^{
  137. }];
  138. });
  139. }
  140. } denied:^{
  141. dispatch_async(dispatch_get_main_queue(), ^{
  142. UIAlertController *systemAlert = [UIAlertController alertControllerWithTitle:@"请在iphone的“设置-隐私-相机”选项中,允许APP访问您的相机。" message:nil preferredStyle:UIAlertControllerStyleAlert];
  143. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"现在去设置" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action){
  144. if ([[UIDevice currentDevice].systemVersion floatValue] < 10.0)
  145. {
  146. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
  147. }
  148. else
  149. {
  150. // 去系统设置页面
  151. if (@available(iOS 10.0, *)) {
  152. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
  153. } else {
  154. // Fallback on earlier versions
  155. }
  156. }
  157. }];
  158. UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];
  159. [systemAlert addAction:cancelAction];
  160. [systemAlert addAction:action];
  161. [[YMGlobalUtils getCurrentVC] presentViewController: systemAlert animated: YES completion: nil];
  162. });
  163. }];
  164. }else{
  165. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  166. }
  167. } failure:^(NSError *error) {
  168. [ZCHUDHelper showTitle:error.localizedDescription];
  169. }];
  170. }
  171. @end