//
|
// TencentMessageObject.h
|
// TencentOpenApi_IOS
|
//
|
// Created by qqconnect on 13-5-27.
|
// Copyright (c) 2013年 Tencent. All rights reserved.
|
//
|
|
#ifndef QQ_OPEN_SDK_LITE
|
|
#import <Foundation/Foundation.h>
|
#import <UIKit/UIKit.h>
|
#import "sdkdef.h"
|
|
#define kTextLimit (1024 * 1024)
|
#define kDataLimit (1024 * 1024 * 10)
|
#define kPreviewDataLimit (1024 * 1024)
|
|
@class TencentApiReq;
|
@class TencentApiResp;
|
|
/**
|
* 必填的NSArray型参数
|
*/
|
typedef NSArray *TCRequiredArray;
|
|
/**
|
* 必填的NSDictionary型参数
|
*/
|
typedef NSDictionary *TCRequiredDictionary;
|
|
/**
|
* 必填的TencentApiReq型参数
|
*/
|
typedef TencentApiReq *TCRequiredReq;
|
|
/**
|
* 可选的UIImage类型参数
|
*/
|
typedef NSData *TCOptionalData;
|
|
|
/**
|
* 可选的NSArray型参数
|
*/
|
typedef NSArray *TCOptionalArray;
|
|
/**
|
* 可选的TencentApiReq型参数
|
*/
|
typedef TencentApiReq *TCOptionalReq;
|
|
/**
|
* TencentReqMessageType 请求类型枚举参数
|
*/
|
typedef enum
|
{
|
/** TX APP请求内容填充(需要第三方开发者填充完成内容后需要主动调用sendRespMessageToTencentApp)*/
|
ReqFromTencentAppQueryContent,
|
/** TX APP请求展现内容 (不用调用答复) */
|
ReqFromTencentAppShowContent,
|
/** 第三方 APP 请求内容 */
|
ReqFromThirdAppQueryContent,
|
/** 第三方 APP 请求展现内容(类似分享)*/
|
ReqFromThirdAppShowContent,
|
}
|
TencentReqMessageType;
|
|
typedef enum
|
{
|
RespFromTencentAppQueryContent,
|
RespFromTencentAppShowContent,
|
RespFromThirdAppQueryContent,
|
RespFromThirdAppShowContent,
|
}
|
TencentRespMessageType;
|
|
/**
|
* TencentObjVersion 腾讯API消息类型枚举
|
*/
|
typedef enum
|
{
|
/** 文本类型 */
|
TencentTextObj,
|
/** 图片类型 */
|
TencentImageObj,
|
/** 音频类型 */
|
TencentAudioObj,
|
/** 视频类型 */
|
TencentVideoObj,
|
/** 图片视频类 */
|
TencentImageAndVideoObj,
|
}
|
TencentObjVersion;
|
|
/**
|
* \brief 请求包
|
*
|
* TencentApiReq用来向其他业务发送请求包
|
*/
|
@interface TencentApiReq : NSObject<NSCoding>
|
|
/**
|
* 根据序列号生成一个请求包
|
* \param apiSeq 请求序列号
|
* \param type 请求类型
|
* \return tencentApiReq实例
|
*/
|
+ (TencentApiReq *)reqFromSeq:(NSInteger)apiSeq type:(TencentReqMessageType)type;
|
|
/** 请求类型 */
|
@property (readonly, assign, nonatomic)TCRequiredInt nMessageType;
|
|
/** 请求平台 */
|
@property (readonly, assign, nonatomic)NSInteger nPlatform;
|
|
/** 请求的SDK版本号 */
|
@property (readonly, assign, nonatomic)NSInteger nSdkVersion;
|
|
/** 请求序列号 */
|
@property (readonly, assign, nonatomic)TCRequiredInt nSeq;
|
|
/** 第三方的APPID */
|
@property (nonatomic, retain)TCRequiredStr sAppID;
|
|
/** 请求内容 TencentBaseMessageObj对象数组 */
|
@property (nonatomic, retain)TCOptionalArray arrMessage;
|
|
/** 请求的描述 可以用于告诉对方这个请求的特定场景 */
|
@property (nonatomic, retain)TCOptionalStr sDescription;
|
|
@end
|
|
/**
|
* \brief 答复包
|
*
|
* TencentApiResp用来向其他业务发送答复包
|
*/
|
@interface TencentApiResp : NSObject<NSCoding>
|
|
/**
|
* 根据序列号生成一个答复包
|
* \param req 答复对应的请求包(如果req不是TencentApiReq或者他的子类,会抛出异常)
|
* \return 答复包体
|
*/
|
+ (TencentApiResp *)respFromReq:(TencentApiReq *)req;
|
|
/** 返回码 */
|
@property (nonatomic, assign)TCOptionalInt nRetCode;
|
|
/** 返回消息 */
|
@property (nonatomic, retain)TCOptionalStr sRetMsg;
|
|
/** 答复对应的请求包 */
|
@property (nonatomic, retain)TCOptionalReq objReq;
|
|
@end
|
|
/**
|
* \brief 消息体
|
*
|
* TencentBaseMessageObj 应用之间传递消息体
|
*/
|
@interface TencentBaseMessageObj : NSObject<NSCoding>
|
|
/** 消息类型 */
|
@property (nonatomic, assign)NSInteger nVersion;
|
|
/** 消息描述 */
|
@property (nonatomic, retain)NSString *sName;
|
|
/** 消息的扩展信息 主要是可以用来进行一些请求消息体的描述 譬如图片要求的width height 文字的关键字什么的, 也可以不用填写*/
|
@property (nonatomic, retain)NSDictionary *dictExpandInfo;
|
|
/**
|
* 消息是否有效
|
*/
|
- (BOOL)isVaild;
|
|
@end
|
|
#pragma mark TencentTextMessage
|
/**
|
* \brief 文本的消息体
|
*
|
* TencentTextMessageObjV1 应用之间传递的文本消息体
|
*/
|
@interface TencentTextMessageObjV1 : TencentBaseMessageObj
|
|
/**
|
* 文本
|
* \note 文本长度不能超过4096个字
|
*/
|
@property (nonatomic, retain) NSString *sText;
|
|
|
/**
|
* 初始化文本消息
|
* \param text 文本
|
* \return 初始化返回的文本消息
|
*/
|
- (id)initWithText:(NSString *)text;
|
|
@end
|
|
|
#pragma mark TecentImageMessage
|
|
/**
|
* TencentApiImageSourceType 图片数据类型(请求方对数据类型可能会有限制)
|
*/
|
typedef enum
|
{
|
/** 图片数据是url或二进制数据 */
|
AllImage,
|
/** 图片数据是url */
|
UrlImage,
|
/** 图片数据是二进制数据 */
|
DataImage,
|
}TencentApiImageSourceType;
|
|
/**
|
* \brief 图片的消息体
|
*
|
* TencentImageMessageObjV1 应用之间传递的图片消息体
|
*/
|
@interface TencentImageMessageObjV1 : TencentBaseMessageObj
|
|
/**
|
* 图片数据
|
* \note 图片不能大于10M
|
*/
|
@property (nonatomic, retain) NSData *dataImage;
|
|
/**
|
* 缩略图的数据
|
* \note 图片不能大于1M
|
*/
|
@property (nonatomic, retain) NSData *dataThumbImage;
|
|
/** 图片URL */
|
@property (nonatomic, retain) NSString *sUrl;
|
|
/** 图片的描述 */
|
@property (nonatomic, retain) NSString *sDescription;
|
|
/** 图片的size */
|
@property (nonatomic, assign) CGSize szImage;
|
|
/**
|
* 图片来源
|
* \note TencentApiImageSourceType对应的类型
|
*/
|
@property (readonly, assign) NSInteger nType;
|
|
/**
|
* 初始化图片消息
|
* \param dataImage 图片类型
|
* \return 初始化返回的图片消息
|
*/
|
- (id)initWithImageData:(NSData *)dataImage;
|
|
/**
|
* 初始化图片消息
|
* \param url 图片url
|
* \return 初始化返回的图片消息
|
*/
|
- (id)initWithImageUrl:(NSString *)url;
|
|
/**
|
* 初始化图片消息
|
* \param type 图片类型
|
* \return 初始化返回的图片消息
|
*/
|
- (id)initWithType:(TencentApiImageSourceType)type;
|
@end
|
|
|
#pragma mark TencentAudioMessage
|
/**
|
* \brief 音频的消息体
|
*
|
* TencentAudioMessageObjV1 应用之间传递的音频消息体
|
*/
|
@interface TencentAudioMessageObjV1 : TencentBaseMessageObj
|
|
/** 音频URL */
|
@property (nonatomic, retain) NSString *sUrl;
|
|
/**
|
* 音频的预览图
|
* \note图片不能大于1M
|
*/
|
@property (nonatomic, retain) NSData *dataImagePreview;
|
|
/** 音频的预览图URL */
|
@property (nonatomic, retain) NSString *sImagePreviewUrl;
|
|
/** 音频的描述 */
|
@property (nonatomic, retain) NSString *sDescription;
|
|
/**
|
* 初始化图片消息
|
* \param url 音频URL
|
* \return 初始化返回的音频消息
|
*/
|
- (id)initWithAudioUrl:(NSString *)url;
|
|
@end
|
|
|
#pragma mark TencentVideoMessage
|
|
/**
|
* TencentApiVideoSourceType 视频数据类型(请求方对数据类型可能会有限制)
|
*/
|
|
typedef enum
|
{
|
/** 视频来源于本地或网络 */
|
AllVideo,
|
/** 视频来源于本地 */
|
LocalVideo,
|
/** 视频来源于网络 */
|
NetVideo,
|
}TencentApiVideoSourceType;
|
|
/**
|
* \brief 视频的消息体
|
*
|
* TencentVideoMessageV1 应用之间传递的视频消息体
|
*/
|
@interface TencentVideoMessageV1 : TencentBaseMessageObj
|
|
/**
|
* 视频URL
|
* \note 不能超过1024
|
*/
|
@property (nonatomic, retain) NSString *sUrl;
|
|
/**
|
* 视频来源 主要是用来让发起方指定视频的来源
|
* \note TencentApiVideoSourceType 对应的类型 只读参数
|
*/
|
@property (readonly, assign, nonatomic) NSInteger nType;
|
|
/**
|
* 视频的预览图
|
* \note 图片不能大于1M
|
*/
|
@property (nonatomic, retain) NSData *dataImagePreview;
|
|
/** 视频的预览图URL */
|
@property (nonatomic, retain) NSString *sImagePreviewUrl;
|
|
/** 视频的描述 */
|
@property (nonatomic, retain) NSString *sDescription;
|
|
/**
|
* 初始化视频消息
|
* \param url 视频URL
|
* \param type 视频来源类型
|
* \return 初始化返回的视频消息
|
*/
|
- (id)initWithVideoUrl:(NSString *)url type:(TencentApiVideoSourceType)type;
|
|
|
/**
|
* 初始化视频消息
|
* \param type 视频来源类型
|
* \return 初始化返回的视频消息
|
*/
|
- (id)initWithType:(TencentApiVideoSourceType)type;
|
@end
|
|
#pragma mark TencentImageMessageObj
|
/**
|
* \brief 视频图片消息体
|
*
|
* TencentVideoMessageV1 这是一个扩展的类 是一个图片视频类
|
* \note 图片视频可以任选一个内容填充 但是注意只能填一个 当有一种类型被填充后 另外一个种类型就无法填充了
|
*/
|
@interface TencentImageAndVideoMessageObjV1 : TencentBaseMessageObj
|
|
/** 图片消息 */
|
@property (nonatomic, retain) TencentImageMessageObjV1 *objImageMessage;
|
|
/** 视频消息 */
|
@property (nonatomic, retain) TencentVideoMessageV1 *objVideoMessage;
|
|
/**
|
* 初始化图片消息
|
* \param dataImage 图片数据
|
* \param url 视频url
|
* \return 初始化返回的图片视频消息
|
*/
|
- (id)initWithMessage:(NSData *)dataImage videoUrl:(NSString *)url;
|
|
/**
|
* 设置图片
|
* \param dataImage 图片数据
|
*/
|
- (void)setDataImage:(NSData *)dataImage;
|
|
/**
|
* 设置视频
|
* \param videoUrl 视频URL
|
*/
|
- (void)setVideoUrl:(NSString *)videoUrl;
|
@end
|
|
#endif
|