109 lines
5.4 KiB
Mathematica
109 lines
5.4 KiB
Mathematica
|
|
//
|
||
|
|
// TRTCSignalFactory.m
|
||
|
|
// TUICalling
|
||
|
|
//
|
||
|
|
// Created by adams on 2021/6/17.
|
||
|
|
//
|
||
|
|
|
||
|
|
#import "TRTCSignalFactory.h"
|
||
|
|
#import "TRTCCallingHeader.h"
|
||
|
|
#import "TUICallingConstants.h"
|
||
|
|
|
||
|
|
static const NSUInteger SIGNALING_VERSION = 4; // 信令版本号
|
||
|
|
|
||
|
|
@implementation TRTCSignalFactory
|
||
|
|
|
||
|
|
+ (NSMutableDictionary *)packagingSignalingWithExtInfo:(NSString *)extInfo
|
||
|
|
roomID:(NSUInteger)roomID
|
||
|
|
cmd:(NSString *)cmd
|
||
|
|
cmdInfo:(NSString *)cmdInfo
|
||
|
|
message:(NSString *)message
|
||
|
|
callType:(CallType)callType {
|
||
|
|
return [[self class] packagingSignalingWithExtInfo:extInfo roomID:roomID cmd:cmd cmdInfo:cmdInfo userIds:@[] message:message callType:callType];
|
||
|
|
}
|
||
|
|
|
||
|
|
+ (NSMutableDictionary *)packagingSignalingWithExtInfo:(NSString *)extInfo
|
||
|
|
roomID:(NSUInteger)roomID
|
||
|
|
cmd:(NSString *)cmd
|
||
|
|
cmdInfo:(NSString *)cmdInfo
|
||
|
|
userIds:(NSArray *)userIds
|
||
|
|
message:(NSString *)message
|
||
|
|
callType:(CallType)callType {
|
||
|
|
NSMutableDictionary *signalingDictionary = [@{SIGNALING_EXTRA_KEY_VERSION:@(SIGNALING_VERSION),
|
||
|
|
SIGNALING_EXTRA_KEY_BUSINESSID:SIGNALING_BUSINESSID,
|
||
|
|
SIGNALING_EXTRA_KEY_PLATFORM:SIGNALING_PLATFORM,
|
||
|
|
SIGNALING_EXTRA_KEY_EXTINFO:extInfo,
|
||
|
|
SIGNALING_EXTRA_KEY_CALL_TYPE:@(callType),
|
||
|
|
SIGNALING_EXTRA_KEY_DATA:@{SIGNALING_EXTRA_KEY_ROOMID:@(roomID),
|
||
|
|
SIGNALING_EXTRA_KEY_CMD:cmd,
|
||
|
|
SIGNALING_EXTRA_KEY_USERIDS:userIds,
|
||
|
|
SIGNALING_EXTRA_KEY_CMDINFO:cmdInfo,
|
||
|
|
SIGNALING_EXTRA_KEY_MESSAGE:message}} mutableCopy];
|
||
|
|
return signalingDictionary;
|
||
|
|
}
|
||
|
|
|
||
|
|
+ (NSDictionary *)getDataDictionary: (NSDictionary *)signaling {
|
||
|
|
NSDictionary *dataDictionary = signaling[SIGNALING_EXTRA_KEY_DATA];
|
||
|
|
return dataDictionary;
|
||
|
|
}
|
||
|
|
|
||
|
|
+ (CallType)convertCmdToCallType:(NSString *)cmd {
|
||
|
|
if ([cmd isEqualToString:SIGNALING_CMD_AUDIOCALL]) {
|
||
|
|
return CallType_Audio;
|
||
|
|
} else if ([cmd isEqualToString:SIGNALING_CMD_VIDEOCALL]) {
|
||
|
|
return CallType_Video;
|
||
|
|
}
|
||
|
|
return CallType_Unknown;
|
||
|
|
}
|
||
|
|
|
||
|
|
+ (NSDictionary *)convertOldSignalingToNewSignaling:(NSDictionary *)oldSignalingDictionary {
|
||
|
|
NSMutableDictionary *signalingDictionary = [NSMutableDictionary dictionaryWithDictionary:oldSignalingDictionary];
|
||
|
|
NSMutableDictionary *dataDictionary = [NSMutableDictionary dictionary];
|
||
|
|
if ([oldSignalingDictionary.allKeys containsObject:SIGNALING_EXTRA_KEY_SWITCH_AUDIO_CALL]) {
|
||
|
|
[dataDictionary setValue:SIGNALING_CMD_SWITCHTOVOICECALL forKey:SIGNALING_EXTRA_KEY_CMD];
|
||
|
|
}
|
||
|
|
else if ([oldSignalingDictionary.allKeys containsObject:SIGNALING_EXTRA_KEY_CALL_END]) {
|
||
|
|
[dataDictionary setValue:SIGNALING_CMD_HANGUP forKey:SIGNALING_EXTRA_KEY_CMD];
|
||
|
|
}
|
||
|
|
else if ([oldSignalingDictionary.allKeys containsObject:SIGNALING_EXTRA_KEY_CALL_TYPE]) {
|
||
|
|
CallType callType = [signalingDictionary[SIGNALING_EXTRA_KEY_CALL_TYPE] integerValue];
|
||
|
|
switch (callType) {
|
||
|
|
case CallType_Video:
|
||
|
|
[dataDictionary setValue:SIGNALING_CMD_VIDEOCALL forKey:SIGNALING_EXTRA_KEY_CMD];
|
||
|
|
break;
|
||
|
|
case CallType_Audio:
|
||
|
|
[dataDictionary setValue:SIGNALING_CMD_AUDIOCALL forKey:SIGNALING_EXTRA_KEY_CMD];
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if ([oldSignalingDictionary.allKeys containsObject:SIGNALING_EXTRA_KEY_BUSINESSID]) {
|
||
|
|
[signalingDictionary setValue:oldSignalingDictionary[SIGNALING_EXTRA_KEY_BUSINESSID] forKey:SIGNALING_EXTRA_KEY_BUSINESSID];
|
||
|
|
} else {
|
||
|
|
NSString *cmd = dataDictionary[SIGNALING_EXTRA_KEY_CMD];
|
||
|
|
if ([cmd isEqualToString:SIGNALING_CMD_SWITCHTOVOICECALL] ||
|
||
|
|
[cmd isEqualToString:SIGNALING_CMD_HANGUP] ||
|
||
|
|
[cmd isEqualToString:SIGNALING_CMD_VIDEOCALL] ||
|
||
|
|
[cmd isEqualToString:SIGNALING_CMD_AUDIOCALL]) {
|
||
|
|
[signalingDictionary setValue:SIGNALING_BUSINESSID forKey:SIGNALING_EXTRA_KEY_BUSINESSID];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if ([oldSignalingDictionary.allKeys containsObject:SIGNALING_EXTRA_KEY_LINE_BUSY]) {
|
||
|
|
[dataDictionary setValue:SIGNALING_MESSAGE_LINEBUSY forKey:SIGNALING_EXTRA_KEY_MESSAGE];
|
||
|
|
}
|
||
|
|
|
||
|
|
if ([oldSignalingDictionary.allKeys containsObject:SIGNALING_EXTRA_KEY_ROOM_ID]) {
|
||
|
|
[dataDictionary setValue:@([signalingDictionary[SIGNALING_EXTRA_KEY_ROOM_ID] integerValue]) forKey:SIGNALING_EXTRA_KEY_ROOMID];
|
||
|
|
}
|
||
|
|
|
||
|
|
[signalingDictionary setValue:dataDictionary forKey:SIGNALING_EXTRA_KEY_DATA];
|
||
|
|
|
||
|
|
NSLog(@"%@",signalingDictionary);
|
||
|
|
return signalingDictionary;
|
||
|
|
}
|
||
|
|
|
||
|
|
@end
|