2
0

WFCCMessageContent.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  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. - Media_Type_STICKER:动态表情
  19. - Media_Type_MOMENTS:朋友圈
  20. */
  21. typedef NS_ENUM(NSInteger, WFCCMediaType) {
  22. Media_Type_GENERAL = 0,
  23. Media_Type_IMAGE = 1,
  24. Media_Type_VOICE = 2,
  25. Media_Type_VIDEO = 3,
  26. Media_Type_FILE = 4,
  27. Media_Type_PORTRAIT = 5,
  28. Media_Type_FAVORITE = 6,
  29. Media_Type_STICKER = 7,
  30. Media_Type_MOMENTS = 8
  31. };
  32. /**
  33. 消息存储类型
  34. - NOT_PERSIST: 本地不存储
  35. - PERSIST: 本地存储
  36. - PERSIST_AND_COUNT: 本地存储,并计入未读计数
  37. - TRANSPARENT: 透传消息,不多端同步,如果对端不在线,消息会丢弃
  38. */
  39. typedef NS_ENUM(NSInteger, WFCCPersistFlag) {
  40. WFCCPersistFlag_NOT_PERSIST = 0,
  41. WFCCPersistFlag_PERSIST = 1,
  42. WFCCPersistFlag_PERSIST_AND_COUNT = 3,
  43. WFCCPersistFlag_TRANSPARENT = 4,
  44. };
  45. /**
  46. 普通消息的持久化内容
  47. */
  48. @interface WFCCMessagePayload : NSObject
  49. /**
  50. 消息类型
  51. */
  52. @property (nonatomic, assign)int contentType;
  53. /**
  54. 搜索内容
  55. */
  56. @property (nonatomic, strong)NSString *searchableContent;
  57. /**
  58. 推送内容
  59. */
  60. @property (nonatomic, strong)NSString *pushContent;
  61. /**
  62. 推送数据
  63. */
  64. @property (nonatomic, strong)NSString *pushData;
  65. /**
  66. 内容
  67. */
  68. @property (nonatomic, strong)NSString *content;
  69. /**
  70. 内容流
  71. */
  72. @property (nonatomic, strong)NSData *binaryContent;
  73. /**
  74. 只存储在客户端本地的内容
  75. */
  76. @property (nonatomic, strong)NSString *localContent;
  77. /**
  78. 提醒类型,1,提醒部分对象(mentinedTarget)。2,提醒全部。其他不提醒
  79. */
  80. @property (nonatomic, assign)int mentionedType;
  81. /**
  82. 提醒对象,mentionedType 1时有效
  83. */
  84. @property (nonatomic, strong)NSArray<NSString *> *mentionedTargets;
  85. /**
  86. 附加信息
  87. */
  88. @property (nonatomic, strong)NSString *extra;
  89. @end
  90. /**
  91. 媒体消息的持久化内容
  92. */
  93. @interface WFCCMediaMessagePayload : WFCCMessagePayload
  94. /**
  95. 媒体类型
  96. */
  97. @property (nonatomic, assign)WFCCMediaType mediaType;
  98. /**
  99. 媒体内容的服务器URL
  100. */
  101. @property (nonatomic, strong)NSString *remoteMediaUrl;
  102. /**
  103. 媒体内容的本地URL,发送消息时不会携带,用于缓存加速显示
  104. */
  105. @property (nonatomic, strong)NSString *localMediaPath;
  106. @end
  107. @class WFCCMessage;
  108. /**
  109. 消息协议,所有消息(包括自定义消息均需要实现此协议)
  110. */
  111. @protocol WFCCMessageContent <NSObject>
  112. /**
  113. 消息编码
  114. @return 消息的持久化内容
  115. */
  116. - (WFCCMessagePayload *)encode;
  117. /**
  118. 消息解码
  119. @param payload 消息的持久化内容
  120. */
  121. - (void)decode:(WFCCMessagePayload *)payload;
  122. /**
  123. 消息类型,必须全局唯一。1000及以下为系统内置类型,自定义消息需要使用1000以上。
  124. @return 消息类型的唯一值
  125. */
  126. + (int)getContentType;
  127. /**
  128. 消息的存储策略
  129. @return 存储策略
  130. */
  131. + (int)getContentFlags;
  132. /**
  133. 消息的简短信息
  134. @return 消息的简短信息,主要用于通知提示和会话列表等需要简略信息的地方。
  135. */
  136. - (NSString *)digest:(WFCCMessage *)message;
  137. @end
  138. /**
  139. 消息内容,自定义消息可以继承此类
  140. */
  141. @interface WFCCMessageContent : NSObject <WFCCMessageContent>
  142. /**
  143. 附加信息
  144. */
  145. @property (nonatomic, strong)NSString *extra;
  146. @end