2
0

WFCCMessageContent.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. //
  2. // WFCCMessageContent.h
  3. // WFChatClient
  4. //
  5. // Created by heavyrain on 2017/8/15.
  6. // Copyright © 2017年 WildFireChat. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. /**
  10. 媒体类型
  11. - Media_Type_GENERAL: 一般
  12. - Media_Type_IMAGE: 图片
  13. - Media_Type_VOICE: 语音
  14. - Media_Type_VIDEO: 视频
  15. - Media_Type_File: 文件
  16. - Media_Type_PORTRAIT: 头像
  17. - Media_Type_FAVORITE: 收藏
  18. */
  19. typedef NS_ENUM(NSInteger, WFCCMediaType) {
  20. Media_Type_GENERAL = 0,
  21. Media_Type_IMAGE = 1,
  22. Media_Type_VOICE = 2,
  23. Media_Type_VIDEO = 3,
  24. Media_Type_File = 4,
  25. Media_Type_PORTRAIT = 5,
  26. Media_Type_FAVORITE = 6
  27. };
  28. /**
  29. 消息存储类型
  30. - NOT_PERSIST: 本地不存储
  31. - PERSIST: 本地存储
  32. - PERSIST_AND_COUNT: 本地存储,并计入未读计数
  33. - TRANSPARENT: 透传消息,不多端同步,如果对端不在线,消息会丢弃
  34. */
  35. typedef NS_ENUM(NSInteger, WFCCPersistFlag) {
  36. WFCCPersistFlag_NOT_PERSIST = 0,
  37. WFCCPersistFlag_PERSIST = 1,
  38. WFCCPersistFlag_PERSIST_AND_COUNT = 3,
  39. WFCCPersistFlag_TRANSPARENT = 4,
  40. };
  41. /**
  42. 普通消息的持久化内容
  43. */
  44. @interface WFCCMessagePayload : NSObject
  45. /**
  46. 消息类型
  47. */
  48. @property (nonatomic, assign)int contentType;
  49. /**
  50. 搜索内容
  51. */
  52. @property (nonatomic, strong)NSString *searchableContent;
  53. /**
  54. 推送内容
  55. */
  56. @property (nonatomic, strong)NSString *pushContent;
  57. /**
  58. 内容
  59. */
  60. @property (nonatomic, strong)NSString *content;
  61. /**
  62. 内容流
  63. */
  64. @property (nonatomic, strong)NSData *binaryContent;
  65. /**
  66. 只存储在客户端本地的内容
  67. */
  68. @property (nonatomic, strong)NSString *localContent;
  69. /**
  70. 提醒类型,1,提醒部分对象(mentinedTarget)。2,提醒全部。其他不提醒
  71. */
  72. @property (nonatomic, assign)int mentionedType;
  73. /**
  74. 提醒对象,mentionedType 1时有效
  75. */
  76. @property (nonatomic, strong)NSArray<NSString *> *mentionedTargets;
  77. @end
  78. /**
  79. 媒体消息的持久化内容
  80. */
  81. @interface WFCCMediaMessagePayload : WFCCMessagePayload
  82. /**
  83. 媒体类型
  84. */
  85. @property (nonatomic, assign)WFCCMediaType mediaType;
  86. /**
  87. 媒体内容的服务器URL
  88. */
  89. @property (nonatomic, strong)NSString *remoteMediaUrl;
  90. /**
  91. 媒体内容的本地URL,发送消息时不会携带,用于缓存加速显示
  92. */
  93. @property (nonatomic, strong)NSString *localMediaPath;
  94. @end
  95. /**
  96. 消息协议,所有消息(包括自定义消息均需要实现此协议)
  97. */
  98. @protocol WFCCMessageContent <NSObject>
  99. /**
  100. 消息编码
  101. @return 消息的持久化内容
  102. */
  103. - (WFCCMessagePayload *)encode;
  104. /**
  105. 消息解码
  106. @param payload 消息的持久化内容
  107. */
  108. - (void)decode:(WFCCMessagePayload *)payload;
  109. /**
  110. 消息类型,必须全局唯一。1000及以下为系统内置类型,自定义消息需要使用1000以上。
  111. @return 消息类型的唯一值
  112. */
  113. + (int)getContentType;
  114. /**
  115. 消息的存储策略
  116. @return 存储策略
  117. */
  118. + (int)getContentFlags;
  119. /**
  120. 消息的简短信息
  121. @return 消息的简短信息,主要用于通知提示和会话列表等需要简略信息的地方。
  122. */
  123. - (NSString *)digest;
  124. @end
  125. /**
  126. 消息内容,自定义消息可以继承此类
  127. */
  128. @interface WFCCMessageContent : NSObject <WFCCMessageContent>
  129. @end