shijian

Merge branch 'develop' into 'master'

Develop



See merge request !1
Showing 32 changed files with 4911 additions and 0 deletions

Too many changes to show.

To preserve performance only 32 of 32+ files are displayed.

# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
## Playgrounds
timeline.xctimeline
playground.xcworkspace
# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
.build/
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
... ...
4.0
... ...
Pod::Spec.new do |s|
s.name = "HHVDoctorSDK"
s.version = "2.0.6.0705.1151"
s.summary = "和缓视频医生 SDK"
s.description = <<-DESC
和缓视频医生,连接千万用户和全科医生。
DESC
s.homepage = "https://code.hh-medic.com/dev-client/hhsdk.ios"
s.license = "MIT"
s.author = { "shmily" => "shmilyshijian@foxmail.com" }
s.social_media_url = "https://github.com/515783034"
s.platform = :ios, "8.0"
s.source = { :git => "http://code.hh-medic.com/hh_public/hhvDoctorSDK.ios.git", :tag => s.version }
s.default_subspec = 'Base'
s.subspec 'Base' do |base|
base.vendored_frameworks = 'HHVDoctorSDK/*.framework'
base.resources = 'HHVDoctorSDK/resources/*.bundle'
base.frameworks = 'SystemConfiguration', 'MobileCoreServices', 'AVFoundation', 'CoreTelephony', 'VideoToolbox', 'AudioToolbox', 'CoreMedia'
base.libraries = 'z', 'sqlite3.0', 'c++', 'resolv.9'
end
end
... ...
//
// IMGroupExt.h
// IMGroupExt
//
// Created by tomzhu on 2017/1/23.
//
//
#ifndef IMGroupExt_h
#define IMGroupExt_h
#import "ImSDK.h"
#import "TIMComm+Group.h"
#import "TIMGroupManager+Ext.h"
#endif /* IMGroupExt_h */
... ...
//
// IMMessageExt.h
// IMMessageExt
//
// Created by tomzhu on 2016/12/27.
//
//
#ifndef ImSDK_h
#define ImSDK_h
#import "ImSDK.h"
#import "TIMConversation+MsgExt.h"
#import "TIMMessage+MsgExt.h"
#import "TIMComm+MsgExt.h"
#import "TIMManager+MsgExt.h"
#endif /* ImSDK_h */
... ...
//
// IMSdkComm.h
// ImSDK
//
// Created by bodeng on 10/12/14.
// Copyright (c) 2014 tencent. All rights reserved.
//
#ifndef ImSDK_IMSdkComm_h
#define ImSDK_IMSdkComm_h
@interface OMErrResp : NSObject
{
NSString* cmd; // 返回的命令字
int seq; // 请求包的seq
NSString* uin; // uin
int errCode; // 错误码
NSString* errTips; // error tips
}
@property(nonatomic,strong) NSString* cmd;
@property(nonatomic,strong) NSString* uin;
@property(nonatomic,assign) int seq;
@property(nonatomic,assign) int errCode;
@property(nonatomic,strong) NSString* errTips;
@end
/// 业务相关回调
/**
* userid和tinyid 转换回包
* userList 存储IMUserId结构
*/
@interface OMUserIdResp : NSObject{
NSArray* userList; // 用户的登录的open id
}
@property(nonatomic,strong) NSArray* userList;
@end
/**
* userid转换tinyid回调
*
* @param resp 回包结构
*
* @return 0 处理成功
*/
typedef int (^OMUserIdSucc)(OMUserIdResp *resp);
//请求回调
typedef int (^OMErr)(OMErrResp *resp);
/**
* 音视频回调
*/
@interface OMCommandResp : NSObject{
NSData* rspbody;
}
@property(nonatomic,strong) NSData* rspbody;
@end
// relay 回调
typedef int (^OMCommandSucc)(OMCommandResp *resp);
// request 回调
typedef void (^OMRequestSucc)(NSData * data);
typedef void (^OMRequsetFail)(int code, NSString* msg);
/**
* UserId 结构,表示一个用户的账号信息
*/
@interface IMUserId : NSObject{
NSString* uidtype; // uid 类型
unsigned int userappid;
NSString* userid; // 用户id
unsigned long long tinyid;
unsigned long long uin;
}
@property(nonatomic,strong) NSString* uidtype;
@property(nonatomic,assign) unsigned int userappid;
@property(nonatomic,strong) NSString* userid;
@property(nonatomic,assign) unsigned long long tinyid;
@property(nonatomic,assign) unsigned long long uin;
@end
/**
* 一般多人音视频操作成功回调
*/
typedef void (^OMMultiSucc)();
/**
* 一般多人音视频操作失败回调
*
* @param code 错误码
* @param err 错误描述
*/
typedef void (^OMMultiFail)(int code, NSString * err);
#endif
... ...
//
// ImSDK.h
// ImSDK
//
// Created by bodeng on 24/3/15.
// Copyright (c) 2015 tencent. All rights reserved.
//
#ifndef ImSDK_ImSDK_h
#define ImSDK_ImSDK_h
#import "TIMComm.h"
#import "TIMManager.h"
#import "TIMMessage.h"
#import "TIMConversation.h"
#import "TIMGroupManager.h"
#import "TIMCallback.h"
//#import "TIMFriendshipManager.h"
//#import "IMSdkInt.h"
#endif
... ...
//
// TIMCallback.h
// ImSDK
//
// Created by bodeng on 30/3/15.
// Copyright (c) 2015 tencent. All rights reserved.
//
#ifndef ImSDK_TIMCallback_h
#define ImSDK_TIMCallback_h
#import "TIMComm.h"
@class TIMMessage;
@class TIMGroupTipsElem;
@class TIMGroupInfo;
/**
* 连接通知回调
*/
@protocol TIMConnListener <NSObject>
@optional
/**
* 网络连接成功
*/
- (void)onConnSucc;
/**
* 网络连接失败
*
* @param code 错误码
* @param err 错误描述
*/
- (void)onConnFailed:(int)code err:(NSString*)err;
/**
* 网络连接断开(断线只是通知用户,不需要重新登陆,重连以后会自动上线)
*
* @param code 错误码
* @param err 错误描述
*/
- (void)onDisconnect:(int)code err:(NSString*)err;
/**
* 连接中
*/
- (void)onConnecting;
@end
/**
* 用户在线状态通知
*/
@protocol TIMUserStatusListener <NSObject>
@optional
/**
* 踢下线通知
*/
- (void)onForceOffline;
/**
* 断线重连失败
*/
- (void)onReConnFailed:(int)code err:(NSString*)err;
/**
* 用户登录的userSig过期(用户需要重新获取userSig后登录)
*/
- (void)onUserSigExpired;
@end
/**
* 页面刷新接口(如有需要未读计数刷新,会话列表刷新等)
*/
@protocol TIMRefreshListener <NSObject>
@optional
/**
* 刷新会话
*/
- (void)onRefresh;
/**
* 刷新部分会话(包括多终端已读上报同步)
*
* @param conversations 会话(TIMConversation*)列表
*/
- (void)onRefreshConversations:(NSArray*)conversations;
@end
/**
* 消息回调
*/
@protocol TIMMessageListener <NSObject>
@optional
/**
* 新消息回调通知
*
* @param msgs 新消息列表,TIMMessage 类型数组
*/
- (void)onNewMessage:(NSArray*)msgs;
@end
@protocol TIMMessageReceiptListener <NSObject>
@optional
/**
* 收到了已读回执
*
* @param receipts 已读回执(TIMMessageReceipt*)列表
*/
- (void) onRecvMessageReceipts:(NSArray*)receipts;
@end
/**
* 消息修改回调
*/
@protocol TIMMessageUpdateListener <NSObject>
@optional
/**
* 消息修改通知
*
* @param msgs 修改的消息列表,TIMMessage 类型数组
*/
- (void)onMessageUpdate:(NSArray*) msgs;
@end
@protocol TIMMessageRevokeListener <NSObject>
@optional
/**
* 消息撤回通知
*
* @param locator 被撤回消息的标识
*/
- (void)onRevokeMessage:(TIMMessageLocator*)locator;
@end
/**
* 图片上传进度回调
*/
@protocol TIMUploadProgressListener <NSObject>
@optional
/**
* 上传进度回调
*
* @param msg 正在上传的消息
* @param elemidx 正在上传的elem的索引
* @param taskid 任务id
* @param progress 上传进度
*/
- (void)onUploadProgressCallback:(TIMMessage*)msg elemidx:(uint32_t)elemidx taskid:(uint32_t)taskid progress:(uint32_t)progress;
@end
/**
* 群事件通知回调
*/
@protocol TIMGroupEventListener <NSObject>
@optional
/**
* 群tips回调
*
* @param elem 群tips消息
*/
- (void)onGroupTipsEvent:(TIMGroupTipsElem*)elem;
@end
///**
// * 好友代理事件回调
// */
//@protocol TIMFriendshipListener <NSObject>
//@optional
//
///**
// * 添加好友通知
// *
// * @param users 好友列表(TIMUserProfile*)
// */
//- (void)onAddFriends:(NSArray*)users;
//
///**
// * 删除好友通知
// *
// * @param identifiers 用户id列表(NSString*)
// */
//- (void)onDelFriends:(NSArray*)identifiers;
//
///**
// * 好友资料更新通知
// *
// * @param profiles 资料列表(TIMUserProfile*)
// */
//- (void)onFriendProfileUpdate:(NSArray*)profiles;
//
///**
// * 好友申请通知
// *
// * @param reqs 好友申请者id列表(TIMSNSChangeInfo*)
// */
//- (void)onAddFriendReqs:(NSArray*)reqs;
//
//@end
//@protocol TIMGroupListener <NSObject>
//@optional
//
///**
// * 有新用户加入群时的通知回调
// *
// * @param groupId 群ID
// * @param membersInfo 加群用户的群资料(TIMGroupMemberInfo*)列表
// */
//- (void)onMemberJoin:(NSString*)groupId membersInfo:(NSArray*)membersInfo;
//
///**
// * 有群成员退群时的通知回调
// *
// * @param groupId 群ID
// * @param members 退群成员的identifier(NSString*)列表
// */
//- (void)onMemberQuit:(NSString*)groupId members:(NSArray*)members;
//
///**
// * 群成员信息更新的通知回调
// *
// * @param groupId 群ID
// * @param membersInfo 更新后的群成员资料(TIMGroupMemberInfo*)列表
// */
//- (void)onMemberUpdate:(NSString*)groupId membersInfo:(NSArray*)membersInfo;
//
///**
// * 加入群的通知回调
// *
// * @param groupInfo 加入群的群组资料
// */
//- (void)onGroupAdd:(TIMGroupInfo*)groupInfo;
//
///**
// * 本地群组资料被删除的通知回调,包括主动退群,被踢,群被解散,群被回收
// *
// * @param groupId 对应的群ID
// */
//- (void)onGroupDelete:(NSString*)groupId;
//
///**
// * 群资料更新的通知回调
// *
// * @param groupInfo 更新后的群资料信息
// */
//- (void)onGroupUpdate:(TIMGroupInfo*)groupInfo;
//
//@end
#endif
... ...
//
// TIMComm+Group.h
// IMGroupExt
//
// Created by tomzhu on 2017/2/9.
//
//
#ifndef TIMComm_Group_h
#define TIMComm_Group_h
#import "ImSDK.h"
@class TIMGroupPendencyMeta;
#pragma mark - 枚举类型
/**
* 群基本获取资料标志
*/
typedef NS_ENUM(NSInteger, TIMGetGroupBaseInfoFlag) {
/**
* 不获取群组资料
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NONE = 0x00,
/**
* 获取群组名
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NAME = 0x01,
/**
* 获取创建时间
*/
TIM_GET_GROUP_BASE_INFO_FLAG_CREATE_TIME = 0x01 << 1,
/**
* 获取群主id
*/
TIM_GET_GROUP_BASE_INFO_FLAG_OWNER_UIN = 0x01 << 2,
/**
* (不可用)
*/
TIM_GET_GROUP_BASE_INFO_FLAG_SEQ = 0x01 << 3,
/**
* 获取最近一次修改群信息时间
*/
TIM_GET_GROUP_BASE_INFO_FLAG_TIME = 0x01 << 4,
/**
* (不可用)
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NEXT_MSG_SEQ = 0x01 << 5,
/**
* 获取最近一次发消息时间
*/
TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG_TIME = 0x01 << 6,
/**
* (不可用)
*/
TIM_GET_GROUP_BASE_INFO_FLAG_APP_ID = 0x01 << 7,
/**
* 获取群成员数量
*/
TIM_GET_GROUP_BASE_INFO_FLAG_MEMBER_NUM = 0x01 << 8,
/**
* 获取最大群成员数量
*/
TIM_GET_GROUP_BASE_INFO_FLAG_MAX_MEMBER_NUM = 0x01 << 9,
/**
* 获取群公告
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NOTIFICATION = 0x01 << 10,
/**
* 获取群简介
*/
TIM_GET_GROUP_BASE_INFO_FLAG_INTRODUCTION = 0x01 << 11,
/**
* 获取群头像
*/
TIM_GET_GROUP_BASE_INFO_FLAG_FACE_URL = 0x01 << 12,
/**
* 获取入群类型
*/
TIM_GET_GROUP_BASE_INFO_FLAG_ADD_OPTION = 0x01 << 13,
/**
* 获取群组类型
*/
TIM_GET_GROUP_BASE_INFO_FLAG_GROUP_TYPE = 0x01 << 14,
/**
* 获取最后一条群消息
*/
TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG = 0x01 << 15,
/**
* 获取在线人数
*/
TIM_GET_GROUP_BASE_INFO_FLAG_ONLINE_NUM = 0x01 << 16,
/**
* 获取群成员是否可见标志
*/
TIM_GET_GROUP_BASE_INFO_VISIBLE = 0x01 << 17,
/**
* 获取群是否能被搜到标志
*/
TIM_GET_GROUP_BASE_INFO_SEARCHABLE = 0x01 << 18,
/**
* 获取群全员禁言时间
*/
TIM_GET_GROUP_BASE_INFO_ALL_SHUTUP = 0x01 << 19
};
/**
* 群成员角色过滤方式
*/
typedef NS_ENUM(NSInteger, TIMGroupMemberFilter) {
/**
* 全部成员
*/
TIM_GROUP_MEMBER_FILTER_ALL = 0x00,
/**
* 群主
*/
TIM_GROUP_MEMBER_FILTER_SUPER = 0x01,
/**
* 管理员
*/
TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02,
/**
* 普通成员
*/
TIM_GROUP_MEMBER_FILTER_COMMON = 0x04,
};
/**
* 群成员获取资料标志
*/
typedef NS_ENUM(NSInteger, TIMGetGroupMemInfoFlag) {
/**
* 入群时间
*/
TIM_GET_GROUP_MEM_INFO_FLAG_JOIN_TIME = 0x01,
/**
* 消息标志
*/
TIM_GET_GROUP_MEM_INFO_FLAG_MSG_FLAG = 0x01 << 1,
/**
* 角色
*/
TIM_GET_GROUP_MEM_INFO_FLAG_ROLE_INFO = 0x01 << 3,
/**
* 禁言时间
*/
TIM_GET_GROUP_MEM_INFO_FLAG_SHUTUP_TIME = 0x01 << 4,
/**
* 群名片
*/
TIM_GET_GROUP_MEM_INFO_FLAG_NAME_CARD = 0x01 << 5,
};
/**
* 群组操作结果
*/
typedef NS_ENUM(NSInteger, TIMGroupMemberStatus) {
/**
* 操作失败
*/
TIM_GROUP_MEMBER_STATUS_FAIL = 0,
/**
* 操作成功
*/
TIM_GROUP_MEMBER_STATUS_SUCC = 1,
/**
* 无效操作,加群时已经是群成员,移除群组时不在群内
*/
TIM_GROUP_MEMBER_STATUS_INVALID = 2,
/**
* 等待处理,邀请入群时等待对方处理
*/
TIM_GROUP_MEMBER_STATUS_PENDING = 3,
};
typedef NS_ENUM(NSInteger, TIMGroupPendencyGetType) {
/**
* 申请入群
*/
TIM_GROUP_PENDENCY_GET_TYPE_JOIN = 0x0,
/**
* 邀请入群
*/
TIM_GROUP_PENDENCY_GET_TYPE_INVITE = 0x1,
};
typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleStatus) {
/**
* 未处理
*/
TIM_GROUP_PENDENCY_HANDLE_STATUS_UNHANDLED = 0,
/**
* 被他人处理
*/
TIM_GROUP_PENDENCY_HANDLE_STATUS_OTHER_HANDLED = 1,
/**
* 被用户处理
*/
TIM_GROUP_PENDENCY_HANDLE_STATUS_OPERATOR_HANDLED = 2,
};
typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleResult) {
/**
* 拒绝申请
*/
TIM_GROUP_PENDENCY_HANDLE_RESULT_REFUSE = 0,
/**
* 同意申请
*/
TIM_GROUP_PENDENCY_HANDLE_RESULT_AGREE = 1,
};
#pragma mark - block回调
/**
* 群成员列表回调
*
* @param members 群成员列表
*/
typedef void (^TIMGroupMemberSucc)(NSArray * members);
/**
* 群列表回调
*
* @param arr 群列表
*/
typedef void (^TIMGroupListSucc)(NSArray * arr);
/**
* 本人群组内成员信息回调
*
* @param selfInfo 本人成员信息
*/
typedef void (^TIMGroupSelfSucc)(TIMGroupMemberInfo * selfInfo);
/**
* 群接受消息选项回调
*
* @param opt 群接受消息选项
*/
typedef void (^TIMGroupReciveMessageOptSucc)(TIMGroupReceiveMessageOpt opt);
/**
* 群成员列表回调(分页使用)
*
* @param members 群成员(TIMGroupMemberInfo*)列表
*/
typedef void (^TIMGroupMemberSuccV2)(uint64_t nextSeq, NSArray * members);
/**
* 群搜索回调
*
* @param totalNum 搜索结果的总数
* @param groups 请求的群列表片段
*/
typedef void (^TIMGroupSearchSucc)(uint64_t totalNum, NSArray * groups);
/**
* 获取群组未决请求列表成功
*
* @param meta 未决请求元信息
* @param pendencies 未决请求列表(TIMGroupPendencyItem)数组
*/
typedef void (^TIMGetGroupPendencyListSucc)(TIMGroupPendencyMeta * meta, NSArray * pendencies);
#pragma mark - 基本类型
/**
* 创建群参数
*/
@interface TIMCreateGroupInfo : TIMCodingModel
/**
* 群组Id,nil则使用系统默认Id
*/
@property(nonatomic,strong) NSString* group;
/**
* 群名
*/
@property(nonatomic,strong) NSString* groupName;
/**
* 群类型:Private,Public,ChatRoom,AVChatRoom,BChatRoom
*/
@property(nonatomic,strong) NSString* groupType;
/**
* 是否设置入群选项,Private类型群组请设置为false
*/
@property(nonatomic,assign) BOOL setAddOpt;
/**
* 入群选项
*/
@property(nonatomic,assign) TIMGroupAddOpt addOpt;
/**
* 最大成员数,填0则系统使用默认值
*/
@property(nonatomic,assign) uint32_t maxMemberNum;
/**
* 群公告
*/
@property(nonatomic,strong) NSString* notification;
/**
* 群简介
*/
@property(nonatomic,strong) NSString* introduction;
/**
* 群头像
*/
@property(nonatomic,strong) NSString* faceURL;
/**
* 自定义字段集合,key是NSString*类型,value是NSData*类型
*/
@property(nonatomic,strong) NSDictionary* customInfo;
/**
* 创建成员(TIMCreateGroupMemberInfo*)列表
*/
@property(nonatomic,strong) NSArray* membersInfo;
@end
/**
* 未决请求选项
*/
@interface TIMGroupPendencyOption : TIMCodingModel
/**
* 拉取的起始时间 0:拉取最新的
*/
@property(nonatomic,assign) uint64_t timestamp;
/**
* 每页的数量
*/
@property(nonatomic,assign) uint32_t numPerPage;
@end
/**
* 未决请求元信息
*/
@interface TIMGroupPendencyMeta : TIMCodingModel
/**
* 下一次拉取的起始时间戳
*/
@property(nonatomic,assign) uint64_t nextStartTime;
/**
* 已读时间戳大小
*/
@property(nonatomic,assign) uint64_t readTimeSeq;
/**
* 未决未读数
*/
@property(nonatomic,assign) uint32_t unReadCnt;
@end
/**
* 创建群组时的成员信息
*/
@interface TIMCreateGroupMemberInfo : TIMCodingModel
/**
* 被操作成员
*/
@property(nonatomic,strong) NSString* member;
/**
* 成员类型
*/
@property(nonatomic,assign) TIMGroupMemberRole role;
/**
* 自定义字段集合,key是NSString*类型,value是NSData*类型
*/
@property(nonatomic,strong) NSDictionary* customInfo;
@end
/**
* 成员操作返回值
*/
@interface TIMGroupMemberResult : NSObject
/**
* 被操作成员
*/
@property(nonatomic,strong) NSString* member;
/**
* 返回状态
*/
@property(nonatomic,assign) TIMGroupMemberStatus status;
@end
/**
* 未决申请
*/
@interface TIMGroupPendencyItem : TIMCodingModel
/**
* 相关群组id
*/
@property(nonatomic,strong) NSString* groupId;
/**
* 请求者id,请求加群:请求者,邀请加群:邀请人
*/
@property(nonatomic,strong) NSString* fromUser;
/**
* 判决者id,请求加群:0,邀请加群:被邀请人
*/
@property(nonatomic,strong) NSString* toUser;
/**
* 未决添加时间
*/
@property(nonatomic,assign) uint64_t addTime;
/**
* 未决请求类型
*/
@property(nonatomic,assign) TIMGroupPendencyGetType getType;
/**
* 已决标志
*/
@property(nonatomic,assign) TIMGroupPendencyHandleStatus handleStatus;
/**
* 已决结果
*/
@property(nonatomic,assign) TIMGroupPendencyHandleResult handleResult;
/**
* 申请或邀请附加信息
*/
@property(nonatomic,strong) NSString* requestMsg;
/**
* 审批信息:同意或拒绝信息
*/
@property(nonatomic,strong) NSString* handledMsg;
/**
* 同意申请
*
* @param msg 同意理由,选填
* @param succ 成功回调
* @param fail 失败回调,返回错误码和错误描述
*/
-(void) accept:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 拒绝申请
*
* @param msg 拒绝理由,选填
* @param succ 成功回调
* @param fail 失败回调,返回错误码和错误描述
*/
-(void) refuse:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 用户自己的id
*/
@property(nonatomic,strong) NSString* selfIdentifier;
@end
#endif /* TIMComm_Group_h */
... ...
//
// TIMComm+MsgExt.h
// IMMessageExt
//
// Created by tomzhu on 2017/1/11.
//
//
#ifndef TIMComm_MsgExt_h
#define TIMComm_MsgExt_h
#import <Foundation/Foundation.h>
#import "ImSDK.h"
@class TIMSendToUsersDetailInfo;
#pragma mark - 枚举类型
typedef NS_ENUM(NSInteger, TIM_SNS_SYSTEM_TYPE){
/**
* 增加好友消息
*/
TIM_SNS_SYSTEM_ADD_FRIEND = 0x01,
/**
* 删除好友消息
*/
TIM_SNS_SYSTEM_DEL_FRIEND = 0x02,
/**
* 增加好友申请
*/
TIM_SNS_SYSTEM_ADD_FRIEND_REQ = 0x03,
/**
* 删除未决申请
*/
TIM_SNS_SYSTEM_DEL_FRIEND_REQ = 0x04,
/**
* 黑名单添加
*/
TIM_SNS_SYSTEM_ADD_BLACKLIST = 0x05,
/**
* 黑名单删除
*/
TIM_SNS_SYSTEM_DEL_BLACKLIST = 0x06,
/**
* 未决已读上报
*/
TIM_SNS_SYSTEM_PENDENCY_REPORT = 0x07,
/**
* 关系链资料变更
*/
TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE = 0x08,
/**
* 推荐数据增加
*/
TIM_SNS_SYSTEM_ADD_RECOMMEND = 0x09,
/**
* 推荐数据删除
*/
TIM_SNS_SYSTEM_DEL_RECOMMEND = 0x0a,
/**
* 已决增加
*/
TIM_SNS_SYSTEM_ADD_DECIDE = 0x0b,
/**
* 已决删除
*/
TIM_SNS_SYSTEM_DEL_DECIDE = 0x0c,
/**
* 推荐已读上报
*/
TIM_SNS_SYSTEM_RECOMMEND_REPORT = 0x0d,
/**
* 已决已读上报
*/
TIM_SNS_SYSTEM_DECIDE_REPORT = 0x0e,
};
/**
* 资料变更
*/
typedef NS_ENUM(NSInteger, TIM_PROFILE_SYSTEM_TYPE){
/**
好友资料变更
*/
TIM_PROFILE_SYSTEM_FRIEND_PROFILE_CHANGE = 0x01,
};
#pragma mark - block回调
typedef void (^TIMSendToUsersFail)(int code, NSString *err, TIMSendToUsersDetailInfo *detailInfo);
#pragma mark - 基本类型
/**
* 发送消息给多用户的失败回调信息
*/
@interface TIMSendToUsersDetailInfo : NSObject
/**
* 发送消息成功的目标用户数
*/
@property(nonatomic,assign) uint32_t succCnt;
/**
* 发送消息失败的目标用户数
*/
@property(nonatomic,assign) uint32_t failCnt;
/**
* 失败信息(TIMSendToUsersErrInfo*)列表
*/
@property(nonatomic,strong) NSArray *errInofs;
@end
/**
* 发送消息给多用户的失败信息
*/
@interface TIMSendToUsersErrInfo : NSObject
/**
* 发送消息失败的目标用户id
*/
@property(nonatomic,strong) NSString *identifier;
/**
* 错误码
*/
@property(nonatomic,assign) int code;
/**
* 错误描述
*/
@property(nonatomic,strong) NSString *err;
@end
/**
* 关系链变更详细信息
*/
@interface TIMSNSChangeInfo : NSObject
/**
* 用户 identifier
*/
@property(nonatomic,strong) NSString * identifier;
/**
* 用户昵称
*/
@property(nonatomic,strong) NSString * nickname;
/**
* 申请添加时有效,添加理由
*/
@property(nonatomic,strong) NSString * wording;
/**
* 申请时填写,添加来源
*/
@property(nonatomic,strong) NSString * source;
/**
* 备注 type=TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE 有效
*/
@property(nonatomic,strong) NSString * remark;
@end
#endif /* TIMComm_MsgExt_h */
... ...
//
// TIMComm.h
// ImSDK
//
// Created by bodeng on 29/1/15.
// Copyright (c) 2015 tencent. All rights reserved.
//
#ifndef ImSDK_TIMComm_h
#define ImSDK_TIMComm_h
#import <Foundation/Foundation.h>
#define ERR_IMSDK_KICKED_BY_OTHERS 6208
@protocol TIMConnListener;
@protocol TIMUserStatusListener;
@protocol TIMRefreshListener;
@protocol TIMMessageReceiptListener;
@protocol TIMMessageUpdateListener;
@protocol TIMMessageRevokeListener;
@protocol TIMUploadProgressListener;
@protocol TIMGroupEventListener;
//@protocol TIMFriendshipListener;
//@protocol TIMGroupListener;
@class TIMMessage;
@class TIMImageElem;
@class TIMConversation;
@class TIMAPNSConfig;
@class TIMUserProfile;
@class TIMGroupInfoOption;
@class TIMGroupMemberInfoOption;
@class TIMFriendProfileOption;
#pragma mark - 枚举类型
/**
* 网络连接状态
*/
typedef NS_ENUM(NSInteger, TIMNetworkStatus) {
/**
* 已连接
*/
TIM_NETWORK_STATUS_CONNECTED = 1,
/**
* 链接断开
*/
TIM_NETWORK_STATUS_DISCONNECTED = 2,
};
/**
* 日志级别
*/
typedef NS_ENUM(NSInteger, TIMLogLevel) {
TIM_LOG_NONE = 0,
TIM_LOG_DEBUG = 3,
TIM_LOG_INFO = 4,
TIM_LOG_WARN = 5,
TIM_LOG_ERROR = 6,
};
/**
* 会话类型:
* C2C 双人聊天
* GROUP 群聊
*/
typedef NS_ENUM(NSInteger, TIMConversationType) {
/**
* C2C 类型
*/
TIM_C2C = 1,
/**
* 群聊 类型
*/
TIM_GROUP = 2,
/**
* 系统消息
*/
TIM_SYSTEM = 3,
};
/**
* 消息状态
*/
typedef NS_ENUM(NSInteger, TIMMessageStatus){
/**
* 消息发送中
*/
TIM_MSG_STATUS_SENDING = 1,
/**
* 消息发送成功
*/
TIM_MSG_STATUS_SEND_SUCC = 2,
/**
* 消息发送失败
*/
TIM_MSG_STATUS_SEND_FAIL = 3,
/**
* 消息被删除
*/
TIM_MSG_STATUS_HAS_DELETED = 4,
/**
* 导入到本地的消息
*/
TIM_MSG_STATUS_LOCAL_STORED = 5,
/**
* 被撤销的消息
*/
TIM_MSG_STATUS_LOCAL_REVOKED = 6,
};
/**
* 消息优先级标识
*/
typedef NS_ENUM(NSInteger, TIMMessagePriority) {
/**
* 高优先级,一般为红包或者礼物消息
*/
TIM_MSG_PRIORITY_HIGH = 1,
/**
* 普通优先级,普通消息
*/
TIM_MSG_PRIORITY_NORMAL = 2,
/**
* 低优先级,一般为点赞消息
*/
TIM_MSG_PRIORITY_LOW = 3,
/**
* 最低优先级,一般为后台下发的成员进退群通知
*/
TIM_MSG_PRIORITY_LOWEST = 4,
};
/**
* 图片压缩选项
*/
typedef NS_ENUM(NSInteger, TIM_IMAGE_COMPRESS_TYPE){
/**
* 原图(不压缩)
*/
TIM_IMAGE_COMPRESS_ORIGIN = 0x00,
/**
* 高压缩率:图片较小,默认值
*/
TIM_IMAGE_COMPRESS_HIGH = 0x01,
/**
* 低压缩:高清图发送(图片较大)
*/
TIM_IMAGE_COMPRESS_LOW = 0x02,
};
/**
* 图片类型
*/
typedef NS_ENUM(NSInteger, TIM_IMAGE_TYPE){
/**
* 原图
*/
TIM_IMAGE_TYPE_ORIGIN = 0x01,
/**
* 缩略图
*/
TIM_IMAGE_TYPE_THUMB = 0x02,
/**
* 大图
*/
TIM_IMAGE_TYPE_LARGE = 0x04,
};
/**
* 图片格式
*/
typedef NS_ENUM(NSInteger, TIM_IMAGE_FORMAT){
/**
* JPG格式
*/
TIM_IMAGE_FORMAT_JPG = 0x1,
/**
* GIF格式
*/
TIM_IMAGE_FORMAT_GIF = 0x2,
/**
* PNG格式
*/
TIM_IMAGE_FORMAT_PNG = 0x3,
/**
* BMP格式
*/
TIM_IMAGE_FORMAT_BMP = 0x4,
/**
* 未知格式
*/
TIM_IMAGE_FORMAT_UNKNOWN = 0xff,
};
typedef NS_ENUM(NSInteger, TIMLoginStatus) {
/**
* 已登陆
*/
TIM_STATUS_LOGINED = 1,
/**
* 登陆中
*/
TIM_STATUS_LOGINING = 2,
/**
* 无登陆
*/
TIM_STATUS_LOGOUT = 3,
};
typedef NS_ENUM(NSInteger, TIMGroupMemberVisibleType) {
/**
* 未知
*/
TIM_GROUP_MEMBER_VISIBLE_UNKNOWN = 0x00,
/**
* 群组成员不可见
*/
TIM_GROUP_MEMBER_VISIBLE_NO = 0x01,
/**
* 群组成员可见
*/
TIM_GROUP_MEMBER_VISIBLE_YES = 0x02,
};
typedef NS_ENUM(NSInteger, TIMGroupSearchableType) {
/**
* 未知
*/
TIM_GROUP_SEARCHABLE_UNKNOWN = 0x00,
/**
* 群组不能被搜到
*/
TIM_GROUP_SEARCHABLE_NO = 0x01,
/**
* 群组能被搜到
*/
TIM_GROUP_SEARCHABLE_YES = 0x02,
};
/**
* 加群选项
*/
typedef NS_ENUM(NSInteger, TIMGroupAddOpt) {
/**
* 禁止加群
*/
TIM_GROUP_ADD_FORBID = 0,
/**
* 需要管理员审批
*/
TIM_GROUP_ADD_AUTH = 1,
/**
* 任何人可以加入
*/
TIM_GROUP_ADD_ANY = 2,
};
/**
* 群组提示类型
*/
typedef NS_ENUM(NSInteger, TIMGroupTipsType){
/**
* 成员加入
*/
TIM_GROUP_TIPS_JOIN = 1,
/**
* 成员离开
*/
TIM_GROUP_TIPS_QUIT = 2,
/**
* 成员被踢
*/
TIM_GROUP_TIPS_KICK = 3,
/**
* 成员设置管理员
*/
TIM_GROUP_TIPS_SET_ADMIN = 4,
/**
* 成员取消管理员
*/
TIM_GROUP_TIPS_CANCEL_ADMIN = 5,
};
/**
* 群消息接受选项
*/
typedef NS_ENUM(NSInteger, TIMGroupReceiveMessageOpt) {
/**
* 接收消息
*/
TIM_GROUP_RECEIVE_MESSAGE = 0,
/**
* 不接收消息,服务器不进行转发
*/
TIM_GROUP_NOT_RECEIVE_MESSAGE = 1,
/**
* 接受消息,不进行iOS APNs 推送
*/
TIM_GROUP_RECEIVE_NOT_NOTIFY_MESSAGE = 2,
};
/**
* 群Tips类型
*/
typedef NS_ENUM(NSInteger, TIM_GROUP_TIPS_TYPE){
/**
* 邀请加入群 (opUser & groupName & userList)
*/
TIM_GROUP_TIPS_TYPE_INVITE = 0x01,
/**
* 退出群 (opUser & groupName & userList)
*/
TIM_GROUP_TIPS_TYPE_QUIT_GRP = 0x02,
/**
* 踢出群 (opUser & groupName & userList)
*/
TIM_GROUP_TIPS_TYPE_KICKED = 0x03,
/**
* 设置管理员 (opUser & groupName & userList)
*/
TIM_GROUP_TIPS_TYPE_SET_ADMIN = 0x04,
/**
* 取消管理员 (opUser & groupName & userList)
*/
TIM_GROUP_TIPS_TYPE_CANCEL_ADMIN = 0x05,
/**
* 群资料变更 (opUser & groupName & introduction & notification & faceUrl & owner)
*/
TIM_GROUP_TIPS_TYPE_INFO_CHANGE = 0x06,
/**
* 群成员资料变更 (opUser & groupName & memberInfoList)
*/
TIM_GROUP_TIPS_TYPE_MEMBER_INFO_CHANGE = 0x07,
};
/**
* 群Tips类型
*/
typedef NS_ENUM(NSInteger, TIM_GROUP_INFO_CHANGE_TYPE){
/**
* 群名修改
*/
TIM_GROUP_INFO_CHANGE_GROUP_NAME = 0x01,
/**
* 群简介修改
*/
TIM_GROUP_INFO_CHANGE_GROUP_INTRODUCTION = 0x02,
/**
* 群公告修改
*/
TIM_GROUP_INFO_CHANGE_GROUP_NOTIFICATION = 0x03,
/**
* 群头像修改
*/
TIM_GROUP_INFO_CHANGE_GROUP_FACE = 0x04,
/**
* 群主变更
*/
TIM_GROUP_INFO_CHANGE_GROUP_OWNER = 0x05,
};
/**
* 群系统消息类型
*/
typedef NS_ENUM(NSInteger, TIM_GROUP_SYSTEM_TYPE){
/**
* 申请加群请求(只有管理员会收到)
*/
TIM_GROUP_SYSTEM_ADD_GROUP_REQUEST_TYPE = 0x01,
/**
* 申请加群被同意(只有申请人能够收到)
*/
TIM_GROUP_SYSTEM_ADD_GROUP_ACCEPT_TYPE = 0x02,
/**
* 申请加群被拒绝(只有申请人能够收到)
*/
TIM_GROUP_SYSTEM_ADD_GROUP_REFUSE_TYPE = 0x03,
/**
* 被管理员踢出群(只有被踢的人能够收到)
*/
TIM_GROUP_SYSTEM_KICK_OFF_FROM_GROUP_TYPE = 0x04,
/**
* 群被解散(全员能够收到)
*/
TIM_GROUP_SYSTEM_DELETE_GROUP_TYPE = 0x05,
/**
* 创建群消息(创建者能够收到)
*/
TIM_GROUP_SYSTEM_CREATE_GROUP_TYPE = 0x06,
/**
* 邀请入群通知(被邀请者能够收到)
*/
TIM_GROUP_SYSTEM_INVITED_TO_GROUP_TYPE = 0x07,
/**
* 主动退群(主动退群者能够收到)
*/
TIM_GROUP_SYSTEM_QUIT_GROUP_TYPE = 0x08,
/**
* 设置管理员(被设置者接收)
*/
TIM_GROUP_SYSTEM_GRANT_ADMIN_TYPE = 0x09,
/**
* 取消管理员(被取消者接收)
*/
TIM_GROUP_SYSTEM_CANCEL_ADMIN_TYPE = 0x0a,
/**
* 群已被回收(全员接收)
*/
TIM_GROUP_SYSTEM_REVOKE_GROUP_TYPE = 0x0b,
/**
* 邀请入群请求(被邀请者接收)
*/
TIM_GROUP_SYSTEM_INVITE_TO_GROUP_REQUEST_TYPE = 0x0c,
/**
* 邀请加群被同意(只有发出邀请者会接收到)
*/
TIM_GROUP_SYSTEM_INVITE_TO_GROUP_ACCEPT_TYPE = 0x0d,
/**
* 邀请加群被拒绝(只有发出邀请者会接收到)
*/
TIM_GROUP_SYSTEM_INVITE_TO_GROUP_REFUSE_TYPE = 0x0e,
/**
* 用户自定义通知(默认全员接收)
*/
TIM_GROUP_SYSTEM_CUSTOM_INFO = 0xff,
};
typedef NS_ENUM(NSInteger, TIMOfflinePushFlag) {
/**
* 按照默认规则进行推送
*/
TIM_OFFLINE_PUSH_DEFAULT = 0,
/**
* 不进行推送
*/
TIM_OFFLINE_PUSH_NO_PUSH = 1,
};
typedef NS_ENUM(NSInteger, TIMAndroidOfflinePushNotifyMode) {
/**
* 通知栏消息
*/
TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_NOTIFICATION = 0x00,
/**
* 不弹窗,由应用自行处理
*/
TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_CUSTOM = 0x01,
};
/**
* 群成员角色
*/
typedef NS_ENUM(NSInteger, TIMGroupMemberRole) {
/**
* 未定义(没有获取该字段)
*/
TIM_GROUP_MEMBER_UNDEFINED = 0,
/**
* 群成员
*/
TIM_GROUP_MEMBER_ROLE_MEMBER = 200,
/**
* 群管理员
*/
TIM_GROUP_MEMBER_ROLE_ADMIN = 300,
/**
* 群主
*/
TIM_GROUP_MEMBER_ROLE_SUPER = 400,
};
typedef NS_ENUM(NSInteger, TIMFriendAllowType) {
/**
* 同意任何用户加好友
*/
TIM_FRIEND_ALLOW_ANY = 0,
/**
* 需要验证
*/
TIM_FRIEND_NEED_CONFIRM = 1,
/**
* 拒绝任何人加好友
*/
TIM_FRIEND_DENY_ANY = 2,
};
typedef NS_ENUM(NSInteger, TIMGender) {
/**
* 未知性别
*/
TIM_GENDER_UNKNOWN = 0,
/**
* 男性
*/
TIM_GENDER_MALE = 1,
/**
* 女性
*/
TIM_GENDER_FEMALE = 2,
};
/**
* 基本资料标志位
*/
typedef NS_ENUM(NSInteger, TIMProfileFlag) {
/**
* 昵称
*/
TIM_PROFILE_FLAG_NICK = 0x01,
/**
* 好友验证方式
*/
TIM_PROFILE_FLAG_ALLOW_TYPE = (0x01 << 1),
/**
* 头像
*/
TIM_PROFILE_FLAG_FACE_URL = (0x01 << 2),
/**
* 好友备注
*/
TIM_PROFILE_FLAG_REMARK = (0x01 << 3),
/**
* 好友分组
*/
TIM_PROFILE_FLAG_GROUP = (0x01 << 4),
/**
* 用户签名
*/
TIM_PROFILE_FLAG_SELFSIGNATURE = (0x01 << 5),
/**
* 用户性别
*/
TIM_PROFILE_FLAG_GENDER = (0x01 << 6),
/**
* 用户生日
*/
TIM_PROFILE_FLAG_BIRTHDAY = (0x01 << 7),
/**
* 用户区域
*/
TIM_PROFILE_FLAG_LOCATION = (0x01 << 8),
/**
* 用户语言
*/
TIM_PROFILE_FLAG_LANGUAGE = (0x01 << 9),
/**
* 用户等级
*/
TIM_PROFILE_FLAG_LEVEL = (0x01 << 10),
/**
* 用户角色
*/
TIM_PROFILE_FLAG_ROLE = (0x01 << 11),
};
#pragma mark - block回调
/**
* 获取消息回调
*
* @param msgs 消息列表
*/
typedef void (^TIMGetMsgSucc)(NSArray * msgs);
/**
* 一般操作成功回调
*/
typedef void (^TIMSucc)(void);
/**
* 操作失败回调
*
* @param code 错误码
* @param msg 错误描述,配合错误码使用,如果问题建议打印信息定位
*/
typedef void (^TIMFail)(int code, NSString * msg);
/**
* 进度毁掉
*
* @param curSize 已下载大小
* @param totalSize 总大小
*/
typedef void (^TIMProgress)(NSInteger curSize, NSInteger totalSize);
/**
* 登陆成功回调
*/
typedef void (^TIMLoginSucc)(void);
/**
* 获取资源
*
* @param data 资源二进制
*/
typedef void (^TIMGetResourceSucc)(NSData * data);
/**
* 日志回调
*
* @param lvl 输出的日志级别
* @param msg 日志内容
*/
typedef void (^TIMLogFunc)(TIMLogLevel lvl, NSString * msg);
/**
* 上传图片成功回调
*
* @param elem 上传图片成功后elem
*/
typedef void (^TIMUploadImageSucc)(TIMImageElem * elem);
/**
* APNs推送配置更新成功回调
*
* @param config 配置
*/
typedef void (^TIMAPNSConfigSucc)(TIMAPNSConfig* config);
/**
* 群创建成功
*
* @param groupId 群组Id
*/
typedef void (^TIMCreateGroupSucc)(NSString * groupId);
/**
* 好友列表
*
* @param friends 好友列表
*/
typedef void (^TIMFriendSucc)(NSArray * friends);
/**
* 获取资料回调
*
* @param profile 资料
*/
typedef void (^TIMGetProfileSucc)(TIMUserProfile * profile);
#pragma mark - 基本类型
@interface TIMCodingModel : NSObject <NSCoding>
- (void)encodeWithCoder:(NSCoder *)encoder;
- (id)initWithCoder:(NSCoder *)decoder;
@end
@interface TIMSdkConfig : NSObject
/**
* 用户标识接入SDK的应用ID,必填
*/
@property(nonatomic,assign) int sdkAppId;
/**
* 用户的账号类型,必填
*/
@property(nonatomic,strong) NSString * accountType;
/**
* 禁用crash上报,默认上报
*/
@property(nonatomic,assign) BOOL disableCrashReport;
/**
* 禁止在控制台打印log
*/
@property(nonatomic,assign) BOOL disableLogPrint;
/**
* 本地写log文件的等级,默认DEBUG等级
*/
@property(nonatomic,assign) TIMLogLevel logLevel;
/**
* log文件路径,不设置时为默认路径
*/
@property(nonatomic,strong) NSString * logPath;
/**
* 回调给log函数的log等级,默认DEBUG等级
*/
@property(nonatomic,assign) TIMLogLevel logFuncLevel;
/**
* log监听函数
*/
@property(nonatomic,copy) TIMLogFunc logFunc;
/**
* 消息数据库路径,不设置时为默认路径
*/
@property(nonatomic,strong) NSString * dbPath;
/**
* 网络监听器
*/
@property(nonatomic,strong) id<TIMConnListener> connListener;
@end
@interface TIMUserConfig : NSObject
/**
* 禁用本地存储(加载消息扩展包有效)
*/
@property(nonatomic,assign) BOOL disableStorage;
/**
* 禁止自动上报(加载消息扩展包有效)
*/
@property(nonatomic,assign) BOOL disableAutoReport;
/**
* 开启C2C已读回执(加载消息扩展包有效)
*/
@property(nonatomic,assign) BOOL enableReadReceipt;
/**
* 不开启最近联系人(加载消息扩展包有效)
*/
@property(nonatomic,assign) BOOL disableRecnetContact;
/**
* 不通过onNewMessage:抛出最近联系人的最后一条消息(加载消息扩展包有效)
*/
@property(nonatomic,assign) BOOL disableRecentContactNotify;
///**
// * 开启关系链数据本地缓存功能(加载好友扩展包有效)
// */
//@property(nonatomic,assign) BOOL enableFriendshipProxy;
///**
// * 开启群组数据本地缓存功能(加载群组扩展包有效)
// */
//@property(nonatomic,assign) BOOL enableGroupAssistant;
/**
* 设置默认拉取的群组资料
*/
@property(nonatomic,strong) TIMGroupInfoOption * groupInfoOpt;
/**
* 设置默认拉取的群成员资料
*/
@property(nonatomic,strong) TIMGroupMemberInfoOption * groupMemberInfoOpt;
/**
* 设置默认拉取的好友资料
*/
@property(nonatomic,strong) TIMFriendProfileOption * friendProfileOpt;
/**
* 用户登录状态监听器
*/
@property(nonatomic,strong) id<TIMUserStatusListener> userStatusListener;
/**
* 会话刷新监听器(未读计数、已读同步)(加载消息扩展包有效)
*/
@property(nonatomic,strong) id<TIMRefreshListener> refreshListener;
/**
* 消息已读回执监听器(加载消息扩展包有效)
*/
@property(nonatomic,strong) id<TIMMessageReceiptListener> messageReceiptListener;
/**
* 消息svr重写监听器(加载消息扩展包有效)
*/
@property(nonatomic,strong) id<TIMMessageUpdateListener> messageUpdateListener;
/**
* 消息撤回监听器(加载消息扩展包有效)
*/
@property(nonatomic,strong) id<TIMMessageRevokeListener> messageRevokeListener;
/**
* 文件上传进度监听器
*/
@property(nonatomic,strong) id<TIMUploadProgressListener> uploadProgressListener;
/**
* 群组事件通知监听器
*/
@property(nonatomic,strong) id<TIMGroupEventListener> groupEventListener;
///**
// * 关系链数据本地缓存监听器(加载好友扩展包、enableFriendshipProxy有效)
// */
//@property(nonatomic,strong) id<TIMFriendshipListener> friendshipListener;
///**
// * 群组据本地缓存监听器(加载群组扩展包、enableGroupAssistant有效)
// */
//@property(nonatomic,strong) id<TIMGroupListener> groupListener;
@end
/**
* 登陆信息
*/
@interface TIMLoginParam : NSObject
/**
* 用户名
*/
@property(nonatomic,strong) NSString* identifier;
/**
* 鉴权Token
*/
@property(nonatomic,strong) NSString* userSig;
/**
* App用户使用OAuth授权体系分配的Appid
*/
@property(nonatomic,strong) NSString* appidAt3rd;
@end
/**
* APNs 配置
*/
@interface TIMAPNSConfig : NSObject
/**
* 是否开启推送:0-不进行设置 1-开启推送 2-关闭推送
*/
@property(nonatomic,assign) uint32_t openPush;
/**
* C2C消息声音,不设置传入nil
*/
@property(nonatomic,strong) NSString * c2cSound;
/**
* Group消息声音,不设置传入nil
*/
@property(nonatomic,strong) NSString * groupSound;
/**
* Video声音,不设置传入nil
*/
@property(nonatomic,strong) NSString * videoSound;
@end
/**
* SetToken 参数
*/
@interface TIMTokenParam : NSObject
/**
* 获取的客户端Token信息
*/
@property(nonatomic,strong) NSData* token;
/**
* 业务ID,传递证书时分配
*/
@property(nonatomic,assign) uint32_t busiId;
@end
/**
* 切后台参数
*/
@interface TIMBackgroundParam : NSObject
/**
* C2C 未读计数
*/
@property(nonatomic,assign) int c2cUnread;
/**
* 群 未读计数
*/
@property(nonatomic,assign) int groupUnread;
@end
@interface TIMMessageLocator : NSObject
/**
* 所属会话的id
*/
@property(nonatomic,strong) NSString * sessId;
/**
* 所属会话的类型
*/
@property(nonatomic,assign) TIMConversationType sessType;
/**
* 消息序列号
*/
@property(nonatomic,assign) uint64_t seq;
/**
* 消息随机码
*/
@property(nonatomic,assign) uint64_t rand;
/**
* 消息时间戳
*/
@property(nonatomic,assign) time_t time;
/**
* 是否本人消息
*/
@property(nonatomic,assign) BOOL isSelf;
/**
* 是否来自撤销通知
*/
@property(nonatomic,assign) BOOL isFromRevokeNotify;
@end
/**
* 已读回执
*/
@interface TIMMessageReceipt : NSObject
/**
* 已读回执对应的会话(目前只支持C2C会话)
*/
@property(nonatomic,strong) TIMConversation * conversation;
/**
* 收到已读回执时,这个时间戳之前的消息都已读
*/
@property(nonatomic,assign) time_t timestamp;
@end
@interface TIMAndroidOfflinePushConfig : NSObject
/**
* 离线推送时展示标签
*/
@property(nonatomic,strong) NSString * title;
/**
* Android离线Push时声音字段信息
*/
@property(nonatomic,strong) NSString * sound;
/**
* 离线推送时通知形式
*/
@property(nonatomic,assign) TIMAndroidOfflinePushNotifyMode notifyMode;
@end
@interface TIMIOSOfflinePushConfig : NSObject
/**
* 离线Push时声音字段信息
*/
@property(nonatomic,strong) NSString * sound;
/**
* 忽略badge计数
*/
@property(nonatomic,assign) BOOL ignoreBadge;
@end
/**
* 群组内的本人信息
*/
@interface TIMGroupSelfInfo : NSObject
/**
* 加入群组时间
*/
@property(nonatomic,assign) uint32_t joinTime;
/**
* 群组中的角色
*/
@property(nonatomic,assign) TIMGroupMemberRole role;
/**
* 群组消息接收选项
*/
@property(nonatomic,assign) TIMGroupReceiveMessageOpt recvOpt;
/**
* 群组中的未读消息数
*/
@property(nonatomic,assign) uint32_t unReadMessageNum;
@end
/**
* 群资料信息
*/
@interface TIMGroupInfo : TIMCodingModel
/**
* 群组Id
*/
@property(nonatomic,strong) NSString* group;
/**
* 群名
*/
@property(nonatomic,strong) NSString* groupName;
/**
* 群创建人/管理员
*/
@property(nonatomic,strong) NSString * owner;
/**
* 群类型:Private,Public,ChatRoom
*/
@property(nonatomic,strong) NSString* groupType;
/**
* 群创建时间
*/
@property(nonatomic,assign) uint32_t createTime;
/**
* 最近一次群资料修改时间
*/
@property(nonatomic,assign) uint32_t lastInfoTime;
/**
* 最近一次发消息时间
*/
@property(nonatomic,assign) uint32_t lastMsgTime;
/**
* 最大成员数
*/
@property(nonatomic,assign) uint32_t maxMemberNum;
/**
* 群成员数量
*/
@property(nonatomic,assign) uint32_t memberNum;
/**
* 入群类型
*/
@property(nonatomic,assign) TIMGroupAddOpt addOpt;
/**
* 群公告
*/
@property(nonatomic,strong) NSString* notification;
/**
* 群简介
*/
@property(nonatomic,strong) NSString* introduction;
/**
* 群头像
*/
@property(nonatomic,strong) NSString* faceURL;
/**
* 最后一条消息
*/
@property(nonatomic,strong) TIMMessage* lastMsg;
/**
* 在线成员数量
*/
@property(nonatomic,assign) uint32_t onlineMemberNum;
/**
* 群组是否被搜索类型
*/
@property(nonatomic,assign) TIMGroupSearchableType isSearchable;
/**
* 群组成员可见类型
*/
@property(nonatomic,assign) TIMGroupMemberVisibleType isMemberVisible;
/**
是否全员禁言
*/
@property(nonatomic,assign) BOOL allShutup;
/**
* 群组中的本人信息
*/
@property(nonatomic,strong) TIMGroupSelfInfo* selfInfo;
/**
* 自定义字段集合,key是NSString*类型,value是NSData*类型
*/
@property(nonatomic,strong) NSDictionary* customInfo;
@end
/**
* 事件上报信息
*/
@interface TIMEventReportItem : NSObject
/**
* 事件id
*/
@property(nonatomic,assign) uint32_t event;
/**
* 错误码
*/
@property(nonatomic,assign) uint32_t code;
/**
* 错误描述
*/
@property(nonatomic,strong) NSString * desc;
/**
* 事件延迟(单位ms)
*/
@property(nonatomic,assign) uint32_t delay;
@end
@interface TIMGroupInfoOption : NSObject
/**
* 需要获取的群组信息标志(TIMGetGroupBaseInfoFlag),默认为0xffffff
*/
@property(nonatomic,assign) uint64_t groupFlags;
/**
* 需要获取群组资料的自定义信息(NSString*)列表
*/
@property(nonatomic,strong) NSArray * groupCustom;
@end
@interface TIMGroupMemberInfoOption : NSObject
/**
* 需要获取的群成员标志(TIMGetGroupMemInfoFlag),默认为0xffffff
*/
@property(nonatomic,assign) uint64_t memberFlags;
/**
* 需要获取群成员资料的自定义信息(NSString*)列表
*/
@property(nonatomic,strong) NSArray * memberCustom;
@end
/**
* 成员操作返回值
*/
@interface TIMGroupMemberInfo : TIMCodingModel
/**
* 被操作成员
*/
@property(nonatomic,strong) NSString* member;
/**
* 群名片
*/
@property(nonatomic,strong) NSString* nameCard;
/**
* 加入群组时间
*/
@property(nonatomic,assign) time_t joinTime;
/**
* 成员类型
*/
@property(nonatomic,assign) TIMGroupMemberRole role;
/**
* 禁言结束时间(时间戳)
*/
@property(nonatomic,assign) uint32_t silentUntil;
/**
* 自定义字段集合,key是NSString*类型,value是NSData*类型
*/
@property(nonatomic,strong) NSDictionary* customInfo;
@end
@interface TIMFriendProfileOption : NSObject
/**
* 需要获取的好友信息标志(TIMProfileFlag),默认为0xffffff
*/
@property(nonatomic,assign) uint64_t friendFlags;
/**
* 需要获取的好友自定义信息(NSString*)列表
*/
@property(nonatomic,strong) NSArray * friendCustom;
/**
* 需要获取的用户自定义信息(NSString*)列表
*/
@property(nonatomic,strong) NSArray * userCustom;
@end
/**
* 好友资料
*/
@interface TIMUserProfile : TIMCodingModel
/**
* 用户identifier
*/
@property(nonatomic,strong) NSString* identifier;
/**
* 用户昵称
*/
@property(nonatomic,strong) NSString* nickname;
/**
* 用户备注(最大96字节,获取自己资料时,该字段为空)
*/
@property(nonatomic,strong) NSString* remark;
/**
* 好友验证方式
*/
@property(nonatomic,assign) TIMFriendAllowType allowType;
/**
* 用户头像
*/
@property(nonatomic,strong) NSString* faceURL;
/**
* 用户签名
*/
@property(nonatomic,strong) NSData* selfSignature;
/**
* 好友性别
*/
@property(nonatomic,assign) TIMGender gender;
/**
* 好友生日
*/
@property(nonatomic,assign) uint32_t birthday;
/**
* 好友区域
*/
@property(nonatomic,strong) NSData* location;
/**
* 好友语言
*/
@property(nonatomic,assign) uint32_t language;
/**
* 等级
*/
@property(nonatomic,assign) uint32_t level;
/**
* 角色
*/
@property(nonatomic,assign) uint32_t role;
/**
* 好友分组名称 NSString* 列表
*/
@property(nonatomic,strong) NSArray* friendGroups;
/**
* 自定义字段集合,key是NSString类型,value是NSData类型或者NSNumber类型
* (key值按照后台配置的字符串传入)
*/
@property(nonatomic,strong) NSDictionary* customInfo;
@end
#endif
... ...
//
// TIMConversation+MsgExt.h
// IMMessageExt
//
// Created by tomzhu on 2016/12/27.
//
//
#ifndef TIMConversation_h
#define TIMConversation_h
#import "ImSDK.h"
#import "TIMMessage+MsgExt.h"
@interface TIMConversation (MsgExt)
/**
* 保存消息到消息列表,这里只保存在本地
*
* @param msg 消息体
* @param sender 发送方
* @param isReaded 是否已读,如果发送方是自己,默认已读
*
* @return 0 成功
*/
- (int)saveMessage:(TIMMessage*)msg sender:(NSString*)sender isReaded:(BOOL)isReaded;
/**
* 获取会话消息
*
* @param count 获取数量
* @param last 上次最后一条消息
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)getMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
/**
* 向前获取会话消息
*
* @param count 获取数量
* @param last 上次最后一条消息
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)getMessageForward:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
/**
* 获取本地会话消息
*
* @param count 获取数量
* @param last 上次最后一条消息
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)getLocalMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
/**
* 获取会话消息
*
* @param locators 消息定位符(TIMMessageLocator)数组
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)findMessages:(NSArray*)locators succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
/**
* 撤回消息(仅C2C和GROUP会话有效、onlineMessage无效、AVChatRoom和BChatRoom无效)
*
* @param msg 被撤回的消息
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)revokeMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 同步本会话的消息撤回通知(仅GROUP会话有效)
*
* @param succ 成功时回调,同步的通知会通过TIMMessageRevokeListener抛出
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)syncRevokeNotify:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 删除本地会话消息
*
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)deleteLocalMessage:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 设置已读消息
*
* @param readed 会话内最近一条已读的消息,nil表示上报最新消息
*
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 表示成功
*/
- (int)setReadMessage:(TIMMessage*)readed succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 获取该会话的未读计数
*
* @return 返回未读计数
*/
- (int)getUnReadMessageNum;
/**
* 获取最后一条消息
*
* @return 最后一条消息
*/
- (TIMMessage*)getLastMsg;
/**
* 将消息导入本地数据库
*
* @param msgs 消息(TIMMessage*)列表
*
* @return 0 成功
*/
- (int)importMessages:(NSArray*)msgs;
/**
* 设置会话草稿
*
* @param draft 草稿内容
*
* @return 0 成功
*/
- (int)setDraft:(TIMMessageDraft*)draft;
/**
* 获取会话草稿
*
* @return 草稿内容,没有草稿返回nil
*/
- (TIMMessageDraft*)getDraft;
/**
* 禁用本会话的存储,只对当前初始化有效,重启后需要重新设置
* 需要 initSdk 之后调用
*/
- (void)disableStorage;
@end
#endif /* TIMConversation_h */
... ...
//
// TIMConversation.h
// ImSDK
//
// Created by bodeng on 28/1/15.
// Copyright (c) 2015 tencent. All rights reserved.
//
#ifndef ImSDK_TIMConversation_h
#define ImSDK_TIMConversation_h
#import "TIMComm.h"
#import "TIMCallback.h"
@class TIMMessage;
/**
* 会话
*/
@interface TIMConversation : NSObject
/**
* 发送消息
*
* @param msg 消息体
* @param succ 发送成功时回调
* @param fail 发送失败时回调
*
* @return 0 本次操作成功
*/
- (int)sendMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 发送在线消息(服务器不保存消息)
*
* @param msg 消息体
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)sendOnlineMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 获取会话人,单聊为对方账号,群聊为群组Id
*
* @return 会话人
*/
- (NSString*)getReceiver;
/**
* 获取群名称(只有群会话有效)
*
* @return 群名称
*/
- (NSString*)getGroupName;
/**
* 获取会话类型
*
* @return 会话类型
*/
- (TIMConversationType)getType;
/**
* 获取该会话所属用户的id
*
* @return 用户id
*/
- (NSString*)getSelfIdentifier;
@end
#endif
... ...
//
// TIMGroupManager+Ext.h
// IMGroupExt
//
// Created by tomzhu on 2017/2/9.
//
//
#ifndef TIMGroupManager_Ext_h
#define TIMGroupManager_Ext_h
#import "ImSDK.h"
#import "TIMComm+Group.h"
@interface TIMGroupManager (Ext)
/**
* 创建私有群
*
* @param members 群成员,NSString* 数组
* @param groupName 群名
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)createPrivateGroup:(NSArray*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 创建公开群
*
* @param members 群成员,NSString* 数组
* @param groupName 群名
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)createPublicGroup:(NSArray*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 创建聊天室
*
* @param members 群成员,NSString* 数组
* @param groupName 群名
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)createChatRoomGroup:(NSArray*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 创建音视频聊天室(可支持超大群,详情可参考wiki文档)
*
* @param groupName 群名
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)createAVChatRoomGroup:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 创建群组
*
* @param groupInfo 群组信息
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)createGroup:(TIMCreateGroupInfo*)groupInfo succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 邀请好友入群
*
* @param group 群组Id
* @param members 要加入的成员列表(NSString* 类型数组)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)inviteGroupMember:(NSString*)group members:(NSArray*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 删除群成员
*
* @param group 群组Id
* @param reason 删除原因
* @param members 要删除的成员列表
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)deleteGroupMemberWithReason:(NSString*)group reason:(NSString*)reason members:(NSArray*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 获取群公开信息
* @param groups 群组Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)getGroupPublicInfo:(NSArray*)groups succ:(TIMGroupListSucc)succ fail:(TIMFail)fail;
/**
* 获取群列表
*
* @param succ 成功回调,NSArray列表为 TIMGroupInfo,结构体只包含 group\groupName\groupType\faceUrl\allShutup\selfInfo 信息
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)getGroupList:(TIMGroupListSucc)succ fail:(TIMFail)fail;
/**
* 获取群信息
*
* @param succ 成功回调,不包含 selfInfo信息
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)getGroupInfo:(NSArray*)groups succ:(TIMGroupListSucc)succ fail:(TIMFail)fail;
/**
* 获取本人在群组内的成员信息
*
* @param group 群组Id
* @param succ 成功回调,返回信息
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)getGroupSelfInfo:(NSString*)group succ:(TIMGroupSelfSucc)succ fail:(TIMFail)fail;
/**
* 获取接受消息选项
*
* @param group 群组Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)getReciveMessageOpt:(NSString*)group succ:(TIMGroupReciveMessageOptSucc)succ fail:(TIMFail)fail;
/**
* 获取群成员列表
*
* @param group 群组Id
* @param succ 成功回调(TIMGroupMemberInfo列表)
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)getGroupMembers:(NSString*)group succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 获取群组指定成员的信息
*
* @param group 群组Id
* @param members 成员Id(NSString*)列表
* @param succ 成功回调(TIMGroupMemberInfo列表)
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)getGroupMembersInfo:(NSString*)group members:(NSArray*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 获取指定类型的成员列表(支持按字段拉取,分页)
*
* @param group 群组Id:(NSString*) 列表
* @param filter 群成员角色过滤方式
* @param flags 拉取资料标志
* @param custom 要获取的自定义key(NSString*)列表
* @param nextSeq 分页拉取标志,第一次拉取填0,回调成功如果不为零,需要分页,传入再次拉取,直至为0
* @param succ 成功回调
* @param fail 失败回调
*/
- (int)getGroupMembers:(NSString*)group ByFilter:(TIMGroupMemberFilter)filter flags:(TIMGetGroupMemInfoFlag)flags custom:(NSArray*)custom nextSeq:(uint64_t)nextSeq succ:(TIMGroupMemberSuccV2)succ fail:(TIMFail)fail;
/**
* 修改群名
*
* @param group 群组Id
* @param groupName 新群名
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupName:(NSString*)group groupName:(NSString*)groupName succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群简介
*
* @param group 群组Id
* @param introduction 群简介(最长120字节)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupIntroduction:(NSString*)group introduction:(NSString*)introduction succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群公告
*
* @param group 群组Id
* @param notification 群公告(最长150字节)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupNotification:(NSString*)group notification:(NSString*)notification succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群头像
*
* @param group 群组Id
* @param url 群头像地址(最长100字节)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupFaceUrl:(NSString*)group url:(NSString*)url succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改加群选项
*
* @param group 群组Id
* @param opt 加群选项,详见 TIMGroupAddOpt
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupAddOpt:(NSString*)group opt:(TIMGroupAddOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群自定义字段集合
*
* @param group 群组Id
* @param customInfo 自定义字段集合,key是NSString*类型,value是NSData*类型
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupCustomInfo:(NSString*)group customInfo:(NSDictionary*)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 转让群给新群主
*
* @param group 群组Id
* @param identifier 新的群主Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupOwner:(NSString*)group user:(NSString*)identifier succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改接受消息选项
*
* @param group 群组Id
* @param opt 接受消息选项,详见 TIMGroupReceiveMessageOpt
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyReciveMessageOpt:(NSString*)group opt:(TIMGroupReceiveMessageOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群成员角色
*
* @param group 群组Id
* @param identifier 被修改角色的用户identifier
* @param role 角色(注意:不能修改为群主),详见 TIMGroupMemberRole
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupMemberInfoSetRole:(NSString*)group user:(NSString*)identifier role:(TIMGroupMemberRole)role succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 禁言用户(只有管理员或群主能够调用)
*
* @param group 群组Id
* @param identifier 被禁言的用户identifier
* @param stime 禁言时间
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupMemberInfoSetSilence:(NSString*)group user:(NSString*)identifier stime:(uint32_t)stime succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群名片(只有本人、管理员或群主能够调用)
*
* @param group 群组Id
* @param identifier 被操作用户identifier
* @param nameCard 群名片
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupMemberInfoSetNameCard:(NSString*)group user:(NSString*)identifier nameCard:(NSString*)nameCard succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群成员自定义字段集合
*
* @param group 群组Id
* @param identifier 被操作用户identifier
* @param customInfo 自定义字段集合,key是NSString*类型,value是NSData*类型
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupMemberInfoSetCustomInfo:(NSString*)group user:(NSString*)identifier customInfo:(NSDictionary*)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群组是否可被搜索属性
*
* @param group 群组Id
* @param searchable 是否能被搜索
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupSearchable:(NSString*)group searchable:(BOOL)searchable succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群组成员是否可见属性
*
* @param group 群组Id
* @param visible 是否可见
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupMemberVisible:(NSString*)group visible:(BOOL)visible succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群组全员禁言属性
*
* @param group 群组Id
* @param shutup 是否禁言
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)modifyGroupAllShutup:(NSString*)group shutup:(BOOL)shutup succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 获取群组未决列表
*
* @param option 未决参数配置
* @param succ 成功回调,返回未决列表
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)getPendencyFromServer:(TIMGroupPendencyOption*)option succ:(TIMGetGroupPendencyListSucc)succ fail:(TIMFail)fail;
/**
* 群未决已读上报
*
* @param timestamp 上报已读时间戳
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)pendencyReport:(uint64_t)timestamp succ:(TIMSucc)succ fail:(TIMFail)fail;
#pragma mark - 开启本地缓存后有效
/**
* 获取用户所在群组信息
*
* @param groups 群组id(NSString*)列表,nil时返回群组列表
*
* @return 群组信息(TIMGroupInfo*)列表,assistant未同步时返回nil
*/
- (NSArray*)getGroupInfo:(NSArray*)groups;
@end
#endif /* TIMGroupManager_Ext_h */
... ...
//
// TIMGroupManager.h
// ImSDK
//
// Created by bodeng on 17/3/15.
// Copyright (c) 2015 tencent. All rights reserved.
//
#ifndef ImSDK_TIMGroupManager_h
#define ImSDK_TIMGroupManager_h
#import "TIMComm.h"
@interface TIMGroupManager : NSObject
/**
* 获取群管理器实例
*
* @return 管理器实例
*/
+ (TIMGroupManager*)sharedInstance;
/**
* 创建群组
*
* @param type 群类型,Private,Public,ChatRoom,AVChatRoom
* @param groupId 自定义群组id,为空时系统自动分配
* @param groupName 群组名称
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)createGroup:(NSString*)type groupId:(NSString*)groupId groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 解散群组
*
* @param group 群组Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)deleteGroup:(NSString*)group succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 申请加群
*
* @param group 申请加入的群组Id
* @param msg 申请消息
* @param succ 成功回调(申请成功等待审批)
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)joinGroup:(NSString*)group msg:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 主动退出群组
*
* @param group 群组Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)quitGroup:(NSString*)group succ:(TIMSucc)succ fail:(TIMFail)fail;
@end
#endif
... ...
//
// TIMManager+MsgExt.h
// IMMessageExt
//
// Created by tomzhu on 2017/1/11.
//
//
#ifndef TIMManager_MsgExt_h
#define TIMManager_MsgExt_h
#import "ImSDK.h"
#import "TIMComm+MsgExt.h"
@class TIMMessage;
@interface TIMManager (MsgExt)
/**
* 发送消息给多个用户
*
* @param msg 发送的消息
* @param users 目标用户的id列表
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 发送成功
*/
- (int)sendMessage:(TIMMessage*)msg toUsers:(NSArray*)users succ:(TIMSucc)succ fail:(TIMSendToUsersFail)fail;
/**
* 获取会话(TIMConversation*)列表
*
* @return 会话列表
*/
- (NSArray*)getConversationList;
/**
* 删除会话
*
* @param type 会话类型,TIM_C2C 表示单聊 TIM_GROUP 表示群聊
* @param receiver 用户identifier 或者 群组Id
*
* @return TRUE:删除成功 FALSE:删除失败
*/
- (BOOL)deleteConversation:(TIMConversationType)type receiver:(NSString*)receiver;
/**
* 删除会话和消息
*
* @param type 会话类型,TIM_C2C 表示单聊 TIM_GROUP 表示群聊
* @param receiver 用户identifier 或者 群组Id
*
* @return TRUE:删除成功 FALSE:删除失败
*/
- (BOOL)deleteConversationAndMessages:(TIMConversationType)type receiver:(NSString*)receiver;
/**
* 获取会话数量
*
* @return 会话数量
*/
- (int)conversationCount;
/**
* 初始化存储,仅查看历史消息时使用,如果要收发消息等操作,如login成功,不需要调用此函数
*
* @param param 登陆参数(userSig 不用填写)
* @param succ 成功回调,收到回调时,可以获取会话列表和消息
* @param fail 失败回调
*
* @return 0 请求成功
*/
- (int)initStorage:(TIMLoginParam*)param succ:(TIMLoginSucc)succ fail:(TIMFail)fail;
@end
#endif /* TIMManager_MsgExt_h */
... ...
//
// TIMManager.h
// ImSDK
//
// Created by bodeng on 28/1/15.
// Copyright (c) 2015 tencent. All rights reserved.
//
#ifndef ImSDK_TIMManager_h
#define ImSDK_TIMManager_h
#import "TIMComm.h"
#import "TIMCallback.h"
@class TIMGroupManager;
//@class TIMFriendshipManager;
/////////////////////////////////////////////////////////
/// Tencent 开放 SDK API
/////////////////////////////////////////////////////////
/**
* 通讯管理
*/
@interface TIMManager : NSObject
/**
* 获取管理器实例
*
* @return 管理器实例
*/
+ (TIMManager*)sharedInstance;
/**
* 初始化SDK
*
* @param config 配置信息,全局有效
*
* @return 0 成功
*/
- (int)initSdk:(TIMSdkConfig*)config;
/**
* 获取全局配置
*
* @return 全局配置
*/
- (TIMSdkConfig*)getGlobalConfig;
/**
* 初始化当前manager,在initSdk:后调用,login:前调用
*
* @param config 配置信息,对当前TIMManager有效
*
* @return 0 成功
*/
- (int)setUserConfig:(TIMUserConfig*)config;
/**
* 获取当前manager绑定用户的配置
*
* @return 当前manager绑定用户的配置
*/
- (TIMUserConfig*)getUserConfig;
/**
* 添加消息回调(重复添加无效)
*
* @param listener 回调
*
* @return 成功
*/
- (int)addMessageListener:(id<TIMMessageListener>)listener;
/**
* 移除消息回调
*
* @param listener 回调
*
* @return 成功
*/
- (int)removeMessageListener:(id<TIMMessageListener>)listener;
/**
* 登陆
*
* @param param 登陆参数
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 请求成功
*/
- (int)login: (TIMLoginParam*)param succ:(TIMLoginSucc)succ fail:(TIMFail)fail;
/**
* 获取当前登陆的用户
*
* @return 如果登陆返回用户的identifier,如果未登录返回nil
*/
- (NSString*)getLoginUser;
/**
* 获取当前登录状态
*
* @return 登录状态
*/
- (TIMLoginStatus)getLoginStatus;
/**
* 登出
*
* @param succ 成功回调,登出成功
* @param fail 失败回调,返回错误吗和错误信息
*
* @return 0 发送登出包成功,等待回调
*/
- (int)logout:(TIMLoginSucc)succ fail:(TIMFail)fail;
#pragma mark - 消息会话操作
/**
* 获取会话
*
* @param type 会话类型,TIM_C2C 表示单聊 TIM_GROUP 表示群聊
* TIM_SYSTEM 表示系统会话
* @param receiver C2C 为对方用户 identifier,GROUP 为群组Id,SYSTEM为@""
*
* @return 会话对象
*/
- (TIMConversation*)getConversation:(TIMConversationType)type receiver:(NSString*)receiver;
#pragma mark - APNs推送
/**
* 设置Token,需要登录后调用
*
* @param token token信息
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)setToken:(TIMTokenParam*)token succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 设置APNS配置
*
* @param config APNS配置
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)setAPNS:(TIMAPNSConfig*)config succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 获取APNS配置
*
* @param succ 成功回调,返回配置信息
* @param fail 失败回调
*
* @return 0 成功
*/
- (int)getAPNSConfig:(TIMAPNSConfigSucc)succ fail:(TIMFail)fail;
/**
* app 切后台时调用
*
* @param param 上报参数
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 表示成功
*/
- (int)doBackground:(TIMBackgroundParam*)param succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 切前台
*
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 表示成功
*/
- (int)doForeground:(TIMSucc)succ fail:(TIMFail)fail;
#pragma mark - 调试使用
/**
* 获取网络状态
*/
- (TIMNetworkStatus)networkStatus;
/**
* 设置环境(在InitSdk之前调用,注意:除非是IM工作人员指定要求设置,否则不需要调用此接口)
*
* @param env 0 正式环境(默认)
* 1 测试环境
*/
- (void)setEnv:(int)env;
/**
* 获取环境类型
*
* @return env 0 正式环境(默认)
* 1 测试环境
* 2 beta 环境
*/
- (int)getEnv;
/**
* 获取版本号
*
* @return 返回版本号,字符串表示,例如v1.1.1
*/
- (NSString*)GetVersion;
/**
* 获取联网SDK的版本号
*
* @return 返回版本号
*/
- (NSString*)GetQALVersion;
/**
* 打印日志,通过ImSDK提供的日志功能打印日志
*
* @param level 日志级别
* @param tag 模块tag
* @param msg 要输出的日志内容
*/
- (void)log:(TIMLogLevel)level tag:(NSString*)tag msg:(NSString*)msg;
#pragma mark - 登录多账号
/**
* 创建新的管理器类型(多用户登陆时使用,否则可直接调用sharedInstance)
*
* @return 管理器实例
*/
+ (TIMManager*)newManager;
/**
* 获取管理器类型(多用户登陆时使用,否则可直接调用sharedInstance)
*
* @param identifier 用户identifier
*
* @return 对应管理器类型,如果没有创建过,返回nil
*/
+ (TIMManager*)getManager:(NSString*)identifier;
/**
* 销毁管理器(多用户登陆时使用,否则可直接调用sharedInstance)
*
* @param manager 需要销毁的管理器
*/
+ (void)deleteManager:(TIMManager*)manager;
/**
* 获取好友管理器
*
* @return 好友管理器
*/
//- (TIMFriendshipManager*)friendshipManager;
/**
* 获取群管理器
*
* @return 群管理器
*/
- (TIMGroupManager*)groupManager;
#pragma mark - 内部使用的方法
/**
* 获取日志文件路径
*/
- (NSString*)getLogPath;
/**
* 是否开启sdk日志打印
*/
- (BOOL)getIsLogPrintEnabled;
/**
* 获取日志级别
*
* @return 返回日志级别
*/
-(TIMLogLevel) getLogLevel;
@end
#endif
... ...
//
// TIMMessage+MsgExt.h
// IMMessageExt
//
// Created by tomzhu on 2016/12/27.
//
//
#ifndef TIMMessage_h
#define TIMMessage_h
#import "ImSDK.h"
#import "TIMComm+MsgExt.h"
#pragma mark - Elem类型
/**
* 关系链变更消息
*/
@interface TIMSNSSystemElem : TIMElem
/**
* 操作类型
*/
@property(nonatomic,assign) TIM_SNS_SYSTEM_TYPE type;
/**
* 被操作用户列表:TIMSNSChangeInfo 列表
*/
@property(nonatomic,strong) NSArray * users;
/**
* 未决已读上报时间戳 type=TIM_SNS_SYSTEM_PENDENCY_REPORT 有效
*/
@property(nonatomic,assign) uint64_t pendencyReportTimestamp;
/**
* 推荐已读上报时间戳 type=TIM_SNS_SYSTEM_RECOMMEND_REPORT 有效
*/
@property(nonatomic,assign) uint64_t recommendReportTimestamp;
/**
* 已决已读上报时间戳 type=TIM_SNS_SYSTEM_DECIDE_REPORT 有效
*/
@property(nonatomic,assign) uint64_t decideReportTimestamp;
@end
/**
* 资料变更系统消息
*/
@interface TIMProfileSystemElem : TIMElem
/**
* 变更类型
*/
@property(nonatomic,assign) TIM_PROFILE_SYSTEM_TYPE type;
/**
* 资料变更的用户
*/
@property(nonatomic,strong) NSString * fromUser;
/**
* 资料变更的昵称(如果昵称没有变更,该值为nil)
*/
@property(nonatomic,strong) NSString * nickName;
@end
#pragma mark - 消息扩展
@interface TIMMessage (MsgExt)
/**
* 是否已读
*
* @return TRUE 已读 FALSE 未读
*/
- (BOOL)isReaded;
/**
* 对方是否已读(仅C2C消息有效)
*
* @return TRUE 已读 FALSE 未读
*/
- (BOOL)isPeerReaded;
/**
* 删除消息
*
* @return TRUE 成功
*/
- (BOOL)remove;
/**
* 消息有断层,OnNewMessage回调收到消息,如果有断层,需要重新GetMessage补全(有C2C漫游的情况下使用)
*
* @return TRUE 有断层
* FALSE 无断层
*/
- (BOOL)hasGap;
/**
* 设置自定义整数,默认为0
*
* @param param 设置参数
*
* @return TRUE 设置成功
*/
- (BOOL)setCustomInt:(int32_t)param;
/**
* 设置自定义数据,默认为""
*
* @param data 设置参数
*
* @return TRUE 设置成功
*/
- (BOOL)setCustomData:(NSData*)data;
/**
* 获取CustomInt
*
* @return CustomInt
*/
- (int32_t)customInt;
/**
* 获取CustomData
*
* @return CustomData
*/
- (NSData*)customData;
/**
* 获取消息定位符
*
* @return locator
*/
- (TIMMessageLocator*)locator;
/**
* 是否为locator对应的消息
*
* @param locator 消息定位符
*
* @return YES 是对应的消息
*/
- (BOOL)respondsToLocator:(TIMMessageLocator*)locator;
/**
* 设置消息时间戳,导入到本地时有效
*
* @param time 时间戳
*
* @return 0 成功
*/
- (int)setTime:(time_t)time;
/**
* 设置消息发送方(需要先将消息到导入到本地,调用 convertToImportedMsg 方法)
*
* @param sender 发送方Id
*
* @return 0 成功
*/
- (int)setSender:(NSString*)sender;
/**
* 将消息导入到本地
*
* @return 0 成功
*/
- (int)convertToImportedMsg;
@end
#pragma mark - 消息草稿
@interface TIMMessageDraft : NSObject
/**
* 设置自定义数据
*
* @param userData 自定义数据
*
* @return 0 成功
*/
- (int)setUserData:(NSData*)userData;
/**
* 获取自定义数据
*
* @return 自定义数据
*/
- (NSData*)getUserData;
/**
* 增加Elem
*
* @param elem elem结构
*
* @return 0 表示成功
* 1 禁止添加Elem(文件或语音多于两个Elem)
* 2 未知Elem
*/
- (int)addElem:(TIMElem*)elem;
/**
* 获取对应索引的Elem
*
* @param index 对应索引
*
* @return 返回对应Elem
*/
- (TIMElem*)getElem:(int)index;
/**
* 获取Elem数量
*
* @return elem数量
*/
- (int)elemCount;
/**
* 草稿生成对应的消息
*
* @return 消息
*/
- (TIMMessage*)transformToMessage;
/**
* 当前消息的时间戳
*
* @return 时间戳
*/
- (NSDate*)timestamp;
@end
#endif /* TIMMessage_h */
... ...
//
// TIMMessage.h
// ImSDK
//
// Created by bodeng on 28/1/15.
// Copyright (c) 2015 tencent. All rights reserved.
//
#ifndef ImSDK_TIMMessage_h
#define ImSDK_TIMMessage_h
#import <Foundation/Foundation.h>
#import "TIMComm.h"
#import "TIMCallback.h"
@class TIMUserProfile;
@class TIMGroupMemberInfo;
@class TIMConversation;
/**
* 消息Elem基类
*/
@interface TIMElem : NSObject
@end
/**
* 文本消息Elem
*/
@interface TIMTextElem : TIMElem
/**
* 消息文本
*/
@property(nonatomic,strong) NSString * text;
@end
#pragma mark - 普通消息类型
@interface TIMImage : NSObject
/**
* 图片ID,内部标识,可用于外部缓存key
*/
@property(nonatomic,strong) NSString * uuid;
/**
* 图片类型
*/
@property(nonatomic,assign) TIM_IMAGE_TYPE type;
/**
* 图片大小
*/
@property(nonatomic,assign) int size;
/**
* 图片宽度
*/
@property(nonatomic,assign) int width;
/**
* 图片高度
*/
@property(nonatomic,assign) int height;
/**
* 下载URL
*/
@property(nonatomic, strong) NSString * url;
/**
* 获取图片
*
* @param path 图片保存路径
* @param succ 成功回调,返回图片数据
* @param fail 失败回调,返回错误码和错误描述
*/
- (void)getImage:(NSString*)path succ:(TIMSucc)succ fail:(TIMFail)fail;
- (void)getImage:(NSString*)path progress:(TIMProgress)progress succ:(TIMSucc)succ fail:(TIMFail)fail;
@end
/**
* 图片消息Elem
*/
@interface TIMImageElem : TIMElem
/**
* 要发送的图片路径
*/
@property(nonatomic,strong) NSString * path;
/**
* 所有类型图片,只读
*/
@property(nonatomic,strong) NSArray * imageList;
/**
* 上传时任务Id,可用来查询上传进度
*/
@property(nonatomic,assign) uint32_t taskId;
/**
* 图片压缩等级,详见 TIM_IMAGE_COMPRESS_TYPE(仅对jpg格式有效)
*/
@property(nonatomic,assign) TIM_IMAGE_COMPRESS_TYPE level;
/**
* 图片格式,详见 TIM_IMAGE_FORMAT
*/
@property(nonatomic,assign) TIM_IMAGE_FORMAT format;
@end
/**
* 文件消息Elem
*/
@interface TIMFileElem : TIMElem
/**
* 上传时任务Id,可用来查询上传进度
*/
@property(nonatomic,assign) uint32_t taskId;
/**
* 上传时,文件的路径(设置path时,优先上传文件)
*/
@property(nonatomic,strong) NSString * path;
/**
* 文件内部ID
*/
@property(nonatomic,strong) NSString * uuid;
/**
* 文件大小
*/
@property(nonatomic,assign) int fileSize;
/**
* 文件显示名,发消息时设置
*/
@property(nonatomic,strong) NSString * filename;
/**
* 获取文件数据到指定路径的文件中
*
* @param path 文件保存路径
* @param succ 成功回调,返回数据
* @param fail 失败回调,返回错误码和错误描述
*/
- (void)getFile:(NSString*)path succ:(TIMSucc)succ fail:(TIMFail)fail;
- (void)getFile:(NSString*)path progress:(TIMProgress)progress succ:(TIMSucc)succ fail:(TIMFail)fail;
@end
/**
* 语音消息Elem
*/
@interface TIMSoundElem : TIMElem
/**
* 上传时任务Id,可用来查询上传进度
*/
@property(nonatomic,assign) uint32_t taskId;
/**
* 上传时,语音文件的路径,接收时使用getSound获得数据
*/
@property(nonatomic,strong) NSString * path;
/**
* 语音消息内部ID
*/
@property(nonatomic,strong) NSString * uuid;
/**
* 语音数据大小
*/
@property(nonatomic,assign) int dataSize;
/**
* 语音长度(秒),发送消息时设置
*/
@property(nonatomic,assign) int second;
/**
* 获取语音数据到指定路径的文件中
*
* @param path 语音保存路径
* @param succ 成功回调
* @param fail 失败回调,返回错误码和错误描述
*/
- (void)getSound:(NSString*)path succ:(TIMSucc)succ fail:(TIMFail)fail;
- (void)getSound:(NSString*)path progress:(TIMProgress)progress succ:(TIMSucc)succ fail:(TIMFail)fail;
@end
/**
* 地理位置Elem
*/
@interface TIMLocationElem : TIMElem
/**
* 地理位置描述信息,发送消息时设置
*/
@property(nonatomic,strong) NSString * desc;
/**
* 纬度,发送消息时设置
*/
@property(nonatomic,assign) double latitude;
/**
* 经度,发送消息时设置
*/
@property(nonatomic,assign) double longitude;
@end
/**
* 自定义消息类型
*/
@interface TIMCustomElem : TIMElem
/**
* 自定义消息二进制数据
*/
@property(nonatomic,strong) NSData * data;
/**
* 自定义消息描述信息,做离线Push时文本展示(已废弃,请使用TIMMessage中offlinePushInfo进行配置)
*/
@property(nonatomic,strong) NSString * desc DEPRECATED_ATTRIBUTE;
/**
* 离线Push时扩展字段信息(已废弃,请使用TIMMessage中offlinePushInfo进行配置)
*/
@property(nonatomic,strong) NSString * ext DEPRECATED_ATTRIBUTE;
/**
* 离线Push时声音字段信息(已废弃,请使用TIMMessage中offlinePushInfo进行配置)
*/
@property(nonatomic,strong) NSString * sound DEPRECATED_ATTRIBUTE;
@end
/**
* 表情消息类型
*/
@interface TIMFaceElem : TIMElem
/**
* 表情索引,用户自定义
*/
@property(nonatomic, assign) int index;
/**
* 额外数据,用户自定义
*/
@property(nonatomic,strong) NSData * data;
@end
@interface TIMVideo : NSObject
/**
* 视频ID,不用设置
*/
@property(nonatomic,strong) NSString * uuid;
/**
* 视频文件类型,发送消息时设置
*/
@property(nonatomic,strong) NSString * type;
/**
* 视频大小,不用设置
*/
@property(nonatomic,assign) int size;
/**
* 视频时长,发送消息时设置
*/
@property(nonatomic,assign) int duration;
/**
* 获取视频
*
* @param path 视频保存路径
* @param succ 成功回调
* @param fail 失败回调,返回错误码和错误描述
*/
- (void)getVideo:(NSString*)path succ:(TIMSucc)succ fail:(TIMFail)fail;
- (void)getVideo:(NSString*)path progress:(TIMProgress)progress succ:(TIMSucc)succ fail:(TIMFail)fail;
@end
@interface TIMSnapshot : NSObject
/**
* 图片ID,不用设置
*/
@property(nonatomic,strong) NSString * uuid;
/**
* 截图文件类型,发送消息时设置
*/
@property(nonatomic,strong) NSString * type;
/**
* 图片大小,不用设置
*/
@property(nonatomic,assign) int size;
/**
* 图片宽度,发送消息时设置
*/
@property(nonatomic,assign) int width;
/**
* 图片高度,发送消息时设置
*/
@property(nonatomic,assign) int height;
/**
* 获取图片
*
* @param path 图片保存路径
* @param succ 成功回调,返回图片数据
* @param fail 失败回调,返回错误码和错误描述
*/
- (void)getImage:(NSString*)path succ:(TIMSucc)succ fail:(TIMFail)fail;
- (void)getImage:(NSString*)path progress:(TIMProgress)progress succ:(TIMSucc)succ fail:(TIMFail)fail;
@end
/**
* 微视频消息
*/
@interface TIMVideoElem : TIMElem
/**
* 上传时任务Id,可用来查询上传进度
*/
@property(nonatomic,assign) uint32_t taskId;
/**
* 视频文件路径,发送消息时设置
*/
@property(nonatomic,strong) NSString * videoPath;
/**
* 视频信息,发送消息时设置
*/
@property(nonatomic,strong) TIMVideo * video;
/**
* 截图文件路径,发送消息时设置
*/
@property(nonatomic,strong) NSString * snapshotPath;
/**
* 视频截图,发送消息时设置
*/
@property(nonatomic,strong) TIMSnapshot * snapshot;
@end
#pragma mark - 群系统消息和tip消息
/**
* 群tips,成员变更信息
*/
@interface TIMGroupTipsElemMemberInfo : NSObject
/**
* 变更用户
*/
@property(nonatomic,strong) NSString * identifier;
/**
* 禁言时间(秒,表示还剩多少秒可以发言)
*/
@property(nonatomic,assign) uint32_t shutupTime;
@end
/**
* 群tips,群变更信息
*/
@interface TIMGroupTipsElemGroupInfo : NSObject
/**
* 变更类型
*/
@property(nonatomic, assign) TIM_GROUP_INFO_CHANGE_TYPE type;
/**
* 根据变更类型表示不同含义
*/
@property(nonatomic,strong) NSString * value;
@end
/**
* 群Tips
*/
@interface TIMGroupTipsElem : TIMElem
/**
* 群组Id
*/
@property(nonatomic,strong) NSString * group;
/**
* 群Tips类型
*/
@property(nonatomic,assign) TIM_GROUP_TIPS_TYPE type;
/**
* 操作人用户名
*/
@property(nonatomic,strong) NSString * opUser;
/**
* 被操作人列表 NSString* 数组
*/
@property(nonatomic,strong) NSArray * userList;
/**
* 在群名变更时表示变更后的群名,否则为 nil
*/
@property(nonatomic,strong) NSString * groupName;
/**
* 群信息变更: TIM_GROUP_TIPS_TYPE_INFO_CHANGE 时有效,为 TIMGroupTipsElemGroupInfo 结构体列表
*/
@property(nonatomic,strong) NSArray * groupChangeList;
/**
* 成员变更: TIM_GROUP_TIPS_TYPE_MEMBER_INFO_CHANGE 时有效,为 TIMGroupTipsElemMemberInfo 结构体列表
*/
@property(nonatomic,strong) NSArray * memberChangeList;
/**
* 操作者用户资料
*/
@property(nonatomic,strong) TIMUserProfile * opUserInfo;
/**
* 操作者群成员资料
*/
@property(nonatomic,strong) TIMGroupMemberInfo * opGroupMemberInfo;
/**
* 变更成员资料
*/
@property(nonatomic,strong) NSDictionary * changedUserInfo;
/**
* 变更成员群内资料
*/
@property(nonatomic,strong) NSDictionary * changedGroupMemberInfo;
/**
* 当前群人数: TIM_GROUP_TIPS_TYPE_INVITE、TIM_GROUP_TIPS_TYPE_QUIT_GRP、
* TIM_GROUP_TIPS_TYPE_KICKED时有效
*/
@property(nonatomic,assign) uint32_t memberNum;
/**
* 操作方平台信息
* 取值: iOS Android Windows Mac Web RESTAPI Unknown
*/
@property(nonatomic,strong) NSString * platform;
@end
/**
* 群系统消息
*/
@interface TIMGroupSystemElem : TIMElem
/**
* 操作类型
*/
@property(nonatomic,assign) TIM_GROUP_SYSTEM_TYPE type;
/**
* 群组Id
*/
@property(nonatomic,strong) NSString * group;
/**
* 操作人
*/
@property(nonatomic,strong) NSString * user;
/**
* 操作理由
*/
@property(nonatomic,strong) NSString * msg;
/**
* 消息标识,客户端无需关心
*/
@property(nonatomic,assign) uint64_t msgKey;
/**
* 消息标识,客户端无需关心
*/
@property(nonatomic,strong) NSData * authKey;
/**
* 用户自定义透传消息体(type=TIM_GROUP_SYSTEM_CUSTOM_INFO时有效)
*/
@property(nonatomic,strong) NSData * userData;
/**
* 操作人资料
*/
@property(nonatomic,strong) TIMUserProfile * opUserInfo;
/**
* 操作人群成员资料
*/
@property(nonatomic,strong) TIMGroupMemberInfo * opGroupMemberInfo;
/**
* 操作方平台信息
* 取值: iOS Android Windows Mac Web RESTAPI Unknown
*/
@property(nonatomic,strong) NSString * platform;
@end
#pragma mark - 消息体TIMMessage
/**
填入sound字段表示接收时不会播放声音
*/
extern NSString * const kIOSOfflinePushNoSound;
@interface TIMOfflinePushInfo : NSObject
/**
* 自定义消息描述信息,做离线Push时文本展示
*/
@property(nonatomic,strong) NSString * desc;
/**
* 离线Push时扩展字段信息
*/
@property(nonatomic,strong) NSString * ext;
/**
* 推送规则标志
*/
@property(nonatomic,assign) TIMOfflinePushFlag pushFlag;
/**
* iOS离线推送配置
*/
@property(nonatomic,strong) TIMIOSOfflinePushConfig * iosConfig;
/**
* Android离线推送配置
*/
@property(nonatomic,strong) TIMAndroidOfflinePushConfig * androidConfig;
@end
/**
* 消息
*/
@interface TIMMessage : NSObject
/**
* 增加Elem
*
* @param elem elem结构
*
* @return 0 表示成功
* 1 禁止添加Elem(文件或语音多于两个Elem)
* 2 未知Elem
*/
- (int)addElem:(TIMElem*)elem;
/**
* 获取对应索引的Elem
*
* @param index 对应索引
*
* @return 返回对应Elem
*/
- (TIMElem*)getElem:(int)index;
/**
* 获取Elem数量
*
* @return elem数量
*/
- (int)elemCount;
/**
* 设置离线推送配置信息
*
* @param info 配置信息
*
* @return 0 成功
*/
- (int)setOfflinePushInfo:(TIMOfflinePushInfo*)info;
/**
* 获得本消息离线推送配置信息
*
* @return 配置信息,没设置返回nil
*/
- (TIMOfflinePushInfo*)getOfflinePushInfo;
/**
* 设置业务命令字
*
* @param buzCmds 业务命令字列表
* @"im_open_busi_cmd.msg_robot" 表示发送给IM机器人
* @"im_open_busi_cmd.msg_nodb" 表示不存离线
* @"im_open_busi_cmd.msg_noramble" 表示不存漫游
* @"im_open_busi_cmd.msg_nopush" 表示不实时下发给用户
*
* @return 0 成功
*/
-(int) setBusinessCmd:(NSArray*)buzCmds;
/**
* 获取会话
*
* @return 该消息所对应会话
*/
- (TIMConversation*)getConversation;
/**
* 消息状态
*
* @return TIMMessageStatus 消息状态
*/
- (TIMMessageStatus)status;
/**
* 是否发送方
*
* @return TRUE 表示是发送消息 FALSE 表示是接收消息
*/
- (BOOL)isSelf;
/**
* 获取发送方
*
* @return 发送方标识
*/
- (NSString*)sender;
/**
* 消息Id
*/
- (NSString*)msgId;
/**
* 获取消息uniqueId
*
* @return uniqueId
*/
- (uint64_t)uniqueId;
/**
* 当前消息的时间戳
*
* @return 时间戳
*/
- (NSDate*)timestamp;
/**
* 获取发送者资料(发送者为自己时可能为空)
*
* @return 发送者资料,nil 表示没有获取资料,目前只有字段:identifier、nickname、faceURL、customInfo
*/
- (TIMUserProfile*)getSenderProfile;
/**
* 获取发送者群内资料(发送者为自己时可能为空)
*
* @return 发送者群内资料,nil 表示没有获取资料或者不是群消息,目前只有字段:member、nameCard、role、customInfo
*/
- (TIMGroupMemberInfo*)getSenderGroupMemberProfile;
/**
* 设置消息的优先级
*
* @param priority 优先级
*
* @return TRUE 设置成功
*/
- (BOOL)setPriority:(TIMMessagePriority)priority;
/**
* 获取消息的优先级
*
* @return 优先级
*/
- (TIMMessagePriority)getPriority;
/**
* 获取消息所属会话的接收消息选项(仅对群组消息有效)
*
* @return 接收消息选项
*/
- (TIMGroupReceiveMessageOpt)getRecvOpt;
/**
* 拷贝消息中的属性(ELem、priority、online、offlinePushInfo)
*
* @param srcMsg 源消息
*
* @return 0 成功
*/
- (int)copyFrom:(TIMMessage*)srcMsg;
@end
#endif
... ...
This file is too large to display.
No preview for this file type
framework module ImSDK {
umbrella header "ImSDK.h"
export *
module * { export * }
}
... ...
//
// NTESSecurityKit.h
// NTESSecurityKit
//
// Created by NetEase on 17/5/30.
// Copyright © 2017年 NetEase. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSInteger, NSSKSecurityError){
NSSKSecurityInvalidParameterError = 1, // 输入无效参数
NSSKSecurityBundleIDMismatchError , // Bundle Identifier不匹配
NSSKSecurityProtocolError , // 数据格式错误
NSSKSecurityInvalidSeverDataError , // 服务器的数据被篡改
NSSKSecurityUnkownError ,
NSSKSecurityKeyExistError , // 本地数据索引已存在
NSSKSecurityKeyDoesNotExistError , // 本地数据索引不存在
NSSKSecurityFileOperationError , // 本地数据文件操作失败
NSSKSecurityDataEncryptDecryptError , // 数据加解密失败
NSSKSecurityKeyError , // 密钥错误
NSSKSecurityOutofValidPeriodError , // 超出使用期错误
NSSKSecurityWhiteBoxEncryptError , // 白盒加密错误
NSSKSecurityWhiteBoxDecryptError , // 白盒解密错误
};
@interface NTESSecurityKit : NSObject
/**
* 单例
*
* @return NTESSecurityKit对象
*/
+ (NTESSecurityKit *)sharedInstance;
/**
* 客户端对输入的明文数据进行加密,然后返回密文,这个密文是发送到服务器的
*
* @param input 需要加密保护的字符串数据
* @param error 如果加密出现错误,error会被设置, error的code对应 NSSKSecurityError;接口返回值为nil。
*
* @return 加密的结果,UTF-8编码
* @说明 (1)在调用该接口前,确定已调用 sharedInstance
*/
- (NSString *)encryptStringToServer:(NSString *)input error:(NSError **)error;
/**
* 客户端对输入的密文数据(密文来自服务器)进行解密,然后返回明文
*
* @param input 需要解密还原的字符串数据
* @param error 如果解密出现错误,error会被设置, error的code对应 NSSKSecurityError;接口返回值为nil。
*
* @return 解密的结果,UTF-8编码
* @说明 (1)在调用该接口前,确定已调用 sharedInstance; (2)输入参数input是来自服务器返回的加密结果
*/
- (NSString *)decryptStringFromServer:(NSString *)input error:(NSError **)error;
/**
* 客户端对输入的Binary数据进行加密,然后返回密文,该密文用于发送至服务端
*
* @param input 需要加密保护的Binary数据
* @param error 如果加密出现错误,error会被设置, error的code对应 NSSKSecurityError;接口返回值为nil。
* @return 加密的结果,UTF-8编码
* @说明 (1)在调用该接口前,确定已调用 sharedInstance
*/
- (NSString *)encryptBinaryToServer:(NSData *)input error:(NSError **)error;
/**
* 客户端对输入的密文数据(密文来自服务器)进行解密,然后返回解密后的Binary
*
* @param input 需要解密还原的字符串数据
* @param error 如果解密出现错误,error会被设置, error的code对应 NSSKSecurityError;接口返回值为nil。
*
* @return 解密的结果,Binary数据
* @说明 (1)在调用该接口前,确定已调用 sharedInstance; (2)输入参数input是来自服务器返回的加密结果
*/
- (NSData *)decryptBinaryFromServer:(NSString *)input error:(NSError **)error;
/**
* SDK将需要加密存储的字符串进行加密,并存储在本地
*
* @param input 需要加密存储的字符串
* @param key 用户自定义的key,用于索引本地数据
* @param error 如果加密或存储出现错误,error将会被设置,error的code对应 NSSKSecurityError;接口返回NO
*
* @return 加密存储是否成功,成功返回YES,失败返回NO
* @说明 (1)在调用该接口前,确定已调用 sharedInstance;
*/
- (BOOL)putString:(NSString *)input key:(NSString *)key error:(NSError **)error;
/**
* 取出存储在本地的字符串,返回解密后的明文
*
* @param key 用户自定义的key,用于索引本地数据
* @param error 如果取出本地存储的数据出现错误,error将会被设置,error的code对应 NSSKSecurityError;接口返回nil
*
* @return 本地存储的对应于key的数据,数据将被解密,返回解密后的明文
* @说明 (1)在调用该接口前,确定已调用 sharedInstance;
*/
- (NSString *)getString:(NSString *)key error:(NSError **)error;
/**
* 更新本地存储的字符串数据
*
* @param input 更新的字符串
* @param key 用户自定义的key,用于索引本地数据
* @param error 如果加密或存储出现错误,error将会被设置,error的code对应 NSSKSecurityError;接口返回NO
*
* @return 加密存储是否成功,成功返回YES,失败返回NO
* @说明 (1)在调用该接口前,确定已调用 sharedInstance;
*/
- (BOOL)updateString:(NSString *)input key:(NSString *)key error:(NSError **)error;
/**
* 删除存储在本地的字符串
*
* @param key 用户自定义的key,用于索引本地数据
* @param error 如果删除本地存储的数据出现错误,error将会被设置,error的code对应 NSSKSecurityError;接口返回NO
*
* @return 删除本地存储的数据是否成功,成功返回YES,失败返回NO
* @说明 (1)在调用该接口前,确定已调用 sharedInstance;
*/
- (BOOL)removeString:(NSString *)key error:(NSError **)error;
/**
* SDK将需要加密存储的Binary进行加密,并存储在本地
*
* @param input 需要加密存储的Binary
* @param key 用户自定义的key,用于索引本地数据
* @param error 如果加密或存储出现错误,error将会被设置,error的code对应 NSSKSecurityError;接口返回NO
*
* @return 加密存储是否成功,成功返回YES,失败返回NO
* @说明 (1)在调用该接口前,确定已调用 sharedInstance;
*/
- (BOOL)putBinary:(NSData *)input key:(NSString *)key error:(NSError **)error;
/**
* 取出存储在本地的Binary数据,返回解密后的明文
*
* @param key 用户自定义的key,用于索引本地数据
* @param error 如果取出本地存储的数据出现错误,error将会被设置,error的code对应 NSSKSecurityError;接口返回nil
*
* @return 本地存储的对应于key的数据,数据将被解密,返回解密后的明文
* @说明 (1)在调用该接口前,确定已调用 sharedInstance;
*/
- (NSData *)getBinary:(NSString *)key error:(NSError **)error;
/**
* 更新本地存储的Binary数据
*
* @param input 更新的Binary
* @param key 用户自定义的key,用于索引本地数据
* @param error 如果加密或存储出现错误,error将会被设置,error的code对应 NSSKSecurityError;接口返回NO
*
* @return 加密存储是否成功,成功返回YES,失败返回NO
* @说明 (1)在调用该接口前,确定已调用 sharedInstance;
*/
- (BOOL)updateBinary:(NSData *)input key:(NSString *)key error:(NSError **)error;
/**
* 删除存储在本地的Binary数据
*
* @param key 用户自定义的key,用于索引本地数据
* @param error 如果删除本地存储的数据出现错误,error将会被设置,error的code对应 NSSKSecurityError;接口返回NO
*
* @return 删除本地存储的数据是否成功,成功返回YES,失败返回NO
* @说明 (1)在调用该接口前,确定已调用 sharedInstance;
*/
- (BOOL)removeBinary:(NSString *)key error:(NSError **)error;
/**
* SDK将明文白盒加密,返回密文
* @param input 需要加密保护的字符串数据
* @param error 如果加密出现错误,error会被设置, error的code对应 NSSKSecurityError;接口返回值为nil
*
* @return 加密的结果
* @说明 (1)在调用该接口前,确定已调用 sharedInstance
*/
- (NSString *)getWBEncryptString:(NSString *)input error:(NSError **)error;
/**
* SDK将白盒加密的密文,通过白盒解密,返回解密后的明文
*
* @param input 需要解密还原的字符串数据
* @param error 如果解密出现错误,error会被设置, error的code对应 NSSKSecurityError;接口返回值为nil。
*
* @return 解密的结果
* @说明 (1)在调用该接口前,确定已调用 sharedInstance;
*/
- (NSString *)getWBDecryptString:(NSString *)input error:(NSError **)error;
/**
* 客户端对输入的Binary数据进行白盒加密,返回白盒密文
*
* @param input 需要加密保护的Binary数据
* @param error 如果加密出现错误,error会被设置, error的code对应 NSSKSecurityError;接口返回值为nil。
* @return 加密的结果
* @说明 (1)在调用该接口前,确定已调用 sharedInstance
*/
- (NSString *)getWBEncryptBinary:(NSData *)input error:(NSError **)error;
/**
* 客户端对输入的白盒密文进行解密,然后返回解密后的Binary
*
* @param input 需要解密还原的字符串数据
* @param error 如果解密出现错误,error会被设置, error的code对应 NSSKSecurityError;接口返回值为nil。
*
* @return 解密的结果,Binary数据
* @说明 (1)在调用该接口前,确定已调用 sharedInstance; (2)输入参数input是来自服务器返回的加密结果
*/
- (NSData *)getWBDecryptBinary:(NSString *)input error:(NSError **)error;
/* 查看SDK的版本号
*
* @return SDK的版本信息
*/
- (NSString *)sdkVersion;
/* 判断设备是否越狱
*
* @return, BOOL YES:越狱;NO:非越狱
*/
- (BOOL)isJailbreak;
@end
... ...
No preview for this file type
framework module SecurityKit {
umbrella header "NTESSecurityKit.h"
export *
module * { export * }
}
... ...
No preview for this file type
//
// TXAudioCustomProcessDelegate.h
// TXLiteAVSDK
//
// Created by realingzhou on 2018/1/15.
// Copyright © 2018年 Tencent. All rights reserved.
//
#ifndef TXAudioCustomProcessDelegate_h
#define TXAudioCustomProcessDelegate_h
#import <Foundation/Foundation.h>
@protocol TXAudioCustomProcessDelegate <NSObject>
/**
* 原始声音的回调
* @prarm data pcm数据
* @prarm timeStamp 时间戳
* @prarm sampleRate 采样率
* @prarm channels 声道数
* @prarm withBgm 回调的数据是否包含bgm,当不开启回声消除时,回调的raw pcm会包含bgm
*/
@optional
- (void)onRecordRawPcmData:(NSData *)data timeStamp:(unsigned long long)timeStamp sampleRate:(int)sampleRate channels:(int)channels withBgm:(BOOL)withBgm;
/**
* 经过特效处理的声音回调
* @prarm data pcm数据
* @prarm timeStamp 时间戳
* @prarm sampleRate 采样率
* @prarm channels 声道数
*/
@optional
- (void)onRecordPcmData:(NSData *)data timeStamp:(unsigned long long)timeStamp sampleRate:(int)sampleRate channels:(int)channels;
@end
#endif /* TXAudioCustomProcessDelegate_h */
... ...
//
// TXAudioRawDataDelegate.h
// TXLiteAVSDK
//
// Created by realingzhou on 2018/2/24.
// Copyright © 2018年 Tencent. All rights reserved.
//
#ifndef TXAudioRawDataDelegate_h
#define TXAudioRawDataDelegate_h
@protocol TXAudioRawDataDelegate <NSObject>
/**
* 音频播放信息回调
*
* @param sampleRate 采样率
* @param channels 声道数
*/
@optional
- (void)onAudioInfoChanged:(int)sampleRate channels:(int)channels;
/**
* 音频播放数据回调,数据格式 :PCM
*
* <!!!注意!!!> 该函数内不要做耗时操作<!!!注意!!!>
* 音频播放器会在播放数据的前一刻,调用此函数,同步回调将要播放的数据。因此在函数内部做耗时操作可能会影响播放
*
*
* @param data pcm数据
* @param timestamp 时间戳。注 :会有连续相同的时间戳回调出来,超过2048字节,时间戳才会变化。
*/
@optional
- (void)onPcmDataAvailable:(NSData *)data pts:(unsigned long long)timestamp;
@end
#endif /* TXAudioRawDataDelegate_h */
... ...
//
// TXBitrateItem.h
// TXLiteAVSDK
//
// Created by annidyfeng on 2017/11/15.
// Copyright © 2017年 Tencent. All rights reserved.
//
#ifndef TXBitrateItem_h
#define TXBitrateItem_h
/// HLS多码率信息
@interface TXBitrateItem : NSObject
@property (nonatomic, assign) NSInteger index; /// m3u8文件中的序号
@property (nonatomic, assign) NSInteger width; /// 此流的视频宽度
@property (nonatomic, assign) NSInteger height; /// 此流的视频高度
@property (nonatomic, assign) NSInteger bitrate; /// 此流的视频码率
@end
#endif /* TXBitrateItem_h */
... ...
//
// TXImageSprite.h
// TXLiteAVSDK
//
// Created by annidyfeng on 2018/8/23.
// Copyright © 2018年 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
/// 雪碧图解析工具
@interface TXImageSprite : NSObject
/**
* 设置雪碧图地址
* @param vttUrl VTT链接
* @param images 雪碧图大图列表
*/
- (void)setVTTUrl:(NSURL *)vttUrl imageUrls:(NSArray<NSURL *> *)images;
/**
* 获取缩略图
* @param time 时间点,单位秒
* @return 获取失败返回nil
*/
- (UIImage *)getThumbnail:(GLfloat)time;
@end
... ...
//
// TXLiteAVSDK.h
// TXLiteAVSDK
//
// Created by alderzhang on 2017/6/9.
// Copyright © 2017年 Tencent. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <TXLiteAVSDK_Smart/TXAudioCustomProcessDelegate.h>
#import <TXLiteAVSDK_Smart/TXAudioRawDataDelegate.h>
#import <TXLiteAVSDK_Smart/TXBitrateItem.h>
#import <TXLiteAVSDK_Smart/TXImageSprite.h>
#import <TXLiteAVSDK_Smart/TXLiveAudioSessionDelegate.h>
#import <TXLiteAVSDK_Smart/TXLiveBase.h>
#import <TXLiteAVSDK_Smart/TXLivePlayConfig.h>
#import <TXLiteAVSDK_Smart/TXLivePlayListener.h>
#import <TXLiteAVSDK_Smart/TXLivePlayer.h>
#import <TXLiteAVSDK_Smart/TXLivePush.h>
#import <TXLiteAVSDK_Smart/TXLivePushConfig.h>
#import <TXLiteAVSDK_Smart/TXLivePushListener.h>
#import <TXLiteAVSDK_Smart/TXLiveRecordListener.h>
#import <TXLiteAVSDK_Smart/TXLiveRecordTypeDef.h>
#import <TXLiteAVSDK_Smart/TXLiveSDKEventDef.h>
#import <TXLiteAVSDK_Smart/TXLiveSDKTypeDef.h>
#import <TXLiteAVSDK_Smart/TXPlayerAuthParams.h>
#import <TXLiteAVSDK_Smart/TXVideoCustomProcessDelegate.h>
#import <TXLiteAVSDK_Smart/TXVodPlayConfig.h>
#import <TXLiteAVSDK_Smart/TXVodPlayListener.h>
#import <TXLiteAVSDK_Smart/TXVodPlayer.h>
... ...
#ifndef TXLiveAudioSessionDelegate_h
#define TXLiveAudioSessionDelegate_h
#import <AVFoundation/AVFoundation.h>
@protocol TXLiveAudioSessionDelegate <NSObject>
@optional
- (BOOL)setActive:(BOOL)active error:(NSError **)outError;
@optional
- (BOOL)setMode:(NSString *)mode error:(NSError **)outError;
@optional
- (BOOL)setCategory:(NSString *)category error:(NSError **)outError;
@optional
- (BOOL)setCategory:(NSString *)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError;
@optional
- (BOOL)setCategory:(NSString *)category mode:(NSString *)mode options:(AVAudioSessionCategoryOptions)options error:(NSError **)outError;
@optional
- (BOOL)setPreferredIOBufferDuration:(NSTimeInterval)duration error:(NSError **)outError;
@optional
- (BOOL)setPreferredSampleRate:(double)sampleRate error:(NSError **)outError;
@optional
- (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride error:(NSError **)outError;
@end
#endif /* TXLiveAudioSessionDelegate_h */
... ...