cdts/xdts-ios 3/Pods/TUICore/TUICore/TUITool.m
2023-07-27 09:20:00 +08:00

1155 lines
68 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// THelper.m
// TUIKit
//
// Created by kennethmiao on 2018/11/1.
// Copyright © 2018年 Tencent. All rights reserved.
//
#import "TUIDefine.h"
#import "TUILogin.h"
#import "UIView+TUIToast.h"
#import "TUIGlobalization.h"
@import ImSDK_Plus;
@implementation TUITool
+ (NSData *)dictionary2JsonData:(NSDictionary *)dict
{
// 转成Json数据
if ([NSJSONSerialization isValidJSONObject:dict])
{
NSError *error = nil;
NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
if(error)
{
NSLog(@"[%@] Post Json Error", [self class]);
}
return data;
}
else
{
NSLog(@"[%@] Post Json is not valid", [self class]);
}
return nil;
}
+ (NSString *)dictionary2JsonStr:(NSDictionary *)dict {
return [[NSString alloc] initWithData:[self dictionary2JsonData:dict] encoding:NSUTF8StringEncoding];;
}
+ (NSDictionary *)jsonSring2Dictionary:(NSString *)jsonString
{
if (jsonString == nil) {
return nil;
}
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *err = nil;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];
if (err || ![dic isKindOfClass:[NSDictionary class]]) {
NSLog(@"Json parse failed: %@", jsonString);
return nil;
}
return dic;
}
+ (NSDictionary *)jsonData2Dictionary:(NSData *)jsonData
{
if (jsonData == nil) {
return nil;
}
NSError *err = nil;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
if (err || ![dic isKindOfClass:[NSDictionary class]]) {
NSLog(@"Json parse failed");
return nil;
}
return dic;
}
+ (void)asyncDecodeImage:(NSString *)path complete:(TAsyncImageComplete)complete
{
static dispatch_queue_t queue;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
queue = dispatch_queue_create("com.tuikit.asyncDecodeImage", DISPATCH_QUEUE_SERIAL);
});
dispatch_async(queue, ^{
if(path == nil){
return;
}
UIImage *image = nil;
if ([path containsString:@".gif"]) { //支持动图
image = [UIImage sd_imageWithGIFData:[NSData dataWithContentsOfFile:path]];
if(complete){
complete(path, image);
}
return;
} else {
image = [UIImage d_imagePath:path];
}
if (image == nil) {
return;
}
// 获取CGImage
CGImageRef cgImage = image.CGImage;
// alphaInfo
CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(cgImage) & kCGBitmapAlphaInfoMask;
BOOL hasAlpha = NO;
if (alphaInfo == kCGImageAlphaPremultipliedLast ||
alphaInfo == kCGImageAlphaPremultipliedFirst ||
alphaInfo == kCGImageAlphaLast ||
alphaInfo == kCGImageAlphaFirst) {
hasAlpha = YES;
}
// bitmapInfo
CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host;
bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst;
// size
size_t width = CGImageGetWidth(cgImage);
size_t height = CGImageGetHeight(cgImage);
// 解码:把位图提前画到图形上下文,生成 cgImage就完成了解码。
// context
CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, 0, CGColorSpaceCreateDeviceRGB(), bitmapInfo);
// draw
CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage);
// get CGImage
cgImage = CGBitmapContextCreateImage(context);
// 解码后的图片,包装成 UIImage 。
// into UIImage
UIImage *newImage = [UIImage imageWithCGImage:cgImage scale:image.scale orientation:image.imageOrientation];
// release
if(context) CGContextRelease(context);
if(cgImage) CGImageRelease(cgImage);
//callback
if(complete){
complete(path, newImage);
}
});
}
+ (NSString *)randAvatarUrl
{
return [NSString stringWithFormat:@"https://picsum.photos/id/%d/200/200", rand()%999];
}
+ (void)makeToast:(NSString *)str
{
if ([TUIConfig defaultConfig].enableToast) {
[[UIApplication sharedApplication].keyWindow makeToast:str];
}
}
+ (void)makeToast:(NSString *)str duration:(NSTimeInterval)duration {
if ([TUIConfig defaultConfig].enableToast) {
[[UIApplication sharedApplication].keyWindow makeToast:str duration:duration];
}
}
+ (void)makeToast:(NSString *)str duration:(NSTimeInterval)duration position:(CGPoint)position
{
if ([TUIConfig defaultConfig].enableToast) {
[[UIApplication sharedApplication].keyWindow makeToast:str duration:duration position:[NSValue valueWithCGPoint:position]];
}
}
+ (void)makeToast:(NSString *)str duration:(NSTimeInterval)duration idposition:(id)position
{
if ([TUIConfig defaultConfig].enableToast) {
[[UIApplication sharedApplication].keyWindow makeToast:str duration:duration position:position];
}
}
+ (void)makeToastError:(NSInteger)error msg:(NSString *)msg
{
if ([TUIConfig defaultConfig].enableToast) {
[[UIApplication sharedApplication].keyWindow makeToast:[self convertIMError:error msg:msg]];
}
}
+ (void)hideToast {
if ([TUIConfig defaultConfig].enableToast) {
[[UIApplication sharedApplication].keyWindow hideToast];
}
}
+ (void)makeToastActivity
{
if ([TUIConfig defaultConfig].enableToast) {
[[UIApplication sharedApplication].keyWindow makeToastActivity:TUICSToastPositionCenter];
}
}
+ (void)hideToastActivity
{
if ([TUIConfig defaultConfig].enableToast) {
[[UIApplication sharedApplication].keyWindow hideToastActivity];
}
}
+ (NSString *)convertDateToStr:(NSDate *)date
{
if (!date) {
return nil;
}
if ([date isEqualToDate:[NSDate distantPast]]) {
return @"";
}
NSDateFormatter *dateFmt = [[NSDateFormatter alloc] init];
NSCalendar *calendar = [NSCalendar currentCalendar];
calendar.firstWeekday = 7;
NSDateComponents *nowComponent = [calendar components:NSCalendarUnitDay|NSCalendarUnitMonth|NSCalendarUnitYear|NSCalendarUnitWeekOfMonth fromDate:NSDate.new];
NSDateComponents *dateCompoent = [calendar components:NSCalendarUnitDay|NSCalendarUnitMonth|NSCalendarUnitYear|NSCalendarUnitWeekOfMonth fromDate:date];
if (nowComponent.year == dateCompoent.year) {
// 在同一年
if (nowComponent.month == dateCompoent.month) {
// 在同一个月
if (nowComponent.weekOfMonth == dateCompoent.weekOfMonth) {
// 在同一个周
if (nowComponent.day == dateCompoent.day) {
// 在同一天
dateFmt.dateFormat = @"HH:mm";
} else {
// 不在同一天
dateFmt.dateFormat = @"EEEE";
}
} else {
// 不在同一个周
dateFmt.dateFormat = @"MM/dd";
}
} else {
// 不在同一个月
dateFmt.dateFormat = @"MM/dd";
}
} else {
// 不在同一年
dateFmt.dateFormat = @"yyyy/MM/dd";
}
NSString *str = [dateFmt stringFromDate:date];
return str;
}
+ (NSString *)convertIMError:(NSInteger)code msg:(NSString *)msg{
switch (code) {
case ERR_IN_PROGESS:
return TUIKitLocalizableString(TUIKitErrorInProcess); // @"执行中";
case ERR_INVALID_PARAMETERS:
return TUIKitLocalizableString(TUIKitErrorInvalidParameters);// @"参数无效";
case ERR_IO_OPERATION_FAILED:
return TUIKitLocalizableString(TUIKitErrorIOOperateFaild); // @"操作本地 IO 错误";
case ERR_INVALID_JSON:
return TUIKitLocalizableString(TUIKitErrorInvalidJson); // @"错误的 JSON 格式";
case ERR_OUT_OF_MEMORY:
return TUIKitLocalizableString(TUIKitErrorOutOfMemory); // @"内存不足";
case ERR_PARSE_RESPONSE_FAILED:
return TUIKitLocalizableString(TUIKitErrorParseResponseFaild); // @"PB 解析失败";
case ERR_SERIALIZE_REQ_FAILED:
return TUIKitLocalizableString(TUIKitErrorSerializeReqFaild); // @"PB 序列化失败";
case ERR_SDK_NOT_INITIALIZED:
return TUIKitLocalizableString(TUIKitErrorSDKNotInit); // @"IM SDK 未初始化";
case ERR_LOADMSG_FAILED:
return TUIKitLocalizableString(TUIKitErrorLoadMsgFailed); // @"加载本地数据库操作失败";
case ERR_DATABASE_OPERATE_FAILED:
return TUIKitLocalizableString(TUIKitErrorDatabaseOperateFailed); // @"本地数据库操作失败";
case ERR_SDK_COMM_CROSS_THREAD:
return TUIKitLocalizableString(TUIKitErrorCrossThread); // @"跨线程错误";
case ERR_SDK_COMM_TINYID_EMPTY:
return TUIKitLocalizableString(TUIKitErrorTinyIdEmpty); // @"TinyId 为空";
case ERR_SDK_COMM_INVALID_IDENTIFIER:
return TUIKitLocalizableString(TUIKitErrorInvalidIdentifier); // @"Identifier 非法";
case ERR_SDK_COMM_FILE_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorFileNotFound); // @"文件不存在";
case ERR_SDK_COMM_FILE_TOO_LARGE:
return TUIKitLocalizableString(TUIKitErrorFileTooLarge); // @"文件大小超出了限制";
case ERR_SDK_COMM_FILE_SIZE_EMPTY:
return TUIKitLocalizableString(TUIKitErrorEmptyFile); // @"空文件";
case ERR_SDK_COMM_FILE_OPEN_FAILED:
return TUIKitLocalizableString(TUIKitErrorFileOpenFailed); // @"文件打开失败";
// 帐号错误码
case ERR_SDK_NOT_LOGGED_IN:
return TUIKitLocalizableString(TUIKitErrorNotLogin); // @"IM SDK 未登录";
case ERR_NO_PREVIOUS_LOGIN:
return TUIKitLocalizableString(TUIKitErrorNoPreviousLogin); // @"并没有登录过该用户";
case ERR_USER_SIG_EXPIRED:
return TUIKitLocalizableString(TUIKitErrorUserSigExpired); // @"UserSig 过期";
case ERR_LOGIN_KICKED_OFF_BY_OTHER:
return TUIKitLocalizableString(TUIKitErrorLoginKickedOffByOther); // @"其他终端登录同一个帐号";
// case ERR_LOGIN_IN_PROCESS:
// return @"登录正在执行中";
// case ERR_LOGOUT_IN_PROCESS:
// return @"登出正在执行中";
case ERR_SDK_ACCOUNT_TLS_INIT_FAILED:
return TUIKitLocalizableString(TUIKitErrorTLSSDKInit); // @"TLS SDK 初始化失败";
case ERR_SDK_ACCOUNT_TLS_NOT_INITIALIZED:
return TUIKitLocalizableString(TUIKitErrorTLSSDKUninit); // @"TLS SDK 未初始化";
case ERR_SDK_ACCOUNT_TLS_TRANSPKG_ERROR:
return TUIKitLocalizableString(TUIKitErrorTLSSDKTRANSPackageFormat); // @"TLS SDK TRANS 包格式错误";
case ERR_SDK_ACCOUNT_TLS_DECRYPT_FAILED:
return TUIKitLocalizableString(TUIKitErrorTLSDecrypt); // @"TLS SDK 解密失败";
case ERR_SDK_ACCOUNT_TLS_REQUEST_FAILED:
return TUIKitLocalizableString(TUIKitErrorTLSSDKRequest); // @"TLS SDK 请求失败";
case ERR_SDK_ACCOUNT_TLS_REQUEST_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorTLSSDKRequestTimeout); // @"TLS SDK 请求超时";
// 消息错误码
case ERR_INVALID_CONVERSATION:
return TUIKitLocalizableString(TUIKitErrorInvalidConveration); // @"会话无效";
case ERR_FILE_TRANS_AUTH_FAILED:
return TUIKitLocalizableString(TUIKitErrorFileTransAuthFailed); // @"文件传输鉴权失败";
case ERR_FILE_TRANS_NO_SERVER:
return TUIKitLocalizableString(TUIKitErrorFileTransNoServer); // @"文件传输获取 Server 列表失败";
case ERR_FILE_TRANS_UPLOAD_FAILED:
return TUIKitLocalizableString(TUIKitErrorFileTransUploadFailed); // @"文件传输上传失败,请检查网络是否连接";
case ERR_IMAGE_UPLOAD_FAILED_NOTIMAGE:
return TUIKitLocalizableString(TUIKitErrorFileTransUploadFailedNotImage); // @"文件传输上传失败,请检查上传的图片是否能够正常打开";
case ERR_FILE_TRANS_DOWNLOAD_FAILED:
return TUIKitLocalizableString(TUIKitErrorFileTransDownloadFailed); // @"文件传输下载失败,请检查网络,或者文件、语音是否已经过期";
case ERR_HTTP_REQ_FAILED:
return TUIKitLocalizableString(TUIKitErrorHTTPRequestFailed); // @"HTTP 请求失败";
case ERR_INVALID_MSG_ELEM:
return TUIKitLocalizableString(TUIKitErrorInvalidMsgElem); // @"IM SDK 无效消息 elem";
case ERR_INVALID_SDK_OBJECT:
return TUIKitLocalizableString(TUIKitErrorInvalidSDKObject); // @"无效的对象";
case ERR_SDK_MSG_BODY_SIZE_LIMIT:
return TUIKitLocalizableString(TUIKitSDKMsgBodySizeLimit); // @"消息长度超出限制";
case ERR_SDK_MSG_KEY_REQ_DIFFER_RSP:
return TUIKitLocalizableString(TUIKitErrorSDKMsgKeyReqDifferRsp); // @"消息 KEY 错误";
// 群组错误码
case ERR_SDK_GROUP_INVALID_ID:
return TUIKitLocalizableString(TUIKitErrorSDKGroupInvalidID); // @"群组 ID 非法,自定义群组 ID 必须为可打印 ASCII 字符0x20-0x7e最长48个字节且前缀不能为 @TGS#";
case ERR_SDK_GROUP_INVALID_NAME:
return TUIKitLocalizableString(TUIKitErrorSDKGroupInvalidName); // @"群名称非法群名称最长30字节";
case ERR_SDK_GROUP_INVALID_INTRODUCTION:
return TUIKitLocalizableString(TUIKitErrorSDKGroupInvalidIntroduction); // @"群简介非法群简介最长240字节";
case ERR_SDK_GROUP_INVALID_NOTIFICATION:
return TUIKitLocalizableString(TUIKitErrorSDKGroupInvalidNotification); // @"群公告非法群公告最长300字节";
case ERR_SDK_GROUP_INVALID_FACE_URL:
return TUIKitLocalizableString(TUIKitErrorSDKGroupInvalidFaceURL); // @"群头像 URL 非法,群头像 URL 最长100字节";
case ERR_SDK_GROUP_INVALID_NAME_CARD:
return TUIKitLocalizableString(TUIKitErrorSDKGroupInvalidNameCard); // @"群名片非法群名片最长50字节";
case ERR_SDK_GROUP_MEMBER_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSDKGroupMemberCountLimit); // @"超过群组成员数的限制";
case ERR_SDK_GROUP_JOIN_PRIVATE_GROUP_DENY:
return TUIKitLocalizableString(TUIKitErrorSDKGroupJoinPrivateGroupDeny); // @"不允许申请加入 Private 群组";
case ERR_SDK_GROUP_INVITE_SUPER_DENY:
return TUIKitLocalizableString(TUIKitErrorSDKGroupInviteSuperDeny); // @"不允许邀请角色为群主的成员";
case ERR_SDK_GROUP_INVITE_NO_MEMBER:
return TUIKitLocalizableString(TUIKitErrorSDKGroupInviteNoMember); // @"不允许邀请0个成员";
// 关系链错误码
case ERR_SDK_FRIENDSHIP_INVALID_PROFILE_KEY:
return TUIKitLocalizableString(TUIKitErrorSDKFriendShipInvalidProfileKey); // @"资料字段非法";
case ERR_SDK_FRIENDSHIP_INVALID_ADD_REMARK:
return TUIKitLocalizableString(TUIKitErrorSDKFriendshipInvalidAddRemark); // @"备注字段非法最大96字节";
case ERR_SDK_FRIENDSHIP_INVALID_ADD_WORDING:
return TUIKitLocalizableString(TUIKitErrorSDKFriendshipInvalidAddWording); // @"请求添加好友的请求说明字段非法最大120字节";
case ERR_SDK_FRIENDSHIP_INVALID_ADD_SOURCE:
return TUIKitLocalizableString(TUIKitErrorSDKFriendshipInvalidAddSource); // @"请求添加好友的添加来源字段非法来源需要添加“AddSource_Type_”前缀。";
case ERR_SDK_FRIENDSHIP_FRIEND_GROUP_EMPTY:
return TUIKitLocalizableString(TUIKitErrorSDKFriendshipFriendGroupEmpty); // @"好友分组字段非法必须不为空每个分组的名称最长30字节";
// 网络
case ERR_SDK_NET_ENCODE_FAILED:
return TUIKitLocalizableString(TUIKitErrorSDKNetEncodeFailed); // @"SSO 加密失败";
case ERR_SDK_NET_DECODE_FAILED:
return TUIKitLocalizableString(TUIKitErrorSDKNetDecodeFailed); // @"SSO 解密失败";
case ERR_SDK_NET_AUTH_INVALID:
return TUIKitLocalizableString(TUIKitErrorSDKNetAuthInvalid); // @"SSO 未完成鉴权";
case ERR_SDK_NET_COMPRESS_FAILED:
return TUIKitLocalizableString(TUIKitErrorSDKNetCompressFailed); // @"数据包压缩失败";
case ERR_SDK_NET_UNCOMPRESS_FAILED:
return TUIKitLocalizableString(TUIKitErrorSDKNetUncompressFaile); // @"数据包解压失败";
case ERR_SDK_NET_FREQ_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSDKNetFreqLimit); // @"调用频率限制,最大每秒发起 5 次请求。";
case ERR_SDK_NET_REQ_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSDKnetReqCountLimit); // @"请求队列満超过同时请求的数量限制最大同时发起1000个请求。";
case ERR_SDK_NET_DISCONNECT:
return TUIKitLocalizableString(TUIKitErrorSDKNetDisconnect); // @"网络已断开,未建立连接,或者建立 socket 连接时,检测到无网络。";
case ERR_SDK_NET_ALLREADY_CONN:
return TUIKitLocalizableString(TUIKitErrorSDKNetAllreadyConn); // @"网络连接已建立,重复创建连接";
case ERR_SDK_NET_CONN_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSDKNetConnTimeout); // @"建立网络连接超时,请等网络恢复后重试。";
case ERR_SDK_NET_CONN_REFUSE:
return TUIKitLocalizableString(TUIKitErrorSDKNetConnRefuse); // @"网络连接已被拒绝,请求过于频繁,服务端拒绝服务。";
case ERR_SDK_NET_NET_UNREACH:
return TUIKitLocalizableString(TUIKitErrorSDKNetNetUnreach); // @"没有到达网络的可用路由,请等网络恢复后重试。";
case ERR_SDK_NET_SOCKET_NO_BUFF:
return TUIKitLocalizableString(TUIKitErrorSDKNetSocketNoBuff); // @"系统中没有足够的缓冲区空间资源可用来完成调用,系统过于繁忙,内部错误。";
case ERR_SDK_NET_RESET_BY_PEER:
return TUIKitLocalizableString(TUIKitERRORSDKNetResetByPeer); // @"对端重置了连接";
case ERR_SDK_NET_SOCKET_INVALID:
return TUIKitLocalizableString(TUIKitErrorSDKNetSOcketInvalid); // @"socket 套接字无效";
case ERR_SDK_NET_HOST_GETADDRINFO_FAILED:
return TUIKitLocalizableString(TUIKitErrorSDKNetHostGetAddressFailed); // @"IP 地址解析失败";
case ERR_SDK_NET_CONNECT_RESET:
return TUIKitLocalizableString(TUIKitErrorSDKNetConnectReset); // @"网络连接到中间节点或服务端重置";
case ERR_SDK_NET_WAIT_INQUEUE_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSDKNetWaitInQueueTimeout); // @"请求包等待进入待发送队列超时";
case ERR_SDK_NET_WAIT_SEND_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSDKNetWaitSendTimeout); // @"请求包已进入待发送队列,等待进入系统的网络 buffer 超时";
case ERR_SDK_NET_WAIT_ACK_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSDKNetWaitAckTimeut); // @"请求包已进入系统的网络 buffer ,等待服务端回包超时";
/////////////////////////////////////////////////////////////////////////////////
//
// (二)服务端
//
/////////////////////////////////////////////////////////////////////////////////
// SSO
case ERR_SVR_SSO_CONNECT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSDKSVRSSOConnectLimit); // @"SSO 的连接数量超出限制,服务端拒绝服务。";
case ERR_SVR_SSO_VCODE:
return TUIKitLocalizableString(TUIKitErrorSDKSVRSSOVCode); // @"下发验证码标志错误。";
case ERR_SVR_SSO_D2_EXPIRED:
return TUIKitLocalizableString(TUIKitErrorSVRSSOD2Expired); // @"D2 过期";
case ERR_SVR_SSO_A2_UP_INVALID:
return TUIKitLocalizableString(TUIKitErrorSVRA2UpInvalid); // @"A2 校验失败";
case ERR_SVR_SSO_A2_DOWN_INVALID:
return TUIKitLocalizableString(TUIKitErrorSVRA2DownInvalid); // @"处理下行包时发现 A2 验证没通过或者被安全打击。";
case ERR_SVR_SSO_EMPTY_KEY:
return TUIKitLocalizableString(TUIKitErrorSVRSSOEmpeyKey); // @"不允许空 D2Key 加密。";
case ERR_SVR_SSO_UIN_INVALID:
return TUIKitLocalizableString(TUIKitErrorSVRSSOUinInvalid); // @"D2 中的 uin 和 SSO 包头的 uin 不匹配。";
case ERR_SVR_SSO_VCODE_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSVRSSOVCodeTimeout); // @"验证码下发超时。";
case ERR_SVR_SSO_NO_IMEI_AND_A2:
return TUIKitLocalizableString(TUIKitErrorSVRSSONoImeiAndA2); // @"需要带上 IMEI 和 A2 。";
case ERR_SVR_SSO_COOKIE_INVALID:
return TUIKitLocalizableString(TUIKitErrorSVRSSOCookieInvalid); // @"Cookie 非法。";
case ERR_SVR_SSO_DOWN_TIP:
return TUIKitLocalizableString(TUIKitErrorSVRSSODownTips); // @"下发提示语D2 过期。";
case ERR_SVR_SSO_DISCONNECT:
return TUIKitLocalizableString(TUIKitErrorSVRSSODisconnect); // @"断链锁屏。";
case ERR_SVR_SSO_IDENTIFIER_INVALID:
return TUIKitLocalizableString(TUIKitErrorSVRSSOIdentifierInvalid); // @"失效身份。";
case ERR_SVR_SSO_CLIENT_CLOSE:
return TUIKitLocalizableString(TUIKitErrorSVRSSOClientClose); // @"终端自动退出。";
case ERR_SVR_SSO_MSFSDK_QUIT:
return TUIKitLocalizableString(TUIKitErrorSVRSSOMSFSDKQuit); // @"MSFSDK 自动退出。";
case ERR_SVR_SSO_D2KEY_WRONG:
return TUIKitLocalizableString(TUIKitErrorSVRSSOD2KeyWrong); // @"SSO D2key 解密失败次数太多,通知终端需要重置,重新刷新 D2 。";
case ERR_SVR_SSO_UNSURPPORT:
return TUIKitLocalizableString(TUIKitErrorSVRSSOUnsupport); // @"不支持聚合,给终端返回统一的错误码。终端在该 TCP 长连接上停止聚合。";
case ERR_SVR_SSO_PREPAID_ARREARS:
return TUIKitLocalizableString(TUIKitErrorSVRSSOPrepaidArrears); // @"预付费欠费。";
case ERR_SVR_SSO_PACKET_WRONG:
return TUIKitLocalizableString(TUIKitErrorSVRSSOPacketWrong); // @"请求包格式错误。";
case ERR_SVR_SSO_APPID_BLACK_LIST:
return TUIKitLocalizableString(TUIKitErrorSVRSSOAppidBlackList); // @"SDKAppID 黑名单。";
case ERR_SVR_SSO_CMD_BLACK_LIST:
return TUIKitLocalizableString(TUIKitErrorSVRSSOCmdBlackList); // @"SDKAppID 设置 service cmd 黑名单。";
case ERR_SVR_SSO_APPID_WITHOUT_USING:
return TUIKitLocalizableString(TUIKitErrorSVRSSOAppidWithoutUsing); // @"SDKAppID 停用。";
case ERR_SVR_SSO_FREQ_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRSSOFreqLimit); // @"频率限制(用户),频率限制是设置针对某一个协议的每秒请求数的限制。";
case ERR_SVR_SSO_OVERLOAD:
return TUIKitLocalizableString(TUIKitErrorSVRSSOOverload); // @"过载丢包(系统),连接的服务端处理过多请求,处理不过来,拒绝服务。";
// 资源文件错误码
case ERR_SVR_RES_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRResNotFound); // @"要发送的资源文件不存在。";
case ERR_SVR_RES_ACCESS_DENY:
return TUIKitLocalizableString(TUIKitErrorSVRResAccessDeny); // @"要发送的资源文件不允许访问。";
case ERR_SVR_RES_SIZE_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRResSizeLimit); // @"文件大小超过限制。";
case ERR_SVR_RES_SEND_CANCEL:
return TUIKitLocalizableString(TUIKitErrorSVRResSendCancel); // @"用户取消发送,如发送过程中登出等原因。";
case ERR_SVR_RES_READ_FAILED:
return TUIKitLocalizableString(TUIKitErrorSVRResReadFailed); // @"读取文件内容失败。";
case ERR_SVR_RES_TRANSFER_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSVRResTransferTimeout); // @"资源文件传输超时";
case ERR_SVR_RES_INVALID_PARAMETERS:
return TUIKitLocalizableString(TUIKitErrorSVRResInvalidParameters); // @"参数非法。";
case ERR_SVR_RES_INVALID_FILE_MD5:
return TUIKitLocalizableString(TUIKitErrorSVRResInvalidFileMd5); // @"文件 MD5 校验失败。";
case ERR_SVR_RES_INVALID_PART_MD5:
return TUIKitLocalizableString(TUIKitErrorSVRResInvalidPartMd5); // @"分片 MD5 校验失败。";
// 后台公共错误码
case ERR_SVR_COMM_INVALID_HTTP_URL:
return TUIKitLocalizableString(TUIKitErrorSVRCommonInvalidHttpUrl); // @"HTTP 解析错误 ,请检查 HTTP 请求 URL 格式。";
case ERR_SVR_COMM_REQ_JSON_PARSE_FAILED:
return TUIKitLocalizableString(TUIKitErrorSVRCommomReqJsonParseFailed); // @"HTTP 请求 JSON 解析错误,请检查 JSON 格式。";
case ERR_SVR_COMM_INVALID_ACCOUNT:
return TUIKitLocalizableString(TUIKitErrorSVRCommonInvalidAccount); // @"请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。";
case ERR_SVR_COMM_INVALID_ACCOUNT_EX:
return TUIKitLocalizableString(TUIKitErrorSVRCommonInvalidAccount); // @"请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。";
case ERR_SVR_COMM_INVALID_SDKAPPID:
return TUIKitLocalizableString(TUIKitErrorSVRCommonInvalidSdkappid); // @"SDKAppID 失效,请核对 SDKAppID 有效性。";
case ERR_SVR_COMM_REST_FREQ_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRCommonRestFreqLimit); // @"REST 接口调用频率超过限制,请降低请求频率。";
case ERR_SVR_COMM_REQUEST_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSVRCommonRequestTimeout); // @"服务请求超时或 HTTP 请求格式错误,请检查并重试。";
case ERR_SVR_COMM_INVALID_RES:
return TUIKitLocalizableString(TUIKitErrorSVRCommonInvalidRes); // @"请求资源错误,请检查请求 URL。";
case ERR_SVR_COMM_ID_NOT_ADMIN:
return TUIKitLocalizableString(TUIKitErrorSVRCommonIDNotAdmin); // @"REST API 请求的 Identifier 字段请填写 App 管理员帐号。";
case ERR_SVR_COMM_SDKAPPID_FREQ_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRCommonSdkappidFreqLimit); // @"SDKAppID 请求频率超限,请降低请求频率。";
case ERR_SVR_COMM_SDKAPPID_MISS:
return TUIKitLocalizableString(TUIKitErrorSVRCommonSdkappidMiss); // @"REST 接口需要带 SDKAppID请检查请求 URL 中的 SDKAppID。";
case ERR_SVR_COMM_RSP_JSON_PARSE_FAILED:
return TUIKitLocalizableString(TUIKitErrorSVRCommonRspJsonParseFailed); // @"HTTP 响应包 JSON 解析错误。";
case ERR_SVR_COMM_EXCHANGE_ACCOUNT_TIMEUT:
return TUIKitLocalizableString(TUIKitErrorSVRCommonExchangeAccountTimeout); // @"置换帐号超时。";
case ERR_SVR_COMM_INVALID_ID_FORMAT:
return TUIKitLocalizableString(TUIKitErrorSVRCommonInvalidIdFormat); // @"请求包体 Identifier 类型错误,请确认 Identifier 为字符串格式。";
case ERR_SVR_COMM_SDKAPPID_FORBIDDEN:
return TUIKitLocalizableString(TUIKitErrorSVRCommonSDkappidForbidden); // @"SDKAppID 被禁用";
case ERR_SVR_COMM_REQ_FORBIDDEN:
return TUIKitLocalizableString(TUIKitErrorSVRCommonReqForbidden); // @"请求被禁用";
case ERR_SVR_COMM_REQ_FREQ_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRCommonReqFreqLimit); // @"请求过于频繁,请稍后重试。";
case ERR_SVR_COMM_REQ_FREQ_LIMIT_EX:
return TUIKitLocalizableString(TUIKitErrorSVRCommonReqFreqLimit); // @"请求过于频繁,请稍后重试。";
case ERR_SVR_COMM_INVALID_SERVICE:
return TUIKitLocalizableString(TUIKitErrorSVRCommonInvalidService); // @"未购买套餐包或购买的套餐包正在配置中暂未生效,请五分钟后再次尝试。";
case ERR_SVR_COMM_SENSITIVE_TEXT:
return TUIKitLocalizableString(TUIKitErrorSVRCommonSensitiveText); // @"文本安全打击,文本中可能包含敏感词汇。";
case ERR_SVR_COMM_BODY_SIZE_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRCommonBodySizeLimit); // @"发消息包体过长";
// 帐号错误码
case ERR_SVR_ACCOUNT_USERSIG_EXPIRED:
return TUIKitLocalizableString(TUIKitErrorSVRAccountUserSigExpired); // @"UserSig 已过期,请重新生成 UserSig";
case ERR_SVR_ACCOUNT_USERSIG_EMPTY:
return TUIKitLocalizableString(TUIKitErrorSVRAccountUserSigEmpty); // @"UserSig 长度为0";
case ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED:
return TUIKitLocalizableString(TUIKitErrorSVRAccountUserSigCheckFailed); // @"UserSig 校验失败";
case ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED_EX:
return TUIKitLocalizableString(TUIKitErrorSVRAccountUserSigCheckFailed); // @"UserSig 校验失败";
case ERR_SVR_ACCOUNT_USERSIG_MISMATCH_PUBLICKEY:
return TUIKitLocalizableString(TUIKitErrorSVRAccountUserSigMismatchPublicKey); // @"用公钥验证 UserSig 失败";
case ERR_SVR_ACCOUNT_USERSIG_MISMATCH_ID:
return TUIKitLocalizableString(TUIKitErrorSVRAccountUserSigMismatchId); // @"请求的 Identifier 与生成 UserSig 的 Identifier 不匹配。";
case ERR_SVR_ACCOUNT_USERSIG_MISMATCH_SDKAPPID:
return TUIKitLocalizableString(TUIKitErrorSVRAccountUserSigMismatchSdkAppid); // @"请求的 SDKAppID 与生成 UserSig 的 SDKAppID 不匹配。";
case ERR_SVR_ACCOUNT_USERSIG_PUBLICKEY_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRAccountUserSigPublicKeyNotFound); // @"验证 UserSig 时公钥不存在";
case ERR_SVR_ACCOUNT_SDKAPPID_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRAccountUserSigSdkAppidNotFount); // @"SDKAppID 未找到,请在云通信 IM 控制台确认应用信息。";
case ERR_SVR_ACCOUNT_INVALID_USERSIG:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInvalidUserSig); // @"UserSig 已经失效,请重新生成,再次尝试。";
case ERR_SVR_ACCOUNT_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRAccountNotFound); // @"请求的用户帐号不存在。";
case ERR_SVR_ACCOUNT_SEC_RSTR:
return TUIKitLocalizableString(TUIKitErrorSVRAccountSecRstr); // @"安全原因被限制。";
case ERR_SVR_ACCOUNT_INTERNAL_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalTimeout); // @"服务端内部超时,请重试。";
case ERR_SVR_ACCOUNT_INVALID_COUNT:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInvalidCount); // @"请求中批量数量不合法。";
case ERR_SVR_ACCOUNT_INVALID_PARAMETERS:
return TUIKitLocalizableString(TUIkitErrorSVRAccountINvalidParameters); // @"参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。";
case ERR_SVR_ACCOUNT_ADMIN_REQUIRED:
return TUIKitLocalizableString(TUIKitErrorSVRAccountAdminRequired); // @"请求需要 App 管理员权限。";
case ERR_SVR_ACCOUNT_FREQ_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRAccountFreqLimit); // @"因失败且重试次数过多导致被限制,请检查 UserSig 是否正确,一分钟之后再试。";
case ERR_SVR_ACCOUNT_BLACKLIST:
return TUIKitLocalizableString(TUIKitErrorSVRAccountBlackList); // @"帐号被拉入黑名单。";
case ERR_SVR_ACCOUNT_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRAccountCountLimit); // @"创建帐号数量超过免费体验版数量限制,请升级为专业版。";
case ERR_SVR_ACCOUNT_INTERNAL_ERROR:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalError); // @"服务端内部错误,请重试。";
case ERR_SVR_ACCOUNT_USER_STATUS_DISABLED:
return TUIKitLocalizableString(TUIKitErrorEnableUserStatusOnConsole);
// 资料错误码
case ERR_SVR_PROFILE_INVALID_PARAMETERS:
return TUIKitLocalizableString(TUIKitErrorSVRProfileInvalidParameters); // @"请求参数错误,请根据错误描述检查请求是否正确。";
case ERR_SVR_PROFILE_ACCOUNT_MISS:
return TUIKitLocalizableString(TUIKitErrorSVRProfileAccountMiss); // @"请求参数错误,没有指定需要拉取资料的用户帐号。";
case ERR_SVR_PROFILE_ACCOUNT_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRProfileAccountNotFound); // @"请求的用户帐号不存在。";
case ERR_SVR_PROFILE_ADMIN_REQUIRED:
return TUIKitLocalizableString(TUIKitErrorSVRProfileAdminRequired); // @"请求需要 App 管理员权限。";
case ERR_SVR_PROFILE_SENSITIVE_TEXT:
return TUIKitLocalizableString(TUIKitErrorSVRProfileSensitiveText); // @"资料字段中包含敏感词。";
case ERR_SVR_PROFILE_INTERNAL_ERROR:
return TUIKitLocalizableString(TUIKitErrorSVRProfileInternalError); // @"服务端内部错误,请稍后重试。";
case ERR_SVR_PROFILE_READ_PERMISSION_REQUIRED:
return TUIKitLocalizableString(TUIKitErrorSVRProfileReadWritePermissionRequired); // @"没有资料字段的读权限,详情可参见 资料字段。";
case ERR_SVR_PROFILE_WRITE_PERMISSION_REQUIRED:
return TUIKitLocalizableString(TUIKitErrorSVRProfileReadWritePermissionRequired); // @"没有资料字段的写权限,详情可参见 资料字段。";
case ERR_SVR_PROFILE_TAG_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRProfileTagNotFound); // @"资料字段的 Tag 不存在。";
case ERR_SVR_PROFILE_SIZE_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRProfileSizeLimit); // @"资料字段的 Value 长度超过500字节。";
case ERR_SVR_PROFILE_VALUE_ERROR:
return TUIKitLocalizableString(TUIKitErrorSVRProfileValueError); // @"标配资料字段的 Value 错误,详情可参见 标配资料字段。";
case ERR_SVR_PROFILE_INVALID_VALUE_FORMAT:
return TUIKitLocalizableString(TUIKitErrorSVRProfileInvalidValueFormat); // @"资料字段的 Value 类型不匹配,详情可参见 标配资料字段。";
// 关系链错误码
case ERR_SVR_FRIENDSHIP_INVALID_PARAMETERS:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipInvalidParameters); // @"请求参数错误,请根据错误描述检查请求是否正确。";
case ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipInvalidSdkAppid); // @"SDKAppID 不匹配。";
case ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipAccountNotFound); // @"请求的用户帐号不存在。";
case ERR_SVR_FRIENDSHIP_ADMIN_REQUIRED:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipAdminRequired); // @"请求需要 App 管理员权限。";
case ERR_SVR_FRIENDSHIP_SENSITIVE_TEXT:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipSensitiveText); // @"关系链字段中包含敏感词。";
case ERR_SVR_FRIENDSHIP_INTERNAL_ERROR:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalError); // @"服务端内部错误,请重试。";
case ERR_SVR_FRIENDSHIP_NET_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipNetTimeout); // @"网络超时,请稍后重试。";
case ERR_SVR_FRIENDSHIP_WRITE_CONFLICT:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipWriteConflict); // @"并发写导致写冲突,建议使用批量方式。";
case ERR_SVR_FRIENDSHIP_ADD_FRIEND_DENY:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipAddFriendDeny); // @"后台禁止该用户发起加好友请求。";
case ERR_SVR_FRIENDSHIP_COUNT_LIMIT:
return TUIKitLocalizableString(TUIkitErrorSVRFriendshipCountLimit); // @"自己的好友数已达系统上限。";
case ERR_SVR_FRIENDSHIP_GROUP_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipGroupCountLimit); // @"分组已达系统上限。";
case ERR_SVR_FRIENDSHIP_PENDENCY_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipPendencyLimit); // @"未决数已达系统上限。";
case ERR_SVR_FRIENDSHIP_BLACKLIST_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipBlacklistLimit); // @"黑名单数已达系统上限。";
case ERR_SVR_FRIENDSHIP_PEER_FRIEND_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipPeerFriendLimit); // @"对方的好友数已达系统上限。";
case ERR_SVR_FRIENDSHIP_IN_SELF_BLACKLIST:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipInSelfBlacklist); // @"对方在自己的黑名单中,不允许加好友。";
case ERR_SVR_FRIENDSHIP_ALLOW_TYPE_DENY_ANY:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipAllowTypeDenyAny); // @"对方的加好友验证方式是不允许任何人添加自己为好友。";
case ERR_SVR_FRIENDSHIP_IN_PEER_BLACKLIST:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipInPeerBlackList); // @"自己在对方的黑名单中,不允许加好友。";
case ERR_SVR_FRIENDSHIP_ALLOW_TYPE_NEED_CONFIRM:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipAllowTypeNeedConfirm); // @"请求已发送,等待对方同意";
case ERR_SVR_FRIENDSHIP_ADD_FRIEND_SEC_RSTR:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipAddFriendSecRstr); // @"添加好友请求被安全策略打击,请勿频繁发起添加好友请求。";
case ERR_SVR_FRIENDSHIP_PENDENCY_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipPendencyNotFound); // @"请求的未决不存在。";
case ERR_SVR_FRIENDSHIP_DEL_FRIEND_SEC_RSTR:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipDelFriendSecRstr); // @"删除好友请求被安全策略打击,请勿频繁发起删除好友请求。";
case ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND_EX:
return TUIKitLocalizableString(TUIKirErrorSVRFriendAccountNotFoundEx); // @"请求的用户帐号不存在。";
// 最近联系人错误码
case ERR_SVR_CONV_ACCOUNT_NOT_FOUND:
return TUIKitLocalizableString(TUIKirErrorSVRFriendAccountNotFoundEx); // @"请求的用户帐号不存在。";
case ERR_SVR_CONV_INVALID_PARAMETERS:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipInvalidParameters); // @"请求参数错误,请根据错误描述检查请求是否正确。";
case ERR_SVR_CONV_ADMIN_REQUIRED:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipAdminRequired); // @"请求需要 App 管理员权限。";
case ERR_SVR_CONV_INTERNAL_ERROR:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalError); // @"服务端内部错误,请重试。";
case ERR_SVR_CONV_NET_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSVRFriendshipNetTimeout); // @"网络超时,请稍后重试。";
// 消息错误码
case ERR_SVR_MSG_PKG_PARSE_FAILED:
return TUIKitLocalizableString(TUIKitErrorSVRMsgPkgParseFailed); // @"解析请求包失败。";
case ERR_SVR_MSG_INTERNAL_AUTH_FAILED:
return TUIKitLocalizableString(TUIKitErrorSVRMsgInternalAuthFailed); // @"内部鉴权失败。";
case ERR_SVR_MSG_INVALID_ID:
return TUIKitLocalizableString(TUIKitErrorSVRMsgInvalidId); // @"Identifier 无效";
case ERR_SVR_MSG_NET_ERROR:
return TUIKitLocalizableString(TUIKitErrorSVRMsgNetError); // @"网络异常,请重试。";
case ERR_SVR_MSG_INTERNAL_ERROR1:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalError); // @"服务端内部错误,请重试。";
case ERR_SVR_MSG_PUSH_DENY:
return TUIKitLocalizableString(TUIKitErrorSVRMsgPushDeny); // @"触发发送单聊消息之前回调App 后台返回禁止下发该消息。";
case ERR_SVR_MSG_IN_PEER_BLACKLIST:
return TUIKitLocalizableString(TUIKitErrorSVRMsgInPeerBlackList); // @"发送单聊消息,被对方拉黑,禁止发送。";
case ERR_SVR_MSG_BOTH_NOT_FRIEND:
return TUIKitLocalizableString(TUIKitErrorSVRMsgBothNotFriend); // @"消息发送双方互相不是好友,禁止发送。";
case ERR_SVR_MSG_NOT_PEER_FRIEND:
return TUIKitLocalizableString(TUIKitErrorSVRMsgNotPeerFriend); // @"发送单聊消息,自己不是对方的好友(单向关系),禁止发送。";
case ERR_SVR_MSG_NOT_SELF_FRIEND:
return TUIKitLocalizableString(TUIkitErrorSVRMsgNotSelfFriend); // @"发送单聊消息,对方不是自己的好友(单向关系),禁止发送。";
case ERR_SVR_MSG_SHUTUP_DENY:
return TUIKitLocalizableString(TUIKitErrorSVRMsgShutupDeny); // @"因禁言,禁止发送消息。";
case ERR_SVR_MSG_REVOKE_TIME_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRMsgRevokeTimeLimit); // @"消息撤回超过了时间限制默认2分钟。";
case ERR_SVR_MSG_DEL_RAMBLE_INTERNAL_ERROR:
return TUIKitLocalizableString(TUIKitErrorSVRMsgDelRambleInternalError); // @"删除漫游内部错误。";
case ERR_SVR_MSG_JSON_PARSE_FAILED:
return TUIKitLocalizableString(TUIKitErrorSVRMsgJsonParseFailed); // @"JSON 格式解析失败,请检查请求包是否符合 JSON 规范。";
case ERR_SVR_MSG_INVALID_JSON_BODY_FORMAT:
return TUIKitLocalizableString(TUIKitErrorSVRMsgInvalidJsonBodyFormat); // @"JSON 格式请求包中 MsgBody 不符合消息格式描述";
case ERR_SVR_MSG_INVALID_TO_ACCOUNT:
return TUIKitLocalizableString(TUIKitErrorSVRMsgInvalidToAccount); // @"JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 Integer 类型";
case ERR_SVR_MSG_INVALID_RAND:
return TUIKitLocalizableString(TUIKitErrorSVRMsgInvalidRand); // @"JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型";
case ERR_SVR_MSG_INVALID_TIMESTAMP:
return TUIKitLocalizableString(TUIKitErrorSVRMsgInvalidTimestamp); // @"JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型";
case ERR_SVR_MSG_BODY_NOT_ARRAY:
return TUIKitLocalizableString(TUIKitErrorSVRMsgBodyNotArray); // @"JSON 格式请求包体中 MsgBody 类型不是 Array 类型";
case ERR_SVR_MSG_ADMIN_REQUIRED:
return TUIKitLocalizableString(TUIKitErrorSVRAccountAdminRequired); // @"请求需要 App 管理员权限。";
case ERR_SVR_MSG_INVALID_JSON_FORMAT:
return TUIKitLocalizableString(TUIKitErrorSVRMsgInvalidJsonFormat); // @"JSON 格式请求包不符合消息格式描述";
case ERR_SVR_MSG_TO_ACCOUNT_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRMsgToAccountCountLimit); // @"批量发消息目标帐号超过500";
case ERR_SVR_MSG_TO_ACCOUNT_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRMsgToAccountNotFound); // @"To_Account 没有注册或不存在";
case ERR_SVR_MSG_TIME_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRMsgTimeLimit); // @"消息离线存储时间错误最多不能超过7天。";
case ERR_SVR_MSG_INVALID_SYNCOTHERMACHINE:
return TUIKitLocalizableString(TUIKitErrorSVRMsgInvalidSyncOtherMachine); // @"JSON 格式请求包体中 SyncOtherMachine 字段不是 Integer 类型";
case ERR_SVR_MSG_INVALID_MSGLIFETIME:
return TUIKitLocalizableString(TUIkitErrorSVRMsgInvalidMsgLifeTime); // @"JSON 格式请求包体中 MsgLifeTime 字段不是 Integer 类型";
case ERR_SVR_MSG_ACCOUNT_NOT_FOUND:
return TUIKitLocalizableString(TUIKirErrorSVRFriendAccountNotFoundEx); // @"请求的用户帐号不存在。";
case ERR_SVR_MSG_INTERNAL_ERROR2:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalError); // @"服务内部错误,请重试";
case ERR_SVR_MSG_INTERNAL_ERROR3:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalError); // @"服务内部错误,请重试";
case ERR_SVR_MSG_INTERNAL_ERROR4:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalError); // @"服务内部错误,请重试";
case ERR_SVR_MSG_INTERNAL_ERROR5:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalError); // @"服务内部错误,请重试";
case ERR_SVR_MSG_BODY_SIZE_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRMsgBodySizeLimit); // @"JSON 数据包超长消息包体请不要超过8k。";
case ERR_SVR_MSG_LONGPOLLING_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRmsgLongPollingCountLimit); // @"Web 端长轮询被踢Web 端同时在线实例个数超出限制)。";
// 群组错误码
case ERR_SVR_GROUP_INTERNAL_ERROR:
return TUIKitLocalizableString(TUIKitErrorSVRAccountInternalError); // @"服务端内部错误,请重试。";
case ERR_SVR_GROUP_API_NAME_ERROR:
return TUIKitLocalizableString(TUIKitErrorSVRGroupApiNameError); // @"请求中的接口名称错误";
case ERR_SVR_GROUP_INVALID_PARAMETERS:
return TUIKitLocalizableString(TUIKitErrorSVRResInvalidParameters); // @"参数非法";
case ERR_SVR_GROUP_ACOUNT_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRGroupAccountCountLimit); // @"请求包体中携带的帐号数量过多。";
case ERR_SVR_GROUP_FREQ_LIMIT:
return TUIKitLocalizableString(TUIkitErrorSVRGroupFreqLimit); // @"操作频率限制,请尝试降低调用的频率。";
case ERR_SVR_GROUP_PERMISSION_DENY:
return TUIKitLocalizableString(TUIKitErrorSVRGroupPermissionDeny); // @"操作权限不足";
case ERR_SVR_GROUP_INVALID_REQ:
return TUIKitLocalizableString(TUIKitErrorSVRGroupInvalidReq); // @"请求非法";
case ERR_SVR_GROUP_SUPER_NOT_ALLOW_QUIT:
return TUIKitLocalizableString(TUIKitErrorSVRGroupSuperNotAllowQuit); // @"该群不允许群主主动退出。";
case ERR_SVR_GROUP_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRGroupNotFound); // @"群组不存在";
case ERR_SVR_GROUP_JSON_PARSE_FAILED:
return TUIKitLocalizableString(TUIKitErrorSVRGroupJsonParseFailed); // @"解析 JSON 包体失败,请检查包体的格式是否符合 JSON 格式。";
case ERR_SVR_GROUP_INVALID_ID:
return TUIKitLocalizableString(TUIKitErrorSVRGroupInvalidId); // @"发起操作的 Identifier 非法,请检查发起操作的用户 Identifier 是否填写正确。";
case ERR_SVR_GROUP_ALLREADY_MEMBER:
return TUIKitLocalizableString(TUIKitErrorSVRGroupAllreadyMember); // @"被邀请加入的用户已经是群成员。";
case ERR_SVR_GROUP_FULL_MEMBER_COUNT:
return TUIKitLocalizableString(TUIKitErrorSVRGroupFullMemberCount); // @"群已满员,无法将请求中的用户加入群组";
case ERR_SVR_GROUP_INVALID_GROUPID:
return TUIKitLocalizableString(TUIKitErrorSVRGroupInvalidGroupId); // @"群组 ID 非法,请检查群组 ID 是否填写正确。";
case ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY:
return TUIKitLocalizableString(TUIKitErrorSVRGroupRejectFromThirdParty); // @"App 后台通过第三方回调拒绝本次操作。";
case ERR_SVR_GROUP_SHUTUP_DENY:
return TUIKitLocalizableString(TUIKitErrorSVRGroupShutDeny); // @"因被禁言而不能发送消息,请检查发送者是否被设置禁言。";
case ERR_SVR_GROUP_RSP_SIZE_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRGroupRspSizeLimit); // @"应答包长度超过最大包长";
case ERR_SVR_GROUP_ACCOUNT_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRGroupAccountNotFound); // @"请求的用户帐号不存在。";
case ERR_SVR_GROUP_GROUPID_IN_USED:
return TUIKitLocalizableString(TUIKitErrorSVRGroupGroupIdInUse); // @"群组 ID 已被使用,请选择其他的群组 ID。";
case ERR_SVR_GROUP_SEND_MSG_FREQ_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRGroupSendMsgFreqLimit); // @"发消息的频率超限,请延长两次发消息时间的间隔。";
case ERR_SVR_GROUP_REQ_ALLREADY_BEEN_PROCESSED:
return TUIKitLocalizableString(TUIKitErrorSVRGroupReqAllreadyBeenProcessed); // @"此邀请或者申请请求已经被处理。";
case ERR_SVR_GROUP_GROUPID_IN_USED_FOR_SUPER:
return TUIKitLocalizableString(TUIKitErrorSVRGroupGroupIdUserdForSuper); // @"群组 ID 已被使用,并且操作者为群主,可以直接使用。";
case ERR_SVR_GROUP_SDKAPPID_DENY:
return TUIKitLocalizableString(TUIKitErrorSVRGroupSDkAppidDeny); // @"该 SDKAppID 请求的命令字已被禁用";
case ERR_SVR_GROUP_REVOKE_MSG_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorSVRGroupRevokeMsgNotFound); // @"请求撤回的消息不存在。";
case ERR_SVR_GROUP_REVOKE_MSG_TIME_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRGroupRevokeMsgTimeLimit); // @"消息撤回超过了时间限制默认2分钟。";
case ERR_SVR_GROUP_REVOKE_MSG_DENY:
return TUIKitLocalizableString(TUIKitErrorSVRGroupRevokeMsgDeny); // @"请求撤回的消息不支持撤回操作。";
case ERR_SVR_GROUP_NOT_ALLOW_REVOKE_MSG:
return TUIKitLocalizableString(TUIKitErrorSVRGroupNotAllowRevokeMsg); // @"群组类型不支持消息撤回操作。";
case ERR_SVR_GROUP_REMOVE_MSG_DENY:
return TUIKitLocalizableString(TUIKitErrorSVRGroupRemoveMsgDeny); // @"该消息类型不支持删除操作。";
case ERR_SVR_GROUP_NOT_ALLOW_REMOVE_MSG:
return TUIKitLocalizableString(TUIKitErrorSVRGroupNotAllowRemoveMsg); // @"音视频聊天室和在线成员广播大群不支持删除消息。";
case ERR_SVR_GROUP_AVCHATROOM_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRGroupAvchatRoomCountLimit); // @"音视频聊天室创建数量超过了限制";
case ERR_SVR_GROUP_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRGroupCountLimit); // @"单个用户可创建和加入的群组数量超过了限制”。";
case ERR_SVR_GROUP_MEMBER_COUNT_LIMIT:
return TUIKitLocalizableString(TUIKitErrorSVRGroupMemberCountLimit); // @"群成员数量超过限制";
/////////////////////////////////////////////////////////////////////////////////
//
// V3版本错误码待废弃
//
/////////////////////////////////////////////////////////////////////////////////
case ERR_NO_SUCC_RESULT:
return TUIKitLocalizableString(TUIKitErrorSVRNoSuccessResult); // @"批量操作无成功结果";
case ERR_TO_USER_INVALID:
return TUIKitLocalizableString(TUIKitErrorSVRToUserInvalid); // @"IM: 无效接收方";
case ERR_INIT_CORE_FAIL:
return TUIKitLocalizableString(TUIKitErrorSVRInitCoreFail); // @"INIT CORE模块失败";
case ERR_EXPIRED_SESSION_NODE:
return TUIKitLocalizableString(TUIKitErrorExpiredSessionNode); // @"SessionNode为null";
case ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED:
return TUIKitLocalizableString(TUIKitErrorLoggedOutBeforeLoginFinished); // @"在登录完成前进行了登出(在登录时返回)";
case ERR_TLSSDK_NOT_INITIALIZED:
return TUIKitLocalizableString(TUIKitErrorTLSSDKNotInitialized); // @"tlssdk未初始化";
case ERR_TLSSDK_USER_NOT_FOUND:
return TUIKitLocalizableString(TUIKitErrorTLSSDKUserNotFound); // @"TLSSDK没有找到相应的用户信息";
// case ERR_BIND_FAIL_UNKNOWN:
// return @"QALSDK未知原因BIND失败";
// case ERR_BIND_FAIL_NO_SSOTICKET:
// return @"缺少SSO票据";
// case ERR_BIND_FAIL_REPEATD_BIND:
// return @"重复BIND";
// case ERR_BIND_FAIL_TINYID_NULL:
// return @"tiny为空";
// case ERR_BIND_FAIL_GUID_NULL:
// return @"guid为空";
// case ERR_BIND_FAIL_UNPACK_REGPACK_FAILED:
// return @"解注册包失败";
// case ERR_BIND_FAIL_REG_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorBindFaildRegTimeout); // @"注册超时";
case ERR_BIND_FAIL_ISBINDING:
return TUIKitLocalizableString(TUIKitErrorBindFaildIsBinding); // @"正在bind操作中";
case ERR_PACKET_FAIL_UNKNOWN:
return TUIKitLocalizableString(TUIKitErrorPacketFailUnknown); // @"发包未知错误";
case ERR_PACKET_FAIL_REQ_NO_NET:
return TUIKitLocalizableString(TUIKitErrorPacketFailReqNoNet); // @"发送请求包时没有网络,处理时转换成case ERR_REQ_NO_NET_ON_REQ:";
case ERR_PACKET_FAIL_RESP_NO_NET:
return TUIKitLocalizableString(TUIKitErrorPacketFailRespNoNet); // @"发送回复包时没有网络,处理时转换成case ERR_REQ_NO_NET_ON_RSP:";
case ERR_PACKET_FAIL_REQ_NO_AUTH:
return TUIKitLocalizableString(TUIKitErrorPacketFailReqNoAuth); // @"发送请求包时没有权限";
case ERR_PACKET_FAIL_SSO_ERR:
return TUIKitLocalizableString(TUIKitErrorPacketFailSSOErr); // @"SSO错误";
case ERR_PACKET_FAIL_REQ_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorSVRRequestTimeout); // @"请求超时";
case ERR_PACKET_FAIL_RESP_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorPacketFailRespTimeout); // @"回复超时";
// case ERR_PACKET_FAIL_REQ_ON_RESEND:
// case ERR_PACKET_FAIL_RESP_NO_RESEND:
// case ERR_PACKET_FAIL_FLOW_SAVE_FILTERED:
// case ERR_PACKET_FAIL_REQ_OVER_LOAD:
// case ERR_PACKET_FAIL_LOGIC_ERR:
// case ERR_FRIENDSHIP_PROXY_NOT_SYNCED:
return TUIKitLocalizableString(TUIKitErrorFriendshipProxySyncing); // @"proxy_manager没有完成svr数据同步";
case ERR_FRIENDSHIP_PROXY_SYNCING:
return TUIKitLocalizableString(TUIKitErrorFriendshipProxySyncing); // @"proxy_manager正在进行svr数据同步";
case ERR_FRIENDSHIP_PROXY_SYNCED_FAIL:
return TUIKitLocalizableString(TUIKitErrorFriendshipProxySyncedFail); // @"proxy_manager同步失败";
case ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR:
return TUIKitLocalizableString(TUIKitErrorFriendshipProxyLocalCheckErr); // @"proxy_manager请求参数在本地检查不合法";
case ERR_GROUP_INVALID_FIELD:
return TUIKitLocalizableString(TUIKitErrorGroupInvalidField); // @"group assistant请求字段中包含非预设字段";
case ERR_GROUP_STORAGE_DISABLED:
return TUIKitLocalizableString(TUIKitErrorGroupStoreageDisabled); // @"group assistant群资料本地存储没有开启";
case ERR_LOADGRPINFO_FAILED:
return TUIKitLocalizableString(TUIKitErrorLoadGrpInfoFailed); // @"failed to load groupinfo from storage";
case ERR_REQ_NO_NET_ON_REQ:
return TUIKitLocalizableString(TUIKitErrorReqNoNetOnReq); // @"请求的时候没有网络";
case ERR_REQ_NO_NET_ON_RSP:
return TUIKitLocalizableString(TUIKitErrorReqNoNetOnResp); // @"响应的时候没有网络";
case ERR_SERIVCE_NOT_READY:
return TUIKitLocalizableString(TUIKitErrorServiceNotReady); // @"QALSDK服务未就绪";
case ERR_LOGIN_AUTH_FAILED:
return TUIKitLocalizableString(TUIKitErrorLoginAuthFailed); // @"账号认证失败tinyid转换失败";
case ERR_NEVER_CONNECT_AFTER_LAUNCH:
return TUIKitLocalizableString(TUIKitErrorNeverConnectAfterLaunch); // @"在应用启动后没有尝试联网";
case ERR_REQ_FAILED:
return TUIKitLocalizableString(TUIKitErrorReqFailed); // @"QAL执行失败";
case ERR_REQ_INVALID_REQ:
return TUIKitLocalizableString(TUIKitErrorReqInvaidReq); // @"请求非法toMsgService非法";
case ERR_REQ_OVERLOADED:
return TUIKitLocalizableString(TUIKitErrorReqOnverLoaded); // @"请求队列満";
case ERR_REQ_KICK_OFF:
return TUIKitLocalizableString(TUIKitErrorReqKickOff); // @"已经被其他终端踢了";
case ERR_REQ_SERVICE_SUSPEND:
return TUIKitLocalizableString(TUIKitErrorReqServiceSuspend); // @"服务被暂停";
case ERR_REQ_INVALID_SIGN:
return TUIKitLocalizableString(TUIKitErrorReqInvalidSign); // @"SSO签名错误";
case ERR_REQ_INVALID_COOKIE:
return TUIKitLocalizableString(TUIKitErrorReqInvalidCookie); // @"SSO cookie无效";
case ERR_LOGIN_TLS_RSP_PARSE_FAILED:
return TUIKitLocalizableString(TUIKitErrorLoginTlsRspParseFailed); // @"登录时TLS回包校验包体长度错误";
case ERR_LOGIN_OPENMSG_TIMEOUT:
return TUIKitLocalizableString(TUIKitErrorLoginOpenMsgTimeout); // @"登录时OPENSTATSVC向OPENMSG上报状态超时";
case ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED:
return TUIKitLocalizableString(TUIKitErrorLoginOpenMsgRspParseFailed); // @"登录时OPENSTATSVC向OPENMSG上报状态时解析回包失败";
case ERR_LOGIN_TLS_DECRYPT_FAILED:
return TUIKitLocalizableString(TUIKitErrorLoginTslDecryptFailed); // @"登录时TLS解密失败";
case ERR_WIFI_NEED_AUTH:
return TUIKitLocalizableString(TUIKitErrorWifiNeedAuth); // @"wifi需要认证";
case ERR_USER_CANCELED:
return TUIKitLocalizableString(TUIKitErrorUserCanceled); // @"用户已取消";
case ERR_REVOKE_TIME_LIMIT_EXCEED:
return TUIKitLocalizableString(TUIkitErrorRevokeTimeLimitExceed); // @"消息撤回超过了时间限制默认2分钟";
case ERR_LACK_UGC_EXT:
return TUIKitLocalizableString(TUIKitErrorLackUGExt); // @"缺少UGC扩展包";
case ERR_AUTOLOGIN_NEED_USERSIG:
return TUIKitLocalizableString(TUIKitErrorAutoLoginNeedUserSig); // @"自动登录本地票据过期需要userSig手动登录";
case ERR_QAL_NO_SHORT_CONN_AVAILABLE:
return TUIKitLocalizableString(TUIKitErrorQALNoShortConneAvailable); // @"没有可用的短连接sso";
case ERR_REQ_CONTENT_ATTACK:
return TUIKitLocalizableString(TUIKitErrorReqContentAttach); // @"消息内容安全打击";
case ERR_LOGIN_SIG_EXPIRE:
return TUIKitLocalizableString(TUIKitErrorLoginSigExpire); // @"登录返回,票据过期";
case ERR_SDK_HAD_INITIALIZED:
return TUIKitLocalizableString(TUIKitErrorSDKHadInit); // @"SDK 已经初始化无需重复初始化";
case ERR_OPENBDH_BASE:
return TUIKitLocalizableString(TUIKitErrorOpenBDHBase); // @"openbdh 错误码基";
case ERR_REQUEST_NO_NET_ONREQ:
return TUIKitLocalizableString(TUIKitErrorRequestNoNetOnReq); // @"请求时没有网络,请等网络恢复后重试";
case ERR_REQUEST_NO_NET_ONRSP:
return TUIKitLocalizableString(TUIKitErrorRequestNoNetOnRsp); // @"响应时没有网络,请等网络恢复后重试";
// case ERR_REQUEST_FAILED:
// return @"QAL执行失败";
// case ERR_REQUEST_INVALID_REQ:
// return @"请求非法toMsgService非法";
case ERR_REQUEST_OVERLOADED:
return TUIKitLocalizableString(TUIKitErrorRequestOnverLoaded); // @"请求队列満";
case ERR_REQUEST_KICK_OFF:
return TUIKitLocalizableString(TUIKitErrorReqKickOff); // @"已经被其他终端踢了";
case ERR_REQUEST_SERVICE_SUSPEND:
return TUIKitLocalizableString(TUIKitErrorReqServiceSuspend); // @"服务被暂停";
case ERR_REQUEST_INVALID_SIGN:
return TUIKitLocalizableString(TUIKitErrorReqInvalidSign); // @"SSO签名错误";
case ERR_REQUEST_INVALID_COOKIE:
return TUIKitLocalizableString(TUIKitErrorReqInvalidCookie); // @"SSO cookie无效";
default:
break;
}
return msg;
}
+(void)dispatchMainAsync:(dispatch_block_t) block {
if ([NSThread isMainThread]) {
block();
} else {
dispatch_async(dispatch_get_main_queue(), block);
}
}
+ (NSString *)genImageName:(NSString *)uuid
{
NSString *identifier = [[V2TIMManager sharedInstance] getLoginUser];
if(uuid == nil){
int value = arc4random() % 1000;
uuid = [NSString stringWithFormat:@"%ld_%d", (long)[[NSDate date] timeIntervalSince1970], value];
}
NSString *name = [NSString stringWithFormat:@"%d_%@_image_%@", [TUILogin getSdkAppID], identifier, uuid];
return name;
}
+ (NSString *)genSnapshotName:(NSString *)uuid
{
NSString *identifier = [[V2TIMManager sharedInstance] getLoginUser];
if(uuid == nil){
uuid = [NSString stringWithFormat:@"%ld", (long)[[NSDate date] timeIntervalSince1970]];
}
NSString *name = [NSString stringWithFormat:@"%d_%@_snapshot_%@", [TUILogin getSdkAppID], identifier, uuid];
return name;
}
+ (NSString *)genVideoName:(NSString *)uuid
{
NSString *identifier = [[V2TIMManager sharedInstance] getLoginUser];
if(uuid == nil){
uuid = [NSString stringWithFormat:@"%ld", (long)[[NSDate date] timeIntervalSince1970]];
}
NSString *name = [NSString stringWithFormat:@"%d_%@_video_%@", [TUILogin getSdkAppID], identifier, uuid];
return name;
}
+ (NSString *)genVoiceName:(NSString *)uuid withExtension:(NSString *)extent
{
NSString *identifier = [[V2TIMManager sharedInstance] getLoginUser];
if(uuid == nil){
uuid = [NSString stringWithFormat:@"%ld", (long)[[NSDate date] timeIntervalSince1970]];
}
NSString *name = [NSString stringWithFormat:@"%d_%@_voice_%@.%@", [TUILogin getSdkAppID], identifier, uuid, extent];
return name;
}
+ (NSString *)genFileName:(NSString *)uuid
{
NSString *identifier = [[V2TIMManager sharedInstance] getLoginUser];
if(uuid == nil){
uuid = [NSString stringWithFormat:@"%ld", (long)[[NSDate date] timeIntervalSince1970]];
}
NSString *name = [NSString stringWithFormat:@"%d_%@_file_%@", [TUILogin getSdkAppID], identifier, uuid];
return name;
}
+ (NSString *)deviceModel {
static NSString *deviceModel;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
deviceModel = [[UIDevice currentDevice] model];
});
return deviceModel;
}
+ (NSString *)deviceVersion {
static NSString *deviceVersion;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
deviceVersion = [[UIDevice currentDevice] systemVersion];
});
return deviceVersion;
}
+ (NSString *)deviceName {
static NSString *deviceName;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
deviceName = [[UIDevice currentDevice] name];
});
return deviceName;
}
+ (void)openLinkWithURL:(NSURL *)url {
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL:url
options:@{}
completionHandler:^(BOOL success) {
if (success) {
NSLog(@"Opened url");
}
}];
} else {
[[UIApplication sharedApplication] openURL:url];
}
}
+ (void)addUnsupportNotificationInVC:(UIViewController *)vc {
#if DEBUG
@weakify(vc);
[[NSNotificationCenter defaultCenter] addObserverForName:TUIKitNotification_onReceivedUnsupportInterfaceError object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
@strongify(vc);
NSDictionary *userInfo = note.userInfo;
NSString *service = [userInfo objectForKey:@"service"];
[TUITool showUnsupportAlertOfService:service onVC:vc];
}];
#endif
}
+ (void)postUnsupportNotificationOfService:(NSString *)service {
#if DEBUG
if (!service) {
NSLog(@"postNotificationOfService, service is nil");
return;
}
[[NSNotificationCenter defaultCenter] postNotificationName:TUIKitNotification_onReceivedUnsupportInterfaceError
object:nil
userInfo:@{@"service": service}];
#endif
}
+ (void)showUnsupportAlertOfService:(NSString *)service onVC:(UIViewController *)vc {
#if DEBUG
BOOL isShown = [[NSUserDefaults standardUserDefaults] boolForKey:@"show_unsupport_alert"];
if (isShown) {
return;
}
NSString *desc = [NSString stringWithFormat:@"%@%@", service, TUIKitLocalizableString(TUIKitErrorUnsupportIntefaceDesc)];
NSArray *buttons = @[TUIKitLocalizableString(TUIKitErrorUnsupportIntefaceIGotIt), TUIKitLocalizableString(TUIKitErrorUnsupportIntefaceNoMoreAlert)];
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:TUIKitLocalizableString(TUIKitErrorUnsupportIntefaceTitle)
message:desc
preferredStyle:UIAlertControllerStyleAlert];
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:desc];
[attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, desc.length)];
[attrStr addAttribute:NSLinkAttributeName value:@"https://" range:[desc rangeOfString:TUIKitLocalizableString(TUIKitErrorUnsupportIntefaceGuidelines)]];
[alertController setValue:attrStr forKey:@"attributedMessage"];
UILabel *msgLabel = [TUITool messageLabelInAlertController:alertController];
msgLabel.userInteractionEnabled = YES;
msgLabel.textAlignment = NSTextAlignmentLeft;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:TUITool.class action:@selector(onTapLabel:)];
[msgLabel addGestureRecognizer:tap];
UIAlertAction *left = [UIAlertAction actionWithTitle:buttons[0] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
}];
UIAlertAction *right = [UIAlertAction actionWithTitle:buttons[1] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"show_unsupport_alert"];
}];
[alertController addAction:left];
[alertController addAction:right];
[vc presentViewController:alertController animated:NO completion:nil];
#endif
}
+ (void)onTapLabel:(UIGestureRecognizer *)ges {
NSString *chinesePurchase = @"https://cloud.tencent.com/document/product/269/11673#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85";
NSString *englishPurchase = @"https://intl.cloud.tencent.com/document/product/1047/36021?lang=en&pg=#changing-configuration";
NSString *language = [TUIGlobalization tk_localizableLanguageKey];
NSURL *url = [NSURL URLWithString:chinesePurchase];
if (![language containsString:@"zh-"]) {
url = [NSURL URLWithString:englishPurchase];
}
[TUITool openLinkWithURL:url];
}
+ (UILabel *)messageLabelInAlertController:(UIAlertController *)alert {
UIView *target = [TUITool targetSubviewInAlertController:alert];
NSArray *subviews = [target subviews];
if (subviews.count == 0) {
return nil;
}
for (UIView *view in subviews) {
if ([view isKindOfClass:UILabel.class]) {
UILabel *label = (UILabel *)view;
if (label.text.length > 10) {
return label;
}
}
}
return nil;
}
+ (UIView *)targetSubviewInAlertController:(UIAlertController *)alert {
UIView *view = alert.view;
for (int i = 0; i < 5; i++) {
view = view.subviews.firstObject;
}
return view;
}
@end