TencentMessageObject.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  1. //
  2. // TencentMessageObject.h
  3. // TencentOpenApi_IOS
  4. //
  5. // Created by qqconnect on 13-5-27.
  6. // Copyright (c) 2013年 Tencent. All rights reserved.
  7. //
  8. #ifndef QQ_OPEN_SDK_LITE
  9. #import <Foundation/Foundation.h>
  10. #import <UIKit/UIKit.h>
  11. #import "sdkdef.h"
  12. #define kTextLimit (1024 * 1024)
  13. #define kDataLimit (1024 * 1024 * 10)
  14. #define kPreviewDataLimit (1024 * 1024)
  15. @class TencentApiReq;
  16. @class TencentApiResp;
  17. /**
  18. * 必填的NSArray型参数
  19. */
  20. typedef NSArray *TCRequiredArray;
  21. /**
  22. * 必填的NSDictionary型参数
  23. */
  24. typedef NSDictionary *TCRequiredDictionary;
  25. /**
  26. * 必填的TencentApiReq型参数
  27. */
  28. typedef TencentApiReq *TCRequiredReq;
  29. /**
  30. * 可选的UIImage类型参数
  31. */
  32. typedef NSData *TCOptionalData;
  33. /**
  34. * 可选的NSArray型参数
  35. */
  36. typedef NSArray *TCOptionalArray;
  37. /**
  38. * 可选的TencentApiReq型参数
  39. */
  40. typedef TencentApiReq *TCOptionalReq;
  41. /**
  42. * TencentReqMessageType 请求类型枚举参数
  43. */
  44. typedef enum
  45. {
  46. /** TX APP请求内容填充(需要第三方开发者填充完成内容后需要主动调用sendRespMessageToTencentApp)*/
  47. ReqFromTencentAppQueryContent,
  48. /** TX APP请求展现内容 (不用调用答复) */
  49. ReqFromTencentAppShowContent,
  50. /** 第三方 APP 请求内容 */
  51. ReqFromThirdAppQueryContent,
  52. /** 第三方 APP 请求展现内容(类似分享)*/
  53. ReqFromThirdAppShowContent,
  54. }
  55. TencentReqMessageType;
  56. typedef enum
  57. {
  58. RespFromTencentAppQueryContent,
  59. RespFromTencentAppShowContent,
  60. RespFromThirdAppQueryContent,
  61. RespFromThirdAppShowContent,
  62. }
  63. TencentRespMessageType;
  64. /**
  65. * TencentObjVersion 腾讯API消息类型枚举
  66. */
  67. typedef enum
  68. {
  69. /** 文本类型 */
  70. TencentTextObj,
  71. /** 图片类型 */
  72. TencentImageObj,
  73. /** 音频类型 */
  74. TencentAudioObj,
  75. /** 视频类型 */
  76. TencentVideoObj,
  77. /** 图片视频类 */
  78. TencentImageAndVideoObj,
  79. }
  80. TencentObjVersion;
  81. /**
  82. * \brief 请求包
  83. *
  84. * TencentApiReq用来向其他业务发送请求包
  85. */
  86. @interface TencentApiReq : NSObject<NSCoding>
  87. /**
  88. * 根据序列号生成一个请求包
  89. * \param apiSeq 请求序列号
  90. * \param type 请求类型
  91. * \return tencentApiReq实例
  92. */
  93. + (TencentApiReq *)reqFromSeq:(NSInteger)apiSeq type:(TencentReqMessageType)type;
  94. /** 请求类型 */
  95. @property (readonly, assign, nonatomic)TCRequiredInt nMessageType;
  96. /** 请求平台 */
  97. @property (readonly, assign, nonatomic)NSInteger nPlatform;
  98. /** 请求的SDK版本号 */
  99. @property (readonly, assign, nonatomic)NSInteger nSdkVersion;
  100. /** 请求序列号 */
  101. @property (readonly, assign, nonatomic)TCRequiredInt nSeq;
  102. /** 第三方的APPID */
  103. @property (nonatomic, retain)TCRequiredStr sAppID;
  104. /** 请求内容 TencentBaseMessageObj对象数组 */
  105. @property (nonatomic, retain)TCOptionalArray arrMessage;
  106. /** 请求的描述 可以用于告诉对方这个请求的特定场景 */
  107. @property (nonatomic, retain)TCOptionalStr sDescription;
  108. @end
  109. /**
  110. * \brief 答复包
  111. *
  112. * TencentApiResp用来向其他业务发送答复包
  113. */
  114. @interface TencentApiResp : NSObject<NSCoding>
  115. /**
  116. * 根据序列号生成一个答复包
  117. * \param req 答复对应的请求包(如果req不是TencentApiReq或者他的子类,会抛出异常)
  118. * \return 答复包体
  119. */
  120. + (TencentApiResp *)respFromReq:(TencentApiReq *)req;
  121. /** 返回码 */
  122. @property (nonatomic, assign)TCOptionalInt nRetCode;
  123. /** 返回消息 */
  124. @property (nonatomic, retain)TCOptionalStr sRetMsg;
  125. /** 答复对应的请求包 */
  126. @property (nonatomic, retain)TCOptionalReq objReq;
  127. @end
  128. /**
  129. * \brief 消息体
  130. *
  131. * TencentBaseMessageObj 应用之间传递消息体
  132. */
  133. @interface TencentBaseMessageObj : NSObject<NSCoding>
  134. /** 消息类型 */
  135. @property (nonatomic, assign)NSInteger nVersion;
  136. /** 消息描述 */
  137. @property (nonatomic, retain)NSString *sName;
  138. /** 消息的扩展信息 主要是可以用来进行一些请求消息体的描述 譬如图片要求的width height 文字的关键字什么的, 也可以不用填写*/
  139. @property (nonatomic, retain)NSDictionary *dictExpandInfo;
  140. /**
  141. * 消息是否有效
  142. */
  143. - (BOOL)isVaild;
  144. @end
  145. #pragma mark TencentTextMessage
  146. /**
  147. * \brief 文本的消息体
  148. *
  149. * TencentTextMessageObjV1 应用之间传递的文本消息体
  150. */
  151. @interface TencentTextMessageObjV1 : TencentBaseMessageObj
  152. /**
  153. * 文本
  154. * \note 文本长度不能超过4096个字
  155. */
  156. @property (nonatomic, retain) NSString *sText;
  157. /**
  158. * 初始化文本消息
  159. * \param text 文本
  160. * \return 初始化返回的文本消息
  161. */
  162. - (id)initWithText:(NSString *)text;
  163. @end
  164. #pragma mark TecentImageMessage
  165. /**
  166. * TencentApiImageSourceType 图片数据类型(请求方对数据类型可能会有限制)
  167. */
  168. typedef enum
  169. {
  170. /** 图片数据是url或二进制数据 */
  171. AllImage,
  172. /** 图片数据是url */
  173. UrlImage,
  174. /** 图片数据是二进制数据 */
  175. DataImage,
  176. }TencentApiImageSourceType;
  177. /**
  178. * \brief 图片的消息体
  179. *
  180. * TencentImageMessageObjV1 应用之间传递的图片消息体
  181. */
  182. @interface TencentImageMessageObjV1 : TencentBaseMessageObj
  183. /**
  184. * 图片数据
  185. * \note 图片不能大于10M
  186. */
  187. @property (nonatomic, retain) NSData *dataImage;
  188. /**
  189. * 缩略图的数据
  190. * \note 图片不能大于1M
  191. */
  192. @property (nonatomic, retain) NSData *dataThumbImage;
  193. /** 图片URL */
  194. @property (nonatomic, retain) NSString *sUrl;
  195. /** 图片的描述 */
  196. @property (nonatomic, retain) NSString *sDescription;
  197. /** 图片的size */
  198. @property (nonatomic, assign) CGSize szImage;
  199. /**
  200. * 图片来源
  201. * \note TencentApiImageSourceType对应的类型
  202. */
  203. @property (readonly, assign) NSInteger nType;
  204. /**
  205. * 初始化图片消息
  206. * \param dataImage 图片类型
  207. * \return 初始化返回的图片消息
  208. */
  209. - (id)initWithImageData:(NSData *)dataImage;
  210. /**
  211. * 初始化图片消息
  212. * \param url 图片url
  213. * \return 初始化返回的图片消息
  214. */
  215. - (id)initWithImageUrl:(NSString *)url;
  216. /**
  217. * 初始化图片消息
  218. * \param type 图片类型
  219. * \return 初始化返回的图片消息
  220. */
  221. - (id)initWithType:(TencentApiImageSourceType)type;
  222. @end
  223. #pragma mark TencentAudioMessage
  224. /**
  225. * \brief 音频的消息体
  226. *
  227. * TencentAudioMessageObjV1 应用之间传递的音频消息体
  228. */
  229. @interface TencentAudioMessageObjV1 : TencentBaseMessageObj
  230. /** 音频URL */
  231. @property (nonatomic, retain) NSString *sUrl;
  232. /**
  233. * 音频的预览图
  234. * \note图片不能大于1M
  235. */
  236. @property (nonatomic, retain) NSData *dataImagePreview;
  237. /** 音频的预览图URL */
  238. @property (nonatomic, retain) NSString *sImagePreviewUrl;
  239. /** 音频的描述 */
  240. @property (nonatomic, retain) NSString *sDescription;
  241. /**
  242. * 初始化图片消息
  243. * \param url 音频URL
  244. * \return 初始化返回的音频消息
  245. */
  246. - (id)initWithAudioUrl:(NSString *)url;
  247. @end
  248. #pragma mark TencentVideoMessage
  249. /**
  250. * TencentApiVideoSourceType 视频数据类型(请求方对数据类型可能会有限制)
  251. */
  252. typedef enum
  253. {
  254. /** 视频来源于本地或网络 */
  255. AllVideo,
  256. /** 视频来源于本地 */
  257. LocalVideo,
  258. /** 视频来源于网络 */
  259. NetVideo,
  260. }TencentApiVideoSourceType;
  261. /**
  262. * \brief 视频的消息体
  263. *
  264. * TencentVideoMessageV1 应用之间传递的视频消息体
  265. */
  266. @interface TencentVideoMessageV1 : TencentBaseMessageObj
  267. /**
  268. * 视频URL
  269. * \note 不能超过1024
  270. */
  271. @property (nonatomic, retain) NSString *sUrl;
  272. /**
  273. * 视频来源 主要是用来让发起方指定视频的来源
  274. * \note TencentApiVideoSourceType 对应的类型 只读参数
  275. */
  276. @property (readonly, assign, nonatomic) NSInteger nType;
  277. /**
  278. * 视频的预览图
  279. * \note 图片不能大于1M
  280. */
  281. @property (nonatomic, retain) NSData *dataImagePreview;
  282. /** 视频的预览图URL */
  283. @property (nonatomic, retain) NSString *sImagePreviewUrl;
  284. /** 视频的描述 */
  285. @property (nonatomic, retain) NSString *sDescription;
  286. /**
  287. * 初始化视频消息
  288. * \param url 视频URL
  289. * \param type 视频来源类型
  290. * \return 初始化返回的视频消息
  291. */
  292. - (id)initWithVideoUrl:(NSString *)url type:(TencentApiVideoSourceType)type;
  293. /**
  294. * 初始化视频消息
  295. * \param type 视频来源类型
  296. * \return 初始化返回的视频消息
  297. */
  298. - (id)initWithType:(TencentApiVideoSourceType)type;
  299. @end
  300. #pragma mark TencentImageMessageObj
  301. /**
  302. * \brief 视频图片消息体
  303. *
  304. * TencentVideoMessageV1 这是一个扩展的类 是一个图片视频类
  305. * \note 图片视频可以任选一个内容填充 但是注意只能填一个 当有一种类型被填充后 另外一个种类型就无法填充了
  306. */
  307. @interface TencentImageAndVideoMessageObjV1 : TencentBaseMessageObj
  308. /** 图片消息 */
  309. @property (nonatomic, retain) TencentImageMessageObjV1 *objImageMessage;
  310. /** 视频消息 */
  311. @property (nonatomic, retain) TencentVideoMessageV1 *objVideoMessage;
  312. /**
  313. * 初始化图片消息
  314. * \param dataImage 图片数据
  315. * \param url 视频url
  316. * \return 初始化返回的图片视频消息
  317. */
  318. - (id)initWithMessage:(NSData *)dataImage videoUrl:(NSString *)url;
  319. /**
  320. * 设置图片
  321. * \param dataImage 图片数据
  322. */
  323. - (void)setDataImage:(NSData *)dataImage;
  324. /**
  325. * 设置视频
  326. * \param videoUrl 视频URL
  327. */
  328. - (void)setVideoUrl:(NSString *)videoUrl;
  329. @end
  330. #endif