TIMElem+ShowDescription.m 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795
  1. //
  2. // TIMElem+ShowDescription.m
  3. // TIMChat
  4. //
  5. // Created by AlexiChen on 16/5/9.
  6. // Copyright © 2016年 AlexiChen. All rights reserved.
  7. //
  8. #import "TIMElem+ShowDescription.h"
  9. @implementation TIMElem (ShowDescription)
  10. // 显示描述
  11. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  12. {
  13. return [self description];
  14. }
  15. // 是否是系统表情
  16. - (BOOL)isSystemFace
  17. {
  18. return NO;
  19. }
  20. @end
  21. @implementation TIMTextElem (ShowDescription)
  22. // 显示描述
  23. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  24. {
  25. return [self text];
  26. }
  27. @end
  28. @implementation TIMImageElem (ShowDescription)
  29. - (UIImage *)getThumbImageInMsg:(IMAMsg *)msg
  30. {
  31. NSString *thumpPath = [msg stringForKey:kIMAMSG_Image_ThumbPath];
  32. if ([PathUtility isExistFile:thumpPath])
  33. {
  34. UIImage *img = [[UIImage alloc] initWithContentsOfFile:thumpPath];
  35. return img;
  36. }
  37. if (self.imageList.count > 0)
  38. {
  39. for (TIMImage *timImage in self.imageList)
  40. {
  41. if (timImage.type == TIM_IMAGE_TYPE_THUMB)
  42. {
  43. // 解析大小
  44. NSInteger width = timImage.width;
  45. NSInteger height = timImage.height;
  46. CGFloat scale = 1;
  47. scale = MIN(kChatPicThumbMaxHeight/height, kChatPicThumbMaxWidth/width);
  48. NSInteger tw = (NSInteger) (width * scale + 1);
  49. NSInteger th = (NSInteger) (height * scale + 1);
  50. [msg addInteger:tw forKey:kIMAMSG_Image_ThumbWidth];
  51. [msg addInteger:th forKey:kIMAMSG_Image_ThumbHeight];
  52. NSFileManager *fileManager = [NSFileManager defaultManager];
  53. NSString *nsTmpDir = NSTemporaryDirectory();
  54. NSString *imageThumbPath = [NSString stringWithFormat:@"%@/image_%@_ThumbImage", nsTmpDir, timImage.uuid];
  55. BOOL isDirectory = NO;
  56. if ([fileManager fileExistsAtPath:imageThumbPath isDirectory:&isDirectory] && isDirectory == NO)
  57. {
  58. // 本地存在
  59. UIImage *image = [[UIImage alloc] initWithContentsOfFile:imageThumbPath];
  60. [msg addString:imageThumbPath forKey:kIMAMSG_Image_ThumbPath];
  61. return image;
  62. }
  63. break;
  64. }
  65. }
  66. }
  67. return nil;
  68. }
  69. - (void)asyncThumbImage:(AsyncGetThumbImageBlock)block inMsg:(IMAMsg *)msg
  70. {
  71. if (!block)
  72. {
  73. return;
  74. }
  75. // 本地存在
  76. NSString *thumpPath = [msg stringForKey:kIMAMSG_Image_ThumbPath];
  77. if ([PathUtility isExistFile:thumpPath])
  78. {
  79. UIImage *img = [[UIImage alloc] initWithContentsOfFile:thumpPath];
  80. block(thumpPath, img, YES, NO);
  81. return;
  82. }
  83. if (self.imageList.count > 0)
  84. {
  85. for (TIMImage *timImage in self.imageList)
  86. {
  87. if (timImage.type == TIM_IMAGE_TYPE_THUMB)
  88. {
  89. // 解析大小
  90. NSInteger width = timImage.width;
  91. NSInteger height = timImage.height;
  92. NSString *url = timImage.url;
  93. CGFloat scale = 1;
  94. scale = MIN(kChatPicThumbMaxHeight/height, kChatPicThumbMaxWidth/width);
  95. NSInteger tw = (NSInteger) (width * scale + 1);
  96. NSInteger th = (NSInteger) (height * scale + 1);
  97. [msg addInteger:tw forKey:kIMAMSG_Image_ThumbWidth];
  98. [msg addInteger:th forKey:kIMAMSG_Image_ThumbHeight];
  99. NSFileManager *fileManager = [NSFileManager defaultManager];
  100. NSString *nsTmpDir = NSTemporaryDirectory();
  101. NSString *imageThumbPath = [NSString stringWithFormat:@"%@/image_%@_ThumbImage", nsTmpDir, timImage.uuid];
  102. BOOL isDirectory = NO;
  103. if ([fileManager fileExistsAtPath:imageThumbPath isDirectory:&isDirectory] && isDirectory == NO)
  104. {
  105. // 本地存在
  106. UIImage *image = [[UIImage alloc] initWithContentsOfFile:imageThumbPath];
  107. [msg addString:imageThumbPath forKey:kIMAMSG_Image_ThumbPath];
  108. block(url, image, YES, NO);
  109. }
  110. else
  111. {
  112. // 本地不存在,下载原图
  113. [timImage getImage:imageThumbPath succ:^{
  114. UIImage *image = [[UIImage alloc] initWithContentsOfFile:imageThumbPath];
  115. block(url, image, YES, YES);
  116. } fail:^(int code, NSString *err) {
  117. block(url, nil, NO, YES);
  118. }];
  119. }
  120. break;
  121. }
  122. }
  123. }
  124. NSString *filePath = self.path;
  125. if (![NSString isEmpty:filePath])
  126. {
  127. // NSString *filePath = [NSString stringWithFormat:@"%@uploadFile%3.f_Size_%d_%d", nsTmpDIr, [NSDate timeIntervalSinceReferenceDate], (int)picThumbWidth, (int)picThumbHeight];
  128. // 检查本地是否存储了
  129. BOOL exist = [PathUtility isExistFile:filePath];
  130. if (exist)
  131. {
  132. // 原图地址
  133. UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath];
  134. CGFloat scale = 1;
  135. scale = MIN(kChatPicThumbMaxHeight/image.size.height, kChatPicThumbMaxWidth/image.size.width);
  136. CGFloat picHeight = image.size.height;
  137. CGFloat picWidth = image.size.width;
  138. NSInteger width = (NSInteger) (picWidth * scale + 1);
  139. NSInteger height = (NSInteger) (picHeight * scale + 1);
  140. image = [image thumbnailWithSize:CGSizeMake(width, height)];
  141. block(filePath, image, YES, NO);
  142. [msg addInteger:width forKey:kIMAMSG_Image_ThumbWidth];
  143. [msg addInteger:height forKey:kIMAMSG_Image_ThumbHeight];
  144. NSString *nsTmpDIr = NSTemporaryDirectory();
  145. NSString *imageThumbPath = [NSString stringWithFormat:@"%@uploadFile%3.f", nsTmpDIr, [NSDate timeIntervalSinceReferenceDate]];
  146. [[NSFileManager defaultManager] createFileAtPath:imageThumbPath contents:UIImageJPEGRepresentation(image, 1) attributes:nil];
  147. }
  148. }
  149. else
  150. {
  151. DebugLog(@"逻辑不可达");
  152. }
  153. }
  154. // 显示描述
  155. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  156. {
  157. return ASLocalizedString(@"[图片]");
  158. }
  159. @end
  160. @implementation TIMFileElem (ShowDescription)
  161. // 显示描述
  162. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  163. {
  164. return ASLocalizedString(@"[文件]");
  165. }
  166. @end
  167. @implementation TIMSoundElem (ShowDescription)
  168. // 显示描述
  169. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  170. {
  171. return ASLocalizedString(@"[语音]");
  172. }
  173. @end
  174. @implementation TIMFaceElem (ShowDescription)
  175. // 是否是系统表情(QQ自带的表情)
  176. - (BOOL)isSystemFace
  177. {
  178. // 目前没有做自定义表情,所以全问都是系统表情
  179. // 用户可根据自身业务逻辑修改此处
  180. return YES;
  181. }
  182. // 显示描述
  183. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  184. {
  185. // 后面转成对应的描述信息
  186. return ASLocalizedString(@"[表情]");
  187. }
  188. @end
  189. @implementation TIMLocationElem (ShowDescription)
  190. // 显示描述
  191. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  192. {
  193. // 后面转成对应的描述信息
  194. return ASLocalizedString(@"[位置]");
  195. }
  196. @end
  197. @implementation TIMGroupTipsElem (ShowDescription)
  198. static NSString *const kGroupTipKey = @"kGroupTipKey";
  199. static NSString *const kGroupTypeKey = @"kGroupTypeKey";
  200. - (void)setGroupTip:(NSString *)groupTip
  201. {
  202. objc_setAssociatedObject(self, (__bridge const void *)kGroupTipKey, groupTip, OBJC_ASSOCIATION_COPY);
  203. }
  204. - (NSString *)groupTip
  205. {
  206. return objc_getAssociatedObject(self, (__bridge const void *)kGroupTipKey);
  207. }
  208. - (void)setGroupType:(NSString *)groupType
  209. {
  210. objc_setAssociatedObject(self, (__bridge const void *)kGroupTypeKey, groupType, OBJC_ASSOCIATION_COPY);
  211. }
  212. - (NSString *)groupType
  213. {
  214. return objc_getAssociatedObject(self, (__bridge const void *)kGroupTypeKey);
  215. }
  216. - (NSString *)tipText
  217. {
  218. if ([NSString isEmpty:self.groupType])
  219. {
  220. IMAGroup *group = (IMAGroup *)[[IMAPlatform sharedInstance].contactMgr getUserByGroupId:self.group];
  221. if ([group isPublicGroup])
  222. {
  223. self.groupType = ASLocalizedString(@"群");
  224. }
  225. else if ([group isChatGroup])
  226. {
  227. self.groupType = ASLocalizedString(@"讨论组");
  228. }
  229. else if ([group isChatRoom])
  230. {
  231. self.groupType = ASLocalizedString(@"聊天室");
  232. }
  233. }
  234. if (![NSString isEmpty:self.groupTip])
  235. {
  236. return self.groupTip;
  237. }
  238. NSString *opStr = nil;
  239. NSString *endStr = nil;
  240. switch (self.type)
  241. {
  242. case TIM_GROUP_TIPS_TYPE_QUIT_GRP:
  243. {
  244. self.groupTip = [NSString stringWithFormat:ASLocalizedString(@"%@退出了%@"), self.opUser, self.groupType];
  245. return self.groupTip;
  246. }
  247. break;
  248. case TIM_GROUP_TIPS_TYPE_MEMBER_INFO_CHANGE:
  249. {
  250. NSMutableString *tip = [NSMutableString string];
  251. NSArray *array = [self memberChangeList];
  252. for (TIMGroupTipsElemMemberInfo *info in array)
  253. {
  254. if (![NSString isEmpty:tip])
  255. {
  256. [tip appendString:@"\n"];
  257. }
  258. NSLog(@"info.shutupTime = %d",info.shutupTime);
  259. if (info.shutupTime==0)
  260. {
  261. [tip appendString:[NSString stringWithFormat:ASLocalizedString(@"%@的禁言限制已取消"), info.identifier]];
  262. }
  263. else
  264. {
  265. [tip appendString:[NSString stringWithFormat:ASLocalizedString(@"%@被禁言%d秒"), info.identifier, info.shutupTime]];
  266. }
  267. }
  268. self.groupTip = tip;
  269. return self.groupTip;
  270. }
  271. break;
  272. case TIM_GROUP_TIPS_TYPE_INFO_CHANGE:
  273. {
  274. NSMutableString *tip = [NSMutableString string];
  275. NSArray *array = [self groupChangeList];
  276. for (TIMGroupTipsElemGroupInfo *info in array)
  277. {
  278. if (![NSString isEmpty:tip])
  279. {
  280. [tip appendString:@"\n"];
  281. }
  282. switch (info.type)
  283. {
  284. case TIM_GROUP_INFO_CHANGE_GROUP_NAME:
  285. {
  286. [tip appendString:[NSString stringWithFormat:ASLocalizedString(@"%@修改%@名称为%@"), self.opUser, self.groupType, info.value]];
  287. }
  288. break;
  289. case TIM_GROUP_INFO_CHANGE_GROUP_INTRODUCTION:
  290. {
  291. [tip appendString:[NSString stringWithFormat:ASLocalizedString(@"%@修改了%@介绍"), self.opUser, self.groupType]];
  292. }
  293. break;
  294. case TIM_GROUP_INFO_CHANGE_GROUP_NOTIFICATION:
  295. {
  296. [tip appendString:[NSString stringWithFormat:ASLocalizedString(@"%@修改了%@公告"), self.opUser, self.groupType]];
  297. }
  298. break;
  299. case TIM_GROUP_INFO_CHANGE_GROUP_FACE:
  300. {
  301. [tip appendString:[NSString stringWithFormat:ASLocalizedString(@"%@修改%@头像"), self.opUser, self.groupType]];
  302. }
  303. break;
  304. case TIM_GROUP_INFO_CHANGE_GROUP_OWNER:
  305. {
  306. // TODO:暂不支持该接口
  307. [tip appendString:[NSString stringWithFormat:ASLocalizedString(@"%@已转让%@"), self.opUser, self.groupType]];
  308. }
  309. break;
  310. default:
  311. break;
  312. }
  313. }
  314. self.groupTip = tip;
  315. return self.groupTip;
  316. }
  317. break;
  318. case TIM_GROUP_TIPS_TYPE_INVITE:
  319. {
  320. opStr = ASLocalizedString(@"邀请");
  321. endStr = [NSString stringWithFormat:ASLocalizedString(@"进%@"), self.groupType];
  322. }
  323. break;
  324. case TIM_GROUP_TIPS_TYPE_KICKED:
  325. {
  326. opStr = ASLocalizedString(@"踢");
  327. endStr = [NSString stringWithFormat:ASLocalizedString(@"出%@"), self.groupType];
  328. }
  329. break;
  330. case TIM_GROUP_TIPS_TYPE_SET_ADMIN:
  331. {
  332. opStr = ASLocalizedString(@"设置");
  333. endStr = ASLocalizedString(@"为管理员");
  334. }
  335. break;
  336. case TIM_GROUP_TIPS_TYPE_CANCEL_ADMIN:
  337. {
  338. opStr = ASLocalizedString(@"取消");
  339. endStr = ASLocalizedString(@"管理员身份");
  340. }
  341. break;
  342. default:
  343. break;
  344. }
  345. NSMutableString *userListString = [NSMutableString string];
  346. for (NSString *uid in self.userList)
  347. {
  348. [userListString appendString:uid];
  349. [userListString appendString:@","];
  350. }
  351. if (userListString.length > 1)
  352. {
  353. [userListString deleteCharactersInRange:NSMakeRange(userListString.length - 1, 1)];
  354. }
  355. self.groupTip = [NSString stringWithFormat:@"%@%@%@%@", self.opUser, opStr, userListString, endStr];
  356. return self.groupTip;
  357. }
  358. // 显示描述
  359. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  360. {
  361. // 后面转成对应的描述信息
  362. return ASLocalizedString(@"[群提醒]");
  363. }
  364. @end
  365. @implementation TIMUGCElem (ShowDescription)
  366. // 显示描述
  367. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  368. {
  369. // 后面转成对应的描述信息
  370. return ASLocalizedString(@"[视频]");
  371. }
  372. @end
  373. @implementation TIMCustomElem (ShowDescription)
  374. - (void)setFollowTime:(NSDate *)date
  375. {
  376. NSData *data = [NSKeyedArchiver archivedDataWithRootObject:date];
  377. self.data = data;
  378. }
  379. - (NSDate *)getFollowTime
  380. {
  381. NSDate *date = [NSKeyedUnarchiver unarchiveObjectWithData:self.data];
  382. return date;
  383. }
  384. // 显示描述
  385. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  386. {
  387. // 后面转成对应的描述信息
  388. return ASLocalizedString(@"[自定义消息]");
  389. }
  390. - (NSString *)timeTip
  391. {
  392. NSDate *date = [self getFollowTime];
  393. return [date timeTextOfDate];
  394. }
  395. - (NSString *)revokedTip
  396. {
  397. return ASLocalizedString(@"撤回了一条消息");
  398. }
  399. @end
  400. @implementation TIMGroupSystemElem (ShowDescription)
  401. // 显示描述
  402. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  403. {
  404. // 后面转成对应的描述信息
  405. NSMutableString *retStr = [NSMutableString string];
  406. switch (self.type)
  407. {
  408. /**
  409. * 申请加群请求(只有管理员会收到)
  410. */
  411. case TIM_GROUP_SYSTEM_ADD_GROUP_REQUEST_TYPE:// = 0x01,
  412. {
  413. [retStr appendFormat:ASLocalizedString(@"%@申请加入群%@请求"), self.user, self.group];
  414. }
  415. break;
  416. /**
  417. * 申请加群被同意(只有申请人能够收到)
  418. */
  419. case TIM_GROUP_SYSTEM_ADD_GROUP_ACCEPT_TYPE:// = 0x02,
  420. {
  421. [retStr appendFormat:ASLocalizedString(@"%@同意你加入群%@请求"), self.user, self.group];
  422. }
  423. break;
  424. /**
  425. * 申请加群被拒绝(只有申请人能够收到)
  426. */
  427. case TIM_GROUP_SYSTEM_ADD_GROUP_REFUSE_TYPE:// = 0x03,
  428. {
  429. [retStr appendFormat:ASLocalizedString(@"%@拒绝你加入群%@请求"), self.user, self.group];
  430. if (self.msg.length)
  431. {
  432. [retStr appendFormat:ASLocalizedString(@" 理由:%@"), self.msg];
  433. }
  434. }
  435. break;
  436. /**
  437. * 被管理员踢出群(只有被踢的人能够收到)
  438. */
  439. case TIM_GROUP_SYSTEM_KICK_OFF_FROM_GROUP_TYPE:// = 0x04,
  440. {
  441. [retStr appendFormat:ASLocalizedString(@"您被%@踢出群%@"), self.user, self.group];
  442. }
  443. break;
  444. /**
  445. * 群被解散(全员能够收到)
  446. */
  447. case TIM_GROUP_SYSTEM_DELETE_GROUP_TYPE:// = 0x05,
  448. {
  449. [retStr appendFormat:ASLocalizedString(@"%@解散群%@"), self.user, self.group];
  450. }
  451. break;
  452. /**
  453. * 创建群消息(创建者能够收到)
  454. */
  455. case TIM_GROUP_SYSTEM_CREATE_GROUP_TYPE:// = 0x06,
  456. {
  457. [retStr appendFormat:ASLocalizedString(@"%@创建群%@成功"), self.user, self.group];
  458. }
  459. break;
  460. /**
  461. * 邀请入群通知(被邀请者能够收到)
  462. */
  463. case TIM_GROUP_SYSTEM_INVITED_TO_GROUP_TYPE:// = 0x07,
  464. {
  465. [retStr appendFormat:ASLocalizedString(@"%@邀请你加入群%@"), self.user, self.group];
  466. }
  467. break;
  468. /**
  469. * 主动退群(主动退群者能够收到)
  470. */
  471. case TIM_GROUP_SYSTEM_QUIT_GROUP_TYPE:// = 0x08
  472. {
  473. [retStr appendFormat:ASLocalizedString(@"%@退群%@成功"), self.user, self.group];
  474. }
  475. break;
  476. /**
  477. * 设置管理员(被设置者接收)
  478. */
  479. case TIM_GROUP_SYSTEM_GRANT_ADMIN_TYPE:// = 0x09,
  480. {
  481. [retStr appendFormat:ASLocalizedString(@"%@设置你为群%@管理员"), self.user, self.group];
  482. }
  483. break;
  484. /**
  485. * 取消管理员(被取消者接收)
  486. */
  487. case TIM_GROUP_SYSTEM_CANCEL_ADMIN_TYPE:// = 0x0a,
  488. {
  489. [retStr appendFormat:ASLocalizedString(@"%@取消你群%@管理员资格"), self.user, self.group];
  490. }
  491. break;
  492. /**
  493. * 群已被回收(全员接收)
  494. */
  495. case TIM_GROUP_SYSTEM_REVOKE_GROUP_TYPE:// = 0x0b,
  496. {
  497. [retStr appendFormat:ASLocalizedString(@"群%@已被回收"), self.group];
  498. }
  499. break;
  500. /**
  501. * 邀请入群请求(被邀请者接收)
  502. */
  503. case TIM_GROUP_SYSTEM_INVITE_TO_GROUP_REQUEST_TYPE:// = 0x0c,
  504. {
  505. [retStr appendFormat:ASLocalizedString(@"%@邀请你加入群%@"), self.user, self.group];
  506. }
  507. break;
  508. /**
  509. * 邀请加群被同意(只有发出邀请者会接收到)
  510. */
  511. case TIM_GROUP_SYSTEM_INVITE_TO_GROUP_ACCEPT_TYPE:// = 0x0d,
  512. {
  513. [retStr appendFormat:ASLocalizedString(@"%@同意你发出的加入群%@的邀请"), self.user, self.group];
  514. }
  515. break;
  516. /**
  517. * 邀请加群被拒绝(只有发出邀请者会接收到)
  518. */
  519. case TIM_GROUP_SYSTEM_INVITE_TO_GROUP_REFUSE_TYPE:// = 0x0e,
  520. {
  521. [retStr appendFormat:ASLocalizedString(@"%@拒绝你发出的加入群%@的邀请"), self.user, self.group];
  522. }
  523. break;
  524. default:
  525. break;
  526. }
  527. return retStr;
  528. }
  529. @end
  530. @implementation TIMSNSSystemElem (ShowDescription)
  531. // 显示描述
  532. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  533. {
  534. NSMutableString *retStr = [NSMutableString string];
  535. switch (self.type)
  536. {
  537. /**
  538. * 增加好友消息
  539. */
  540. case TIM_SNS_SYSTEM_ADD_FRIEND:// = 0x01,
  541. {
  542. for (TIMSNSChangeInfo *info in self.users)
  543. {
  544. [retStr appendFormat:ASLocalizedString(@"%@添加你为好友\n"), info.nickname.length > 0 ? info.nickname : info.identifier];
  545. }
  546. }
  547. break;
  548. /**
  549. * 删除好友消息
  550. */
  551. case TIM_SNS_SYSTEM_DEL_FRIEND:// = 0x02,
  552. {
  553. for (TIMSNSChangeInfo *info in self.users)
  554. {
  555. [retStr appendFormat:ASLocalizedString(@"%@与你解除好友关系\n"), info.nickname.length > 0 ? info.nickname : info.identifier];
  556. }
  557. }
  558. break;
  559. /**
  560. * 增加好友申请
  561. */
  562. case TIM_SNS_SYSTEM_ADD_FRIEND_REQ: // = 0x03,
  563. {
  564. for (TIMSNSChangeInfo *info in self.users)
  565. {
  566. [retStr appendFormat:ASLocalizedString(@"%@请求加为好友\n"), info.nickname.length > 0 ? info.nickname : info.identifier];
  567. }
  568. }
  569. break;
  570. /**
  571. * 删除未决申请
  572. */
  573. case TIM_SNS_SYSTEM_DEL_FRIEND_REQ:// = 0x04,
  574. {
  575. for (TIMSNSChangeInfo *info in self.users)
  576. {
  577. [retStr appendFormat:ASLocalizedString(@"%@删除你的好友请求\n"), info.nickname.length > 0 ? info.nickname : info.identifier];
  578. }
  579. }
  580. break;
  581. /**
  582. * 黑名单添加
  583. */
  584. case TIM_SNS_SYSTEM_ADD_BLACKLIST:// = 0x05,
  585. {
  586. for (TIMSNSChangeInfo *info in self.users)
  587. {
  588. [retStr appendFormat:ASLocalizedString(@"%@将你添加到黑名单\n"), info.nickname.length > 0 ? info.nickname : info.identifier];
  589. }
  590. }
  591. break;
  592. /**
  593. * 黑名单删除
  594. */
  595. case TIM_SNS_SYSTEM_DEL_BLACKLIST:// = 0x06,
  596. {
  597. for (TIMSNSChangeInfo *info in self.users)
  598. {
  599. [retStr appendFormat:ASLocalizedString(@"%@将你移出黑名单\n"), info.nickname.length > 0 ? info.nickname : info.identifier];
  600. }
  601. }
  602. break;
  603. /**
  604. * 未决已读上报
  605. */
  606. case TIM_SNS_SYSTEM_PENDENCY_REPORT:// = 0x07,
  607. {
  608. [retStr appendString:ASLocalizedString(@"未决已读上报")];
  609. // for (TIMSNSChangeInfo *info in self.users)
  610. // {
  611. // [retStr appendFormat:ASLocalizedString(@"%@将你移出黑名单\n"), info.nickname.length > 0 ? info.nickname : info.identifier];
  612. // }
  613. }
  614. break;
  615. /**
  616. * 关系链资料变更
  617. */
  618. case TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE:// = 0x08,
  619. {
  620. for (TIMSNSChangeInfo *info in self.users)
  621. {
  622. [retStr appendFormat:ASLocalizedString(@"%@修改了资料\n"), info.nickname.length > 0 ? info.nickname : info.identifier];
  623. }
  624. }
  625. break;
  626. /**
  627. * 推荐数据增加
  628. */
  629. case TIM_SNS_SYSTEM_ADD_RECOMMEND:// = 0x09,
  630. {
  631. [retStr appendString:ASLocalizedString(@"推荐数据增加")];
  632. }
  633. break;
  634. /**
  635. * 推荐数据删除
  636. */
  637. case TIM_SNS_SYSTEM_DEL_RECOMMEND:// = 0x0a,
  638. {
  639. [retStr appendString:ASLocalizedString(@"推荐数据删除")];
  640. }
  641. break;
  642. /**
  643. * 已决增加
  644. */
  645. case TIM_SNS_SYSTEM_ADD_DECIDE:// = 0x0b,
  646. {
  647. [retStr appendString:ASLocalizedString(@"已决增加")];
  648. }
  649. break;
  650. /**
  651. * 已决删除
  652. */
  653. case TIM_SNS_SYSTEM_DEL_DECIDE:// = 0x0c,
  654. {
  655. [retStr appendString:ASLocalizedString(@"已决删除")];
  656. }
  657. break;
  658. /**
  659. * 推荐已读上报
  660. */
  661. case TIM_SNS_SYSTEM_RECOMMEND_REPORT:// = 0x0d,
  662. {
  663. [retStr appendString:ASLocalizedString(@"推荐已读上报")];
  664. }
  665. break;
  666. /**
  667. * 已决已读上报
  668. */
  669. case TIM_SNS_SYSTEM_DECIDE_REPORT:// = 0x0e,
  670. {
  671. [retStr appendString:ASLocalizedString(@"已决已读上报")];
  672. }
  673. break;
  674. default:
  675. break;
  676. }
  677. return retStr;
  678. }
  679. @end
  680. @implementation TIMProfileSystemElem (ShowDescription)
  681. // 显示描述
  682. - (NSString *)showDescriptionOf:(IMAMsg *)msg
  683. {
  684. // 后面转成对应的描述信息
  685. return ASLocalizedString(@"[资料变更消息]");
  686. }
  687. @end