Skip to content

QIMSDK iOS接口文档说明

Lidalu edited this page Aug 26, 2019 · 6 revisions

QIMSDK iOS接口文档说明

QIMSDKHelper+UI.h UI接口说明

//SDK中初始化UI栈,务必初始化
- (void)initWithRootNav:(UINavigationController *)rootNav WithRootVc:(UIViewController *)rootVc;

//获取消息列表View
- (UIView *)getQIMSessionListViewWithBaseFrame:(CGRect)frame;

//发送email给用户
- (void)sendMailWithRootVc:(UIViewController *)rootVc ByUserId:(NSString *)userId;

//获取单人个人信息VC -> scheme : "/openSingleChatInfo"
- (UIViewController *)getUserChatInfoByUserId:(NSString *)userId;

//打开用户的个人信息页面
+ (void)openUserChatInfoByUserId:(NSString *)userId;

//获取单人名片VC -> scheme : "/openUserCard"
- (UIViewController *)getUserCardVCByUserId:(NSString *)userId;

//打开用户的名片页面
+ (void)openUserCardVCByUserId:(NSString *)userId;

//获取群名片VC -> scheme : "/openGroupChatInfo"
- (UIViewController *)getQIMGroupCardVCByGroupId:(NSString *)groupId;

//打开群名片
+ (void)openQIMGroupCardVCByGroupId:(NSString *)groupId;

//获取Consult会话VC
- (UIViewController *)getConsultChatByChatType:(NSInteger)chatType UserId:(NSString *)userId WithVirtualId:(NSString *)virtualId;

//打开Consult会话
+ (void)openConsultChatByChatType:(NSInteger)chatType UserId:(NSString *)userId WithVirtualId:(NSString *)virtualId;

//获取单人会话VC -> scheme : "/openSingleChat"
- (UIViewController *)getSingleChatVCByUserId:(NSString *)userId;

//打开单人聊天对话框
+ (void)openSingleChatVCByUserId:(NSString *)userId;

//获取群会话VC -> scheme : "/openGroupChat"
- (UIViewController *)getGroupChatVCByGroupId:(NSString *)groupId;

//打开群组聊天对话框
+ (void)openGroupChatVCByGroupId:(NSString *)groupId;

//获取HeadLine系统消息会话VC -> scheme : "/headLine"
- (UIViewController *)getHeaderLineVCByJid:(NSString *)jid;

//打开Headline对话框
+ (void)openHeaderLineVCByJid:(NSString *)jid;

//获取RNVC -> scheme : "rnservice", 参数来自scheme
- (UIViewController *)getVCWithNavigation:(UINavigationController *)navVC
                            WithHiddenNav:(BOOL)hiddenNav
                               WithModule:(NSString *)module
                           WithProperties:(NSDictionary *)properties;
+ (void)openQIMRNVCWithModuleName:(NSString *)moduleName WithProperties:(NSDictionary *)properties;

//获取机器人名片VC
- (UIViewController *)getRobotCard:(NSString *)robotJid;

//打开机器人名片
+ (void)openRobotCard:(NSString *)robotJId;

//打开WebView,使用html片段
+ (void)openWebViewWithHtmlStr:(NSString *)htmlStr showNavBar:(BOOL)showNavBar;

//打开WebView
+ (void)openWebViewForUrl:(NSString *)url showNavBar:(BOOL)showNavBar;

//获取RN搜索VC -> scheme : "rnsearch"
- (UIViewController *)getRNSearchVC;

//打开RN搜索VC
+ (void)openRNSearchVC;

//获取我的好友列表VC
- (UIViewController *)getUserFriendsVC;

//打开我的好友列表
+ (void)openUserFriendsVC;

//获取我的群组列表VC
- (UIViewController *)getQIMGroupListVC;

//打开我的群组列表
+ (void)openQIMGroupListVC;

//获取未读消息列表VC -> scheme : "/unreadList"
- (UIViewController *)getNotReadMessageVC;

//打开未读消息列表
+ (void)openNotReadMessageVC;

// scheme : "/publicNumber"
- (UIViewController *)getQIMPublicNumberVC;

//打开公众号
+ (void)openQIMPublicNumberVC;

//获取我的文件VC -> scheme : "/myfile"
- (UIViewController *)getMyFileVC;

//打开我的文件
+ (void)openMyFileVC;

//获取组织架构VC -> scheme : "/openOrganizational"
- (UIViewController *)getOrganizationalVC;

//打开组织架构
+ (void)openOrganizationalVC;

+ (void)openQRCodeVC;

- (UIViewController *)getRobotChatVC:(NSString *)robotJid;
+ (void)openRobotChatVC:(NSString *)robotJid;

- (UIViewController *)getQTalkNotesVC;
+ (void)openQTalkNotesVC;

//获取我的红包VC -> scheme : "/hongbao"
- (UIViewController *)getMyRedPack;

//获取余额查询VC -> scheme : "/hongbao_balance"
- (UIViewController *)getMyRedPackageBalance;


+ (void)openTransferConversation:(NSString *)shopId withVistorId:(NSString *)realJid;

+ (void)openMyAccountInfo;

- (UIViewController *)getQRCodeWithUserId:(NSString *)userId withName:(NSString *)name withType:(NSInteger)qrcodeType;

+ (void)showQRCodeWithUserId:(NSString *)userId withName:(NSString *)name withType:(NSInteger)qrcodeType;

//退出登录-> scheme : logout
+ (void)signOut;

QIMKit 接口说明

//认证
/**
 UK,登录之后服务器下发下来,用作旧接口的验证
 */
- (NSString *)remoteKey;

/**
 get remote key
 
 @return 返回remote key
 */
- (NSString *)myRemotelogginKey;


/**
 第三方认证的key - Ckey/q_ckey
 
 @return 返回Base64后的Key
 */
- (NSString *) thirdpartKeywithValue;


/**
 手动设置客服状态

 @param isMerchant 客服状态
 */
- (void)setIsMerchant:(BOOL)isMerchant;

/**
 客服状态
 */
- (BOOL)isMerchant;

/**
 *  UserName Ex: san.zhang
 *
 *  @return UserName
 */
+ (NSString *)getLastUserName;

/**
 *  PWD
 *
 *  @return 无用
 */
- (NSString *)getLastPassword;

/**
 *  JID  Ex: san.zhang@ejabhost1
 *
 *  @return JID
 */
- (NSString *)getLastJid;

/**
 *  nickName  Ex: 
 *
 *  @return MyNickName
 */
- (NSString *)getMyNickName;

/**
 获取当前登录的domain
 */
- (NSString *)getDomain;
	
- (long long)getCurrentServerTime;


- (int)getServerTimeDiff;

- (NSHTTPCookie *)cookie;

// 更新导航配置
- (void)updateNavigationConfig;

- (void)checkClientConfig;

/**
 获取trdExtendInfo
 
 @return 返回trdExtendInfo
 */
- (NSArray *)trdExtendInfo;

/**
 获取AA收款URL

 @return 返回aaCollectionUrlHost
 */
- (NSString *)aaCollectionUrlHost;

/**
 获取红包URL

 @return 返回redPackageUrlHost
 */
- (NSString *)redPackageUrlHost;

/**
 获取余额URL

 @return 返回redPackageBalanceUrl
 */
- (NSString *)redPackageBalanceUrl;

/**
 获取我的红包URL

 @return 返回myRedpackageUrl
 */
- (NSString *)myRedpackageUrl;

/**
 新消息通知?
 
 @return bool值
 */
- (BOOL)isNewMsgNotify;

/**
 设置新消息通知?
 
 @param flag bool值
 */
- (void)setNewMsgNotify:(BOOL)flag;
//相册是否发送原图
- (BOOL)pickerPixelOriginal;

- (void)setPickerPixelOriginal:(BOOL)flag;

//是否优先展示对方个性签名
- (BOOL)moodshow;

/**
 设置 mood show
 
 @param flag bool值
 */
- (void)setMoodshow:(BOOL)flag;

/**
 获取At me的
 
 @param jid 会话id
 @return 返回结果
 */
- (NSArray *)getHasAtMeByJid:(NSString *)jid ;

- (void)addAtMeByJid:(NSString *)jid WithNickName:(NSString *)nickName;

- (void)removeAtMeByJid:(NSString *)jid;

- (void)addAtALLByJid:(NSString *)jid WithMsgId:(NSString *)msgId WihtMsg:(Message *)message WithNickName:(NSString *)nickName;

/**
 移除atall
 
 @param jid 用户id
 */
- (void)removeAtAllByJid:(NSString *)jid;

/**
 获取atall
 
 @param jid user id
 @return 返回atall信息
 */
- (NSDictionary *)getAtAllInfoByJid:(NSString *)jid;

- (NSDictionary *)getNotSendTextByJid:(NSString *)jid ;

- (void)setNotSendText:(NSString *)text inputItems:(NSArray *)inputItems ForJid:(NSString *)jid;

/**
 qchat获取token
 
 @return 返回token
 */
- (NSDictionary *)getQChatToken;

- (NSDictionary *)getQVTForQChat;

- (void)removeQVTForQChat;

- (NSString *)getDownloadFilePath;

/**
 清空缓存
 */
- (void)clearcache;

/**
 置顶/ 移除置顶
 
 @param jid 需要置顶的jid
 */
- (BOOL)setStickWithJid:(NSString *)jid;


/**
 置顶/ 移除置顶
 
 @param jid 需要置顶的jid
 @param chatType 会话类型
 */
- (void)removeStickWithJid:(NSString *)jid WithChatType:(ChatType)chatType;

/**
 是否已置顶
 
 @param jid session id
 @return 返回判定结果
 */
- (BOOL)isStickWithJid:(NSString *)jid;

/**
 获取置顶列表
 
 @return 置顶的会话列表
 */
- (NSDictionary *)stickList;

- (BOOL)setMsgNotifySettingWithIndex:(QIMMSGSETTING)setting WithSwitchOn:(BOOL)switchOn;

- (BOOL)getLocalMsgNotifySettingWithIndex:(QIMMSGSETTING)setting;

- (void)getMsgNotifyRemoteSettings;

/**
 关闭通知
 */
- (void)sendNoPush;


/**
 上传推送Token到服务器

 @param notificationToken 注册的通知Token
 @param username 用户名
 @param paramU 用户ming
 @param paramK 用户验证的key
 @param deleteFlag 是否删除服务器推送Token
 @return 上传是否成功
 */
- (BOOL)sendServer:(NSString *)notificationToken withUsername:(NSString *)username withParamU:(NSString *)paramU withParamK:(NSString *)paramK WithDelete:(BOOL)deleteFlag;

/**
 发送push Token

 @param myToken 注册的通知token
 @param deleteFlag 是否删除
 */
- (BOOL)sendPushTokenWithMyToken:(NSString *)myToken WithDeleteFlag:(BOOL)deleteFlag;

- (void)checkClearCache;

/**
 获取用户在线状态
 
 @param sid 用户
 @return 返回状态值
 */
- (NSString *)userOnlineStatus:(NSString *)sid;

/**
 判断用户是否在线
 
 @param userId user di
 @return 返回是否在线
 */
- (BOOL)isUserOnline:(NSString *)userId;

- (UserPrecenseStatus)getUserPrecenseStatus:(NSString *)jid;

/**
 获取用户 precense status
 
 @param jid 用户id
 @param status status指针
 @return 返回status
 */
- (UserPrecenseStatus)getUserPrecenseStatus:(NSString *)jid status:(NSString **)status;

QIMKit+QIMLogin.h -> 登录

/**
 设置是否为后台登录
 */
- (void)setIsBackgroundLogin:(BOOL)isBackgroundLogin;

/**
 是否为后台登录 (YES为后台重新登录,NO为前台人工登录)
 */
- (BOOL)isBackgroundLogin;

/**
 设置取消登录状态
 */
- (void)setWillCancelLogin:(BOOL)willCancelLogin;

/**
 获取取消登录状态
 */
- (BOOL)willCancelLogin;

/**
 设置登录重试
 */
- (void)setNeedTryRelogin:(BOOL)needTryRelogin;

/**
 获取登录重试
 */
- (BOOL)needTryRelogin;

/**
 获取当前登录状态
 */
- (BOOL)isLogin;

/**
 缓存用户登录

 @param userName 用户名称
 @param pwd 用户密码
 @param navDict 用户导航信息缓存
 */
- (void)loginWithUserName:(NSString *)userName WithPassWord:(NSString *)pwd WithLoginNavDict:(NSDictionary *)navDict;
- (void)addUserCacheWithUserId:(NSString *)userId WithUserFullJid:(NSString *)userFullJid WithNavDict:(NSDictionary *)navDict;

/**
 用户登录

 @param userName 用户名
 @param pwd 用户密码
 */
- (void)loginWithUserName:(NSString *)userName WithPassWord:(NSString *)pwd;


/**
 获取本地已缓存用户列表
 */
- (NSArray *)getLoginUsers;


/**
 清空KeyChain中用户缓存信息
 */
- (void)clearLogginUser;

/**
 save 用户名 and 密码
 
 @param userName 用户名
 @param pwd 密码
 */
- (void)saveUserInfoWithName:(NSString *)userName passWord:(NSString *)pwd;

/**
 退出登录
 */
- (void)quitLogin;

/**
 前台登录
 */
- (BOOL)forgelogin;

/**
 重新登录
 */
- (void)relogin;

/**
 取消登录
 */
- (void)cancelLogin;

/**
 QChat rsa登录
 
 @param userId 用户id
 @param password rsa密码
 @param type 用户名的类型,值为:@"username"、@"email"、@"mobile"
 @return 返回结果
 */
- (NSDictionary *)QChatLoginWithUserId:(NSString *)userId rsaPassword:(NSString *)password type:(NSString *)type;

- (NSString *)getFormStringByDiction:(NSDictionary *)diction;

QIMKit+QIMAppInfo.h -> App信息

+ (void)setQIMProjectType:(QIMProjectType)appType;
    
+ (QIMProjectType)getQIMProjectType;

/**
 获取推送的Token

 @return PushToken
 */
- (NSString *)getPushToken;

/**
 设置推送的Token

 @param pushToken pushToken
 */
- (void)setPushToken:(NSString *)pushToken;

/**
 网卡地址
 */
- (NSString *)macAddress;

/**
 终端
 */
- (NSString *)Platform;

/**
 设备名称
 */
- (NSString *)deviceName;

/**
 机器码(唯一标识)
 */
- (NSString *)appAID;

/**
 判断是不是iPad
 */
- (BOOL)getIsIpad;

/**
 系统版本
 */
- (NSString *)SystemVersion;

/**
 运营商
 */
- (NSString *)carrierName;

/**
 App版本号
 */
- (NSString *)AppVersion;

/**
 App Build版本号
 */
- (NSString *)AppBuildVersion;

QIMKit+QIMAppSetting.h App环境配置 /** 判断是否为第一次安装 */ - (BOOL)isFirstLauched;

/**
 设置当前App环境配置
 */
+ (void)setAppConfigurationMode:(QIMAppConfigurationMode)mode;


/**
 获取当前App环境配置
 */
+ (QIMAppConfigurationMode)getCurrentAppConfigurationMode;

/**
 判断是否为Debug模式
 */
- (BOOL)debugMode;

/**
 获取当前系统语言
 */
- (NSString *)currentLanguage;

/**
 设置高德地图的Key
 */
- (void)setGAODE_APIKEY:(NSString *)key;

/**
 获取高德地图的Key
 */
- (NSString *)GAODE_APIKEY;

QIMKit+QIMCollection.h -> 代收账号

- (NSString *)getCollectionUserHeaderUrlWithXmppId:(NSString *)userId;

/**
 获取代收账号名片信息

 @param myId 用户Id
 @return 代收账号名片信息
 */
- (NSDictionary *)getCollectionUserInfoByUserId:(NSString *)myId;

- (void)updateCollectionUserCardByUserIds:(NSArray *)userIds;

/**
 获取已代收账号列表
 
 @return 已代收账号列表
 */
- (NSArray *)getMyCollectionAccountList;

/**
 http接口获取我的绑定账号列表
 */
- (void)getRemoteCollectionAccountList;


#pragma mark - 代收Group

/**
 根据群Id获取群名片信息

 @param groupId 群Id
 @return 群名片信息
 */
- (NSDictionary *)getCollectionGroupCardByGroupId:(NSString *)groupId;

/**
 主动根据群Id更新群名片信息

 @param groupId 群Id
 */
- (void)updateCollectionGroupCardByGroupId:(NSString *)groupId;


- (NSString *)getCollectionGroupHeaderUrlWithCollectionGroupId:(NSString *)groupId;


#pragma mark - 代收Message

/**
 根据绑定账号BindId获取该账号下的消息列表

 @param bindId 绑定账号BindId
 */
- (NSArray *)getCollectionSessionListWithBindId:(NSString *)bindId;

/**
 根据MsgId获取代收消息
 
 @param lastMsgId lastMsgId
 */
- (NSDictionary *)getLastCollectionMsgByMsgId:(NSString *)lastMsgId;


- (NSArray *)getCollectionMsgListWithBindId:(NSString *)bindId;

/**
 保存代收消息到数据库

 @param collectionMsgDic 代收消息Dic
 */
- (void)saveCollectionMessage:(NSDictionary *)collectionMsgDic;

/**
 根据MsgId获取代收消息

 @param msgId msgId
 */
- (Message *)getCollectionMsgListForMsgId:(NSString *)msgId;

/**
 根据绑定用户Id及消息来源Id获取代收消息列表

 @param userId 消息来源人Id
 @param originUserId 绑定用户Id
 */
- (NSArray *)getCollectionMsgListForUserId:(NSString *)userId originUserId:(NSString *)originUserId;


#pragma mark - 代收未读

/**
 根据Jid清空代收未读消息
 
 @param jid Jid
 */
- (void)clearNotReadCollectionMsgByJid:(NSString *)jid;

/**
 根据绑定账号 & 用户Id清空代收 未读消息
 
 @param bindId 绑定账号Id
 @param userId 用户Id
 */
- (void)clearNotReadCollectionMsgByBindId:(NSString *)bindId WithUserId:(NSString *)userId;

/**
 获取代收总未读消息数
 */
- (NSInteger)getNotReadCollectionMsgCount;

/**
 获取某绑定账号下的代收未读消息数
 
 @param bindId 绑定账号Id
 */
- (NSInteger)getNotReadCollectionMsgCountByBindId:(NSString *)bindId;

/**
 获取某绑定账号下 单一账号来的代收 未读消息
 
 @param bindId 绑定账号Id
 @param userId 用户Id
 */
- (NSInteger)getNotReadCollectionMsgCountByBindId:(NSString *)bindId WithUserId:(NSString *)userId;

QIMKit+QIMConsult.h -> Consult消息

	/**
 虚拟账号的RealJid列表
 */
@property (nonatomic, strong) NSMutableDictionary *virtualRealJidDic;

/**
 虚拟账号列表
 */
@property (nonatomic, strong) NSArray *virtualList;

/**
 获取虚拟账号列表
 */
- (NSArray *)getVirtualList;

/**
 根据虚拟Id获取真实RealJid

 @param virtualJid 虚拟Id
 */
- (NSString *)getRealJidForVirtual:(NSString *)virtualJid;

/**
 发送Consult消息

 @param msgId MsgId
 @param msg 消息Body内容
 @param info 消息ExtendInfo
 @param toJid 消息
 @param realToJid 真实RealJid
 @param chatType 会话类型
 @param msgType 消息类型
 @return 消息对象Message
 */
- (Message *)sendConsultMessageId:(NSString *)msgId WithMessage:(NSString *)msg WithInfo:(NSString *)info toJid:(NSString *)toJid realToJid:(NSString *)realToJid WithChatType:(ChatType)chatType WithMsgType:(int)msgType;

- (void)chatTransferTo:(NSString *)user message:(NSString *)message chatId:(NSString *)chatId;

/**
 会话转移
 
 @param from from
 @param to to
 @param user user
 @param reson 原因
 @param chatId chat id
 @param msgId msgId
 */
- (void)chatTransferFrom:(NSString *)from To:(NSString *)to User:(NSString *)user Reson:(NSString *)reson chatId:(NSString *)chatId WithMsgId:(NSString *)msgId;

- (void)customerConsultServicesayHelloWithUser:(NSString *)user WithVirtualId:(NSString *)virtualId WithFromUser:(NSString *)fromUser;

/**
 欢迎语接口?
 
 @param user 客服id
 */
- (void)customerServicesayHelloWithUser:(NSString *)user;

/**
 输入预测
 
 @param keyword 关键词
 @return 返回预测结果
 */
- (NSArray *)searchSuggestWithKeyword:(NSString *)keyword;

/**
 organization预测
 
 @param suggestId 输入id
 @return 返回预测结果
 */
- (NSArray *)getSuggestOrganizationBySuggestId:(NSString *)suggestId;

/**
 根据店铺Id 设置服务模式

 @param shopId 店铺Id
 @param shopServiceStatus 服务模式
 @return 是否设置成功
 */
- (BOOL)updateSeatSeStatusWithShopId:(NSInteger)shopId WithStatus:(NSInteger)shopServiceStatus;

/**
 根据服务模式获取基础信息

 @param userStatus 服务模式
 */
- (NSDictionary *)userSeatStatusDict:(int)userStatus;


- (NSString *)userStatusTitleWithStatus:(int)userStatus;

/**
 获取坐席状态
 
 @return 返回坐席状态
 */
- (NSArray *)getSeatSeStatus;

/**
 获取状态坐席状态列表
 */
- (NSArray *)availableUserSeatStatus;

/**
 关闭会话
 
 @param shopId ShopId
 @param visitorId 客人Id
 @return 关闭之后的提示语
 */
- (NSString *)closeSessionWithShopId:(NSString *)shopId WithVisitorId:(NSString *)visitorId;

QIMKit+QIMFileManager.h 文件管理

/**
 根据文件URL获取文件后缀

 @param url 文件URL
 @return 文件后缀
 */
+ (NSString *) urlpathExtension:(NSString *) url;

+ (NSString *) documentsofPath:(QIMFileCacheType) type;

/**
 文件上传
 
 @param filePath 文件路径
 @param message 消息
 @param jid user id
 @param flag 是文件还是图片
 @return 文件url
 */
- (NSString *)uploadFileForPath:(NSString *)filePath forMessage:(Message *)message withJid:(NSString *)jid isFile:(BOOL)flag;

/**
 文件上传

 @param fileData 文件二进制
 @param message 消息
 @param jid 用户Id
 @param flag 是文件还是图片
 @return 文件URL
 */
- (NSString *)uploadFileForData:(NSData *)fileData forMessage:(Message *)message withJid:(NSString *)jid isFile:(BOOL)flag;

- (void)uploadFileForData:(NSData *)fileData forCacheType:(QIMFileCacheType)type isFile:(BOOL)flag completionBlock:(QIMFileManagerUploadCompletionBlock)completionBlock;

- (void)uploadFileForData:(NSData *)fileData forCacheType:(QIMFileCacheType)type isFile:(BOOL)flag fileExt:(NSString *)fileExt completionBlock:(QIMFileManagerUploadCompletionBlock)completionBlock;

- (void )downloadFileWithUrl:(NSString *)url isFile:(BOOL)flag forCacheType:(QIMFileCacheType)type;


/**
 下载图片

 @param url 图片URL
 @param width 图片width
 @param height 图片height
 @param type 图片缓存类型
 */
-(void)downloadImage:(NSString *)url width:(CGFloat) width height:(CGFloat) height  forCacheType:(QIMFileCacheType)type;


/**
 下载图片

 @param url 图片URL
 @param width 图片width
 @param height 图片height
 @param type 图片缓存类型
 @param complation 下载成功的回调
 */
-(void)downloadImage:(NSString *)url
               width:(CGFloat) width
              height:(CGFloat) height
        forCacheType:(QIMFileCacheType)type
          complation:(void(^)(NSData *)) complation;

-(void)downloadCollectionEmoji:(NSString *)url
                         width:(CGFloat) width
                        height:(CGFloat) height
                  forCacheType:(QIMFileCacheType)type
                    complation:(void(^)(NSData *)) complation;

//- (NSData *) getSmallFileDataFromUrl:(NSString *)url forCacheType:(QIMFileCacheType)type;

/**
 缓存文件
 
 @param data 文件data
 @param fileName 文件名称
 @param type 缓存类型
 @return 返回path
 */
- (NSString *) saveFileData:(NSData *)data withFileName:(NSString *)fileName forCacheType:(QIMFileCacheType)type;

- (NSString *) saveFileData:(NSData *)data url:(NSString *)httpUrl forCacheType:(QIMFileCacheType)type;

/**
 缓存文件
 
 @param data 文件data
 @param httpUrl 远程链接
 @param width 宽
 @param height 高
 @param type 缓存类型
 @return 返回path
 */
- (NSString *) saveFileData:(NSData *)data url:(NSString *)httpUrl  width:(CGFloat) width height:(CGFloat) height forCacheType:(QIMFileCacheType)type;

/**
 获取文件path
 
 @param fileName 文件名
 @param type 缓存类型
 @return 返回path
 */
- (NSString *) getFilePathForFileName:(NSString *)fileName forCacheType:(QIMFileCacheType)type;

/**
 获取文件path

 @param fileName 文件名
 @param type 缓存类型
 @param careExist 是否关心文件已存在
 @return 返回Path
 */
- (NSString *) getFilePathForFileName:(NSString *)fileName forCacheType:(QIMFileCacheType)type careExist:(BOOL) careExist;

/**
 文件是否存在
 
 @param url 文件url
 @param width 宽
 @param height 高
 @param type 缓存类型
 @return 返回是否存在
 */
- (BOOL)isFileExistForUrl:(NSString *)url width:(float)width height:(float)height forCacheType:(QIMFileCacheType)type;

- (NSString *)fileExistLocalPathForUrl:(NSString *)url width:(float)width height:(float)height forCacheType:(QIMFileCacheType)type;

- (NSString *)getNewMd5ForMd5:(NSString *)oldMd5 withWidth:(float)width height:(float)height;

/**
 获取file data
 
 @param fileName file名称
 @param type file缓存类型
 @return 返回file data
 */
- (NSData *) getFileDataForFileName:(NSString *)fileName forCacheType:(QIMFileCacheType)type;

- (NSData *) getFileDataFromUrl:(NSString *)url forCacheType:(QIMFileCacheType)type;

- (NSData *) getFileDataFromUrl:(NSString *)url forCacheType:(QIMFileCacheType)type needUpdate:(BOOL)update;

- (NSData *) getFileDataFromUrl:(NSString *)url width:(float)width height:(float)height forCacheType:(QIMFileCacheType)type;

- (CGSize)getImageSizeFromUrl:(NSString *)url;

- (NSString *) getFileNameFromKey:(NSString *)url;

/**
 *  根据URL获得文件名
 *
 *  @param url URL
 */
- (NSString *) getFileNameFromUrl:(NSString *)url;

- (NSString *) getFileExtFromUrl:(NSString *) url;

- (NSString *) md5fromUrl:(NSString *) url;

/**
 根据URL获得文件名

 @param url 图片URL
 @param width 图片width
 @param height 图片height
 @return 图片文件名
 */
- (NSString *) getFileNameFromUrl:(NSString *)url width:(CGFloat) width height:(CGFloat) height;

/**
 获取图片后缀
 
 @param data data
 @return 返回图片后缀
 */
- (NSString *)getImageFileExt:(NSData *)data;

- (NSString *)getMD5FromFileData:(NSData *)fileData;

/**
 获取图片size
 
 @param imgSize 原图片size
 @return 缩略图size
 */
- (CGSize)getFitSizeForImgSize:(CGSize)imgSize;

QIMKit+QIMFriend.h 好友

- (NSMutableDictionary *)getFriendListDict;

- (void)updateFriendList;

- (void)updateFriendInviteList;

#pragma mark - friend

/**
 获取某人好友验证的类型
 
 @param userId user id
 @return 返回验证类型信息
 */
- (NSDictionary *)getVerifyFreindModeWithXmppId:(NSString *)userId;

/**
 设置我的好友验证类型(带问题答案的)
 
 @param mode 好友验证类型
 @param question 问题
 @param answer 答案
 @return 是否成功
 */
- (BOOL)setVerifyFreindMode:(int)mode WithQuestion:(NSString *)question WithAnswer:(NSString *)answer;

/**
 get friends 信息?
 
 @return 返回friends信息
 */
- (NSString *)getFriendsJson;

/**
 请求添加好友
 
 @param xmppId 请求好友id
 @param answer 答案(如果需要有)
 */
- (void)addFriendPresenceWithXmppId:(NSString *)xmppId WithAnswer:(NSString *)answer;

/**
 回复好友请求
 
 @param xmppId 请求好友id
 @param reason 原因
 */
- (void)validationFriendWihtXmppId:(NSString *)xmppId WithReason:(NSString *)reason;

/**
 同意好友请求
 
 @param xmppId 对方id
 */
- (void)agreeFriendRequestWithXmppId:(NSString *)xmppId;

/**
 拒绝好友请求
 
 @param xmppId 对方id
 */
- (void)refusedFriendRequestWithXmppId:(NSString *)xmppId;

/**
 删除好友
 
 @param xmppId 对方id
 @param mode mode1为单项删除,mode为2为双项删除
 @return 返回处理结果
 */
- (BOOL)deleteFriendWithXmppId:(NSString *)xmppId WithMode:(int)mode;

/**
 获取好友验证类型
 
 @param xmppId 对方id
 @return 返回好友验证type
 */
- (int)getReceiveMsgLimitWithXmppId:(NSString *)xmppId;

/**
 设置好友验证类型
 
 @param mode QIMVerifyMode
 @return 返回处理结果
 */
- (BOOL)setReceiveMsgLimitWithMode:(int)mode;

// Black List
- (void)updateBlackList;

/**
 获取黑名单
 
 @return 返回黑名单
 */
- (NSArray *)getBlackList;

/**
 加入黑名单
 
 @param userId 用户id
 @return 是否成功
 */
- (BOOL)addToBlackListWithUserId:(NSString *)userId;

/**
 移除黑名单
 
 @param userId 用户id
 @return 是否成功
 */
- (BOOL)removeFromBlackListWithUserId:(NSString *)userId;

/**
 某人是否在黑名单里面
 
 @param userId 用户id
 @return 返回救过
 */
- (BOOL)isBlackListWithUserId:(NSString *)userId;

- (NSDictionary *)getLastFriendNotify;

- (NSInteger)getFriendNotifyCount;

QIMKit+QIMGroup.h

	/**
 更新群消息时间戳
 */
- (void)updateLastGroupMsgTime;

/**
 根据昵称获取群消息来源方向
 
 @param sendJid 昵称
 @return MessageDirection
 */
- (MessageDirection)getGroupMsgDirectionWithSendJid:(NSString *)sendJid;

- (NSArray *)getGroupIdList;

/**
 获取我的群组列表
 */
- (NSArray *)getGroupList;

/**
 获取我的群组列表
 */
- (NSArray *)getMyGroupList;

#pragma mark - 群名片

- (NSDictionary *)getUserInfoByGroupName:(NSString *)groupName;

/**
 根据群Id获取群组名片
 
 @param groupId 群组Id
 @return 群组名片Dic
 */
- (NSDictionary *)getGroupCardByGroupId:(NSString *)groupId;


/**
 根据群Id更新群组名片
 
 @param groupId 群组Id
 */
- (void)updateGroupCardByGroupId:(NSString *)groupId;


/**
 根据群Id列表更新群组名片
 
 @param groupIds 群组Id列表
 */
- (void)updateGroupCard:(NSArray *)groupIds;

/**
 设置群名片信息
 
 @param groupId 群Id
 @param nickName 我的昵称
 @param title 群Title
 @param desc 群公告
 @param headerSrc 群头像地址
 @return 设置群名片是否成功
 */
- (BOOL)setMucVcardForGroupId:(NSString *)groupId
                 WithNickName:(NSString *)nickName
                    WithTitle:(NSString *)title
                     WithDesc:(NSString *)desc
                WithHeaderSrc:(NSString *)headerSrc;

/**
 更新群公告
 
 @param topic 公告信息
 @param groupId 群Id
 @return 更新群公告是否成功
 */
- (BOOL)updateGroupTopic:(NSString *)topic WithGroupId:(NSString *)groupId;

#pragma mark - 群成员

/**
 根据群Id同步群成员列表
 
 @param groupId 群Id
 @return 群成员列表
 */
- (NSArray *)syncgroupMember:(NSString *)groupId;


/**
 根据群Id获取群成员列表
 
 @param groupId 群Id
 @return 群成员列表
 */
- (NSArray *)getGroupMembersByGroupId:(NSString *)groupId;

/**
 根据群Id获取群组公告信息
 
 @param groupId 群Id
 @return 群公告信息
 */
- (NSString *)getGroupTopicByGroupId:(NSString *)groupId;


/**
 判断本人是否为群成员
 
 @param groupId 群Id
 */
- (BOOL)isGroupMemberByGroupId:(NSString *)groupId;


/**
 判断本人是否为群主
 
 @param groupId 群组Id
 */
- (BOOL)isGroupOwner:(NSString *)groupId;


/**
 指定的user在群众的身份
 
 @param userId 指定的user(userId为nil,默认为登录用户)
 @param groupId 群id
 @return 返回在群众的身份 QIMGroupIdentity
 */
- (QIMGroupIdentity)GroupIdentityForUser:(NSString *)userId byGroup:(NSString *)groupId;

#pragma mark - 群头像

/**
 群默认头像
 */
+ (UIImage *)defaultGroupHeaderImage;

/**
 根据GroupId从远程拉取群头像
 */
- (void)getGroupHeaderImageFromRemoteWithGroupId:(NSString *)groupId;


/**
 根据群Id获取群组头像本地路径
 
 @param groupId 群Id
 @return 本地路径
 */
- (NSString *)getGroupImagePathFromLocalByGroupId:(NSString *)groupId;

/**
 根据GroupId从本地取群头像
 
 @param groupId 群Id
 */
- (UIImage *)getGroupImageFromLocalByGroupId:(NSString *)groupId;

#pragma mark - 群设置

/**
 根据群组Id获取群免打扰状态
 
 @param groupId 群组Id
 @return 群组免打扰状态
 */
- (BOOL)groupPushState:(NSString *)groupId;

/**
 根据群Id更新群组免打扰状态
 
 @param groupId 群组Id
 @param on 是否免打扰
 @return 更新群组免打扰状态是否成功
 */
- (BOOL)updateGroupPushState:(NSString *)groupId withOn:(BOOL)on;

- (void)addGroupMemberChange:(NSString *)groupId;
- (void)removeGroupMemberChange:(NSString *)groupId;
- (BOOL)isGroupMemberChangeByGroupId:(NSString *)groupId;

/**
 默认群组设置
 */
- (NSDictionary *) defaultGroupSetting;

#pragma mark - 创建群 & 邀请人入群

/**
 创建群聊
 
 @param groupName 群名称
 @param nickName 我的昵称
 @param members 群成员列表
 @param settingDic 群设置
 @param desc 群公告
 @param groupNickName 群昵称
 @param complate complate回调
 */
- (void)createGroupByGroupName:(NSString *)groupName
                WithMyNickName:(NSString *)nickName
              WithInviteMember:(NSArray *)members
                   WithSetting:(NSDictionary *)settingDic
                      WithDesc:(NSString *)desc
             WithGroupNickName:(NSString *)groupNickName
                  WithComplate:(void (^)(BOOL,NSString *))complate;

/**
 群组邀请users
 
 @param groupID 群ID
 @param groupName 群名
 @param members 邀请的成员userIDs
 @param block 回调
 */
-(void)joinGroupWithBuddies:(NSString *)groupID  groupName:(NSString *)groupName WithInviteMember:(NSArray *)members withCallback:(dispatch_block_t) block;


/**
 将群成员踢出群组
 
 @param name name
 @param memberJid memberJid
 @param groupId 群组Id
 @return 踢除是否成功
 */
- (BOOL)removeGroupMemberWithName:(NSString *)name WithJid:(NSString *)memberJid ForGroupId:(NSString *)groupId;

/**
 邀请成员进群
 
 @param members 成员列表
 @param groupId 群组Id
 @return 邀请入群是否成功
 */
- (BOOL)inviteMember:(NSArray *)members ToGroupId:(NSString *)groupId;

/**
 加入群聊
 
 @param groupId 群组Id
 @param name name
 @param initiative initiative
 @return 加入群聊是否成功
 */
- (BOOL)joinGroupId:(NSString *)groupId ByName:(NSString *)name isInitiative:(BOOL)initiative;


/**
 使用密码加入群聊
 
 @param groupId 群组Id
 @param name name
 @param password 入群密码
 @return 加入群聊是否成功
 */
- (BOOL)joinGroupId:(NSString *)groupId ByName:(NSString *)name WithPassword:(NSString *)password;


/**
 退出群聊
 
 @param groupId 群组Id
 @return 退出是否成功
 */
- (BOOL)quitGroupId:(NSString *)groupId;

- (void)updateChatRoomList;

/**
 快速入群
 */
- (void)quickJoinAllGroup;

- (void)joinGroupList;


/**
 增量群列表
 
 @param lastTime 增量时间戳
 */
- (void)getIncrementMucList:(NSTimeInterval)lastTime;


#pragma mark - SearchGroup

/**
 根据关键字搜索群组总数
 
 @param searchStr 关键字
 @return 群组总数
 */
- (NSInteger)searchGroupTotalCountBySearchStr:(NSString *)searchStr;


/**
 根据关键字搜索群组
 
 @param searchStr 关键字
 @param limit limit
 @param offset offset
 @return 搜索出来的群组列表
 */
- (NSArray *)searchGroupBySearchStr:(NSString *)searchStr WithLimit:(NSInteger)limit WithOffset:(NSInteger)offset;

/**
 根据关键字搜索在同一个群的用户
 
 @param searchStr 关键字
 @param groupId 群组Id
 @return 结果群成员列表
 */
- (NSArray *)searchGroupUserBySearchStr:(NSString *) searchStr inGroup:(NSString *) groupId;

- (NSArray *)searchUserBySearchStr:(NSString *)searchStr notInGroup:(NSString *)groupId;

QIMKit+QIMGroupMessage.h 群组消息

- (void)updateLastGroupMsgTime;

- (void)checkGroupChatMsg;

- (void)updateOfflineGroupMessages;

- (NSArray *)getMucMsgListWihtGroupId:(NSString *)groupId WithDirection:(int)direction WithLimit:(int)limit WithVersion:(long long)version;

- (void)updateMucReadMark;

QIMKit+QIMHelper.h -> 工具类

/**
 红包提示音
 */
- (void)playHongBaoSound;

/**
 新消息提示音
 */
- (void)playSound;

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL;

/**
 窗口抖动
 */
- (void)shockWindow;

QIMKit+QIMMessage.h 消息

/**
 获取指定类型消息
 
 @param msgType 指定消息类型
 @return 返回消息组
 */
- (NSArray *)getMsgsForMsgType:(QIMMessageType)msgType;

- (NSDictionary *)getMsgDictByMsgId:(NSString *)msgId;

- (Message *)getMsgByMsgId:(NSString *)msgId;

- (void)checkMsgTimeWithJid:(NSString *)jid WithRealJid:(NSString *)realJid WithMsgDate:(long long)msgDate WithGroup:(BOOL)flag;

- (void)checkMsgTimeWithJid:(NSString *)jid WithMsgDate:(long long)msgDate WithGroup:(BOOL)flag;

#pragma mark - 公共消息

/**
 根据用户Id设置Message附加属性 {'cctext', 'bu'}
 
 @param appendInfoDict 附加字典
 @param userId 用户Id
 */
- (void)setAppendInfo:(NSDictionary *)appendInfoDict ForUserId:(NSString *)userId;

/**
 根据用户Id获取Message附加属性  {'cctext', 'bu'}
 
 @param userId 用户Id
 */
- (NSDictionary *)getAppendInfoForUserId:(NSString *)userId;

/**
 根据用户Id设置ChannelId
 
 @param channelId channelId
 @param userId 用户Id
 */
- (void)setChannelInfo:(NSString *)channelId ForUserId:(NSString *)userId;

/**
 根据用户Id获取ChannelId
 
 @param userId 用户Id
 */
- (NSString *)getChancelInfoForUserId:(NSString *)userId;


/**
 根据用户Id设置 点击聊天内容中的URL务必拼接的参数 (众包需求)
 
 @param param param
 @param jid 用户Id
 */
- (void)setConversationParam:(NSDictionary *)param WithJid:(NSString *)jid;

/**
 根据用户Id获取 点击聊天内容中的URL务必拼接的参数 (众包需求)
 
 @param jid 用户Id
 */
- (NSDictionary *)conversationParamWithJid:(NSString *)jid;

/**
 发送正在输入消息
 
 @param userId to 给谁?
 */
- (void)sendTypingToUserId:(NSString *)userId;

/**
 消息入库
 
 @param msg message
 @param sid 会话ID(单人为to,群为群id)
 */
- (void)saveMsg:(Message *)msg ByJid:(NSString *)sid;

//更新消息
- (void)updateMsg:(Message *)msg ByJid:(NSString *)sid;

- (void)deleteMsg:(Message *)msg ByJid:(NSString *)sid;

/**
 发送已读状态(单人会话专用)
 
 @param messages 消息集
 @param xmppId 跟谁的消息对话 to值
 @return 是否成功
 */
- (BOOL)sendReadStateWithMessagesIdArray:(NSArray *)messages WithXmppId:(NSString *)xmppId;

/**
 发送已读状态(Consult会话专用)
 
 @param messages 消息集
 @param xmppId 跟谁的消息对话 to值
 @param realJid 真实 to值(consult消息用,普通消息此值传nil)
 @return 是否成功
 */
- (BOOL)sendReadStateWithMessagesIdArray:(NSArray *)messages WithXmppId:(NSString *)xmppId WithRealJid:(NSString *)realJid;

/**
 发送已读状态(群消息用)
 
 @param lastTime 已读截止时间,一般为最后一条消息时间
 @param groupId 群ID
 @return 是否成功
 */
- (BOOL)sendReadstateWithGroupLastMessageTime:(long long) lastTime withGroupId:(NSString *) groupId;


#pragma mark - 单人消息

/**
 发送窗口抖动
 
 @param userId 对方用户Id
 */
- (Message *)sendShockToUserId:(NSString *)userId;


/**
 撤销单人消息
 
 @param messageId messageId
 @param message message
 @param jid jid
 */
- (void)revokeMessageWithMessageId:(NSString *)messageId message:(NSString *)message ToJid:(NSString *)jid;

/**
 发送文件消息
 
 @param fileJson 文件URL
 @param userId 对方UserId
 @param msgId 消息Id
 */
- (void)sendFileJson:(NSString *)fileJson ToUserId:(NSString *)userId WithMsgId:(NSString *)msgId;

/**
 发送语音消息
 
 @param voiceUrl 语音文件地址
 @param voiceName 语音文件名
 @param seconds 语音时长
 @param userId 接收方Id
 */
- (Message *)sendVoiceUrl:(NSString *)voiceUrl withVoiceName:(NSString *)voiceName withSeconds:(int)seconds ToUserId:(NSString *)userId;


/**
 发送消息
 
 @param msg 消息Message对象
 @param userId 接收方Id
 */
- (Message *)sendMessage:(Message *)msg ToUserId:(NSString *)userId;

/**
 发送单人消息
 
 @param msg 消息Body
 @param info 消息ExtendInfo
 @param userId 接收Id
 @param msgType 消息Type
 */
- (Message *)sendMessage:(NSString *)msg WithInfo:(NSString *)info ToUserId:(NSString *)userId WihtMsgType:(int)msgType;


// Note消息自动回复消息(您好,我是在线客服xxx,很高兴为您服务)
- (Message *)createNoteReplyMessage:(NSString *)msg ToUserId:(NSString *)user;

#pragma mark - 群消息


/**
 发送群消息
 
 @param msg 消息Body
 @param groupId 群Id
 */
- (Message *)sendMessage:(NSString *)msg ToGroupId:(NSString *)groupId ;


/**
 发送群消息
 
 @param msg 消息Body
 @param info 消息ExtendInfo
 @param groupId 群Id
 @param msgType 消息Type
 */
- (Message *)sendMessage:(NSString *)msg WithInfo:(NSString *)info ToGroupId:(NSString *)groupId WihtMsgType:(int)msgType;


/**
 发送群消息
 
 @param msg 消息Body
 @param info 消息ExtendInfo
 @param groupId 群Id
 @param msgType 消息Type
 @param msgId 消息Id
 */
- (Message *)sendMessage:(NSString *)msg WithInfo:(NSString *)info ToGroupId:(NSString *)groupId WihtMsgType:(int)msgType WithMsgId:(NSString *)msgId;

/**
 发送群窗口抖动
 
 @param groupId 群Id
 */
- (Message *)sendGroupShockToGroupId:(NSString *)groupId;

/**
 回复群消息
 
 @param replyMsgId 回复消息id
 @param replyUser 回复userid
 @param msgId 消息id
 @param message 消息
 @param groupId 群id
 @return 是否成功
 */
- (BOOL)sendReplyMessageId:(NSString *)replyMsgId WithReplyUser:(NSString *)replyUser WithMessageId:(NSString *)msgId WithMessage:(NSString *)message ToGroupId:(NSString *)groupId;

/**
 撤销群消息
 
 @param messageId messageId
 @param message message
 @param jid jid
 */
- (void)revokeGroupMessageWithMessageId:(NSString *)messageId message:(NSString *)message ToJid:(NSString *)jid;

/**
 发送群文件
 
 @param fileJson 文件地址
 @param groupId 群Id
 @param msgId 消息Id
 */
- (void)sendFileJson:(NSString *)fileJson ToGroupId:(NSString *)groupId WihtMsgId:(NSString *)msgId;


/**
 发送群语音消息
 
 @param voiceUrl 语音文件地址
 @param voiceName 语音文件名称
 @param seconds 语音时长
 @param groupId 群Id
 */
- (Message *)sendGroupVoiceUrl:(NSString *)voiceUrl withVoiceName:(NSString *)voiceName withSeconds:(int)seconds ToGroupId:(NSString *)groupId;

// Note消息自动回复消息(您好,我是在线客服xxx,很高兴为您服务)
- (Message *)createNoteReplyMessage:(NSString *)msg ToGroupId:(NSString *)groupId;

// 发送音视频消息
- (void)sendAudioVideoWithType:(int)msgType WithBody:(NSString *)body WithExtentInfo:(NSString *)extentInfo WithMsgId:(NSString *)msgId ToJid:(NSString *)jid;

/**
 创建消息
 
 @param msg 消息文本
 @param extendInfo 扩展消息
 @param userId 用户id(单人id/群id/虚拟id)
 @param userType 会话类型 ChatType
 @param msgType 消息类型 MessageType
 @param mId 消息id,传nil会默认生成
 @param willSave 是否入库
 @return 返回创建的消息
 */
- (Message *)createMessageWithMsg:(NSString *)msg extenddInfo:(NSString *)extendInfo userId:(NSString *)userId userType:(ChatType)userType msgType:(QIMMessageType)msgType forMsgId:(NSString *)mId willSave:(BOOL)willSave;

- (Message *)createMessageWithMsg:(NSString *)msg extenddInfo:(NSString *)extendInfo userId:(NSString *)userId realJid:(NSString *)realJid userType:(ChatType)userType msgType:(QIMMessageType)msgType forMsgId:(NSString *)mId msgState:(MessageState)msgState willSave:(BOOL)willSave;

- (Message *)createMessageWithMsg:(NSString *)msg extenddInfo:(NSString *)extendInfo userId:(NSString *)userId realJid:(NSString *)realJid userType:(ChatType)userType msgType:(QIMMessageType)msgType forMsgId:(NSString *)mId willSave:(BOOL)willSave;

- (Message *)sendMessage:(Message *)msg withChatType:(NSString *)chatType channelInfo:(NSString *)channelInfo realFrom:(NSString *)realFrom realTo:(NSString *)realTo ochatJson:(NSString *)ochatJson;

- (Message *)createMessageWithMsg:(NSString *)msg extenddInfo:(NSString *)extendInfo userId:(NSString *)userId userType:(ChatType)userType msgType:(QIMMessageType)msgType;

- (Message *)createMessageWithMsg:(NSString *)msg extenddInfo:(NSString *)extendInfo userId:(NSString *)userId userType:(ChatType)userType msgType:(QIMMessageType)msgType backinfo:(NSString *)backInfo;

- (Message *)createMessageWithMsg:(NSString *)msg extenddInfo:(NSString *)extendInfo userId:(NSString *)userId userType:(ChatType)userType msgType:(QIMMessageType)msgType forMsgId:(NSString *)mId;

- (void)synchronizeChatSessionWithUserId:(NSString *)userId WithChatType:(ChatType)chatType WithRealJid:(NSString *)realJid;

#pragma mark - 位置共享

/**
 发送共享位置消息
 
 @param msg 消息描述
 @param info 扩展消息
 @param jid 对象id
 @param msgType 消息类型
 @return 返回消息本身
 */
- (Message *)sendShareLocationMessage:(NSString *)msg WithInfo:(NSString *)info ToJid:(NSString *)jid WihtMsgType:(int)msgType;

/**
 共享位置开始
 
 @param userId 用户id
 @param shareLocationId 共享位置标识
 @return 返回消息本身
 */
- (Message *)beginShareLocationToUserId:(NSString *)userId WithShareLocationId:(NSString *)shareLocationId;

/**
 共享位置开始(群)
 
 @param GroupId 群id
 @param shareLocationId 共享位置标识
 @return 返回消息本身
 */
- (Message *)beginShareLocationToGroupId:(NSString *)GroupId WithShareLocationId:(NSString *)shareLocationId;

/**
 加入消息共享
 
 @param users 共享消息的用户组
 @param shareLocationId 共享消息标识
 @return 是否成功
 */
- (BOOL)joinShareLocationToUsers:(NSArray *)users WithShareLocationId:(NSString *)shareLocationId;

/**
 发送我的位置给其他用户
 
 @param users 共享位置的用户组
 @param locationInfo 位置信息
 @param shareLocationId 共享消息标识
 @return 是否成功
 */
- (BOOL)sendMyLocationToUsers:(NSArray *)users WithLocationInfo:(NSString *)locationInfo ByShareLocationId:(NSString *)shareLocationId;

/**
 退出位置共享
 
 @param users 共享位置的用户组
 @param shareLocationId 共享消息标识
 @return 是否成功
 */
- (BOOL)quitShareLocationToUsers:(NSArray *)users WithShareLocationId:(NSString *)shareLocationId;

/**
 获取共享标识
 
 @param jid jid
 @return 返回共享消息标识
 */
- (NSString *)getShareLocationIdByJid:(NSString *)jid;

/**
 获取共享位置信息
 
 @param shareLocationId 共享位置标识
 @return 返回共享位置信息
 */
- (NSString *)getShareLocationFromIdByShareLocationId:(NSString *)shareLocationId;

/**
 获取共享位置用户组
 
 @param shareLocationId 共享位置标识
 @return 返回用户组
 */
- (NSArray *)getShareLocationUsersByShareLocationId:(NSString *)shareLocationId;


#pragma mark - 未读数

- (void)updateMsgReadCompensateSetWithMsgId:(NSString *)msgId WithAddFlag:(BOOL)flag WithState:(MessageState)state;

- (NSMutableSet *)getLastMsgCompensateReadSet;

/**
 *  返回未读消息数组
 */
- (NSArray *)getNotReaderMsgList;

/**
 清空所有未读消息
 */
- (void) clearAllNoRead;

/**
 清空HeadLine未读消息
 */
- (void)clearSystemMsgNotReadWithJid:(NSString *)jid;

/**
 根据Jid清空未读消息
 
 @param jid 用户Id
 */
- (void)clearNotReadMsgByJid:(NSString *)jid;

/**
 根据Jid & RealJid清空未读消息
 
 @param jid 用户Id
 @param realJid 真实用户Id
 */
- (void)clearNotReadMsgByJid:(NSString *)jid ByRealJid:(NSString *)realJid;

/**
 根据群Id清空未读消息
 
 @param groupId 群id
 */
- (void)clearNotReadMsgByGroupId:(NSString *)groupId;

/**
 获取Jid下的未读消息数
 
 @param jid Jid
 */
- (NSInteger)getNotReadMsgCountByJid:(NSString *)jid;

/**
 获取Jid & 真实Id下的未读消息数
 
 @param jid 用户Id
 @param realJid 真实用户Id
 */
- (NSInteger)getNotReadMsgCountByJid:(NSString *)jid WithRealJid:(NSString *)realJid;

- (void)updateAppNotReadCount;

/**
 获取App总未读数
 */
- (NSInteger)getAppNotReaderCount;

/**
 获取接收但不提醒的未读数
 */
- (NSInteger)getNotRemindNotReaderCount;

/**
 获取骆驼帮未读消息数
 */
- (void)getExploreNotReaderCount;

/**
 获取QChat商家未回复留言数
 */
- (NSInteger)getLeaveMsgNotReaderCount;

- (void)updateNotReadCountCacheByJid:(NSString *)jid WithRealJid:(NSString *)realJid;
- (void)updateMessageStateWithNewState:(MessageState)state ByMsgIdList:(NSArray *)MsgIdList;

- (void)updateNotReadCountCacheByJid:(NSString *)jid;

- (void)sendNoteToUserId:(NSString *)userId WihtLine:(NSString *)line WithType:(NSString *)serviceType WihtUrl:(NSString *)url WithIp:(NSString *)ip WithProductInfo:(NSDictionary *)productInfo;
- (NSString *)beginChatWithStrId:(NSString *)strId WithPid:(NSString *)pid WithIp:(NSString *)userIp WithLine:(NSString *)line WithType:(NSString *)type WithSeatId:(NSString *)seatId;
- (void)endChatByChatId:(NSString *)chatId WithUserId:(NSString *)toUserId;
- (void)saveChatId:(NSString *)chatId ForUserId:(NSString *)userId;

- (void)setMsgSentFaild;


- (NSDictionary *)parseMessageByMsgRaw:(id)msgRaw;

- (NSDictionary *)parseOriginMessageByMsgRaw:(id)msgRaw;

- (NSArray *)getNotReadMsgIdListByUserId:(NSString *)userId WithRealJid:(NSString *)realJid;

/**
 获取消息列表
 
 @param userId   用户名
 @param limit    获取条数
 @param realJid  真实jid
 @param offset   偏移量
 @param complete 回调block
 */
- (void)getMsgListByUserId:(NSString *)userId WithRealJid:(NSString *)realJid WihtLimit:(int)limit WithOffset:(int)offset WihtComplete:(void (^)(NSArray *))complete;

/**
 获取消息列表
 
 @param userId 虚拟id
 @param timeStamp 时间戳
 @param complete 回调block
 */
- (void)getMsgListByUserId:(NSString *)userId FromTimeStamp:(long long)timeStamp WihtComplete:(void (^)(NSArray *))complete;

/**
 获取消息列表
 
 @param userId 虚拟id
 @param realJid 真实id
 
 @param timeStamp 时间戳
 @param complete 回调block
 */
- (void)getMsgListByUserId:(NSString *)userId WithRealJid:(NSString *)realJid FromTimeStamp:(long long)timeStamp WihtComplete:(void (^)(NSArray *))complete;

- (void)getConsultServerMsgLisByUserId:(NSString *)userId WithVirtualId:(NSString *)virtualId WithLimit:(int)limit WithOffset:(int)offset WithComplete:(void (^)(NSArray *))complete;

/**
 FS msg
 
 @param xmppId user id
 @return 返回结果
 */
- (NSArray *)getFSMsgByXmppId:(NSString *)xmppId;

/**
 FS msg
 
 @param msgId 消息表示
 @return 返回结果
 */
- (NSDictionary *)getFSMsgByMsgId:(NSString *)msgId;

- (void)checkOfflineMsg;

QIMKit+QIMMySelfStatus.h -> 用户状态

/**
 上线
 */
- (void)goOnline;

/**
 离开
 */
- (void)goAway;

/**
 忙碌
 */
- (void)goDnd;

/**
 下线
 */
- (void)goOffline;

- (void) deactiveReconnect;

/**
 active reconnect
 */
- (void) activeReconnect;

QIMKit+QIMNavConfig.h -> 导航

- (NSString *)qimNav_HttpHost;
- (NSString *)qimNav_TakeSmsUrl;
- (NSString *)qimNav_CheckSmsUrl;
- (NSString *)qimNav_NewHttpUrl;
- (NSString *)qimNav_WikiUrl;
- (NSString *)qimNav_TokenSmsUrl;
- (NSString *)qimNav_Javaurl;
- (NSString *)qimNav_Pubkey;
- (NSString *)qimNav_Domain;
- (QTLoginType)qimNav_LoginType; //登录方式
- (NSString *)qimNav_XmppHost;

/**
 文件服务HTTP接口 Host
 
 @return 返回接口Host
 */
- (NSString *)qimNav_InnerFileHttpHost;
- (NSString *)qimNav_Port;  //xmpp端口
- (NSString *)qimNav_ProtobufPort;   //Pb端口


//hosts
- (NSString *)qimNav_HashHosts;
- (NSString *)qimNav_QCHost;

/**
 获取广告内容
 
 @return 返回广告数据
 */
- (NSArray *)qimNav_AdItems;

/**
 ad sec
 
 @return ad sec
 */
- (int)qimNav_AdSec;

/**
 是否展示广告
 
 @return 返回开关值
 */
- (BOOL)qimNav_AdShown;

/**
 is ad carousel
 
 @return 返回bool值
 */
- (BOOL)qimNav_AdCarousel;

/**
 延迟
 
 @return 延迟
 */
- (int)qimNav_AdCarouselDelay;

/**
 是否允许跳过
 
 @return 返回是否允许跳过
 */
- (BOOL)qimNav_AdAllowSkip;
- (long long)qimNav_AdInterval;   //两次广告的间隔之间

/**
 跳过提示
 
 @return 返回跳过提示语
 */
- (NSString *)qimNav_AdSkipTips;

//imConfig
- (BOOL)qimNav_ShowOA;                //展示OA
- (BOOL)qimNav_ShowOrganizational;    //展示组织架构

//ability
- (NSString *)qimNav_GetPushState;
- (NSString *)qimNav_SetPushState;
- (NSString *)qimNav_QCloudHost;
- (NSString *)qimNav_Resetpwd;
- (NSString *)qimNav_Mconfig;
- (NSString *)qimNav_SearchUrl;
- (NSString *)qimNav_QcGrabOrder;
- (NSString *)qimNav_QcOrderManager;
- (BOOL)qimNav_NewPush;
- (BOOL)qimNav_Showmsgstat;

//RN Ability
- (BOOL)qimNav_RNMineView;      //展示RNMineView
- (BOOL)qimNav_RNAboutView;     //展示RNAboutView
- (BOOL)qimNav_RNGroupCardView; //展示RNGroupCardView
- (BOOL)qimNav_RNContactView;   //展示RNContactView
- (BOOL)qimNav_RNSettingView;   //展示RNSettingView
- (BOOL)qimNav_RNUserCardView;  //展示RNUserCardView
- (BOOL)qimNav_RNGroupListView;   //展示RN 群组列表
- (BOOL)qimNav_RNPublicNumberListView;    //展示RN 公众号列表

//OPS
- (NSString *)qimNav_OpsHost;

//Video
- (NSString *)qimNav_Group_room_host;
- (NSString *)qimNav_Signal_host;
- (NSString *)qimNav_WssHost;
- (NSString *)qimNav_VideoApiHost;

//Versions
- (long long)qimNav_NavVersion;
- (long long)qimNav_CheckConfigVersion;

- (NSString *)qimNav_NavUrl;

- (NSString *)qimNav_NavTitle;

- (BOOL)qimNav_Debug;

- (NSArray *)qimNav_getDebugers;

- (NSString *)qimNav_HealthcheckUrl;

- (BOOL)qimNav_updateNavigationConfigWithCheck:(BOOL)check;

/**
 清除广告
 */
- (void)qimNav_clearAdvertSource;

- (void)qimNav_swicthLocalNavConfigWithNavDict:(NSDictionary *)navDict;

- (NSString *)qimNav_getAdvertImageFilePath;

- (void)qimNav_updateAdvertConfigWithCheck:(BOOL)check;

- (BOOL)qimNav_updateNavigationConfigWithDomain:(NSString *)domain WithUserName:(NSString *)userName;

- (BOOL)qimNav_updateNavigationConfigWithNavDict:(NSDictionary *)navDict WithUserName:(NSString *)userName Check:(BOOL)check WithForcedUpdate:(BOOL)forcedUpdate;

QIMKit+QIMNetWork.h -> IM网络状态

/**
 获取当前网络状态

 @return appWorkState
 */
- (AppWorkState)appWorkState;


/**
 检查网络是否能够连接到互联网

 @return YES / NO
 */
- (BOOL)checkNetworkCanUser;


/**
 检查用户是否掉线,是否需要重新登录
 */
- (void)checkNetworkStatus;


/**
 接收网络变更通知

 @param notify 网络变更通知
 */
- (void)onNetworkChange:(NSNotification *)notify;


/**
 更新当前网络状态

 @param appWorkState 网络状态
 */
- (void)updateAppWorkState:(AppWorkState)appWorkState;


/**
 更新当前网络状态为“未登录”
 */
- (void)onDisconnect;

QIMKit+QIMSession.h -> 会话

/**
 set 当前的会话id
 
 @param userId 当前的会话id
 */
- (void)setCurrentSessionUserId:(NSString *)userId;

/**
 获取当前会话Id
 */
- (NSString *)getCurrentSessionUserId;

/**
 获取最近的单人会话session
 
 @return 返回session信息
 */
- (NSDictionary *)getLastedSingleChatSession;

/**
 获取最近对话列表
 
 @return 最近对话列表
 */
- (NSArray *)getSessionList;

/**
 *  清除会话列表
 */
- (void)deleteSessionList;

/**
 根据XmppId移除某一会话

 @param sid xmppId
 */
- (void)removeSessionById:(NSString *)sid;

/**
 根据虚拟账号Id 及 用户RealJid 移除某一Consult会话

 @param sid 虚拟账号Id
 @param realJid 用户真实Id
 */
- (void)removeConsultSessionById:(NSString *)sid RealId:(NSString *)realJid;


/**
 根据用户Id & 名称打开一个单人会话

 @param userId 用户Id
 @param name 用户名称
 */
- (ChatType)openChatSessionByUserId:(NSString *)userId ByName:(NSString *)name;

/**
 根据群Id & 群名称打开一个群会话

 @param groupId 群Id
 @param name 群名称
 */
- (void)openGroupSessionByGroupId:(NSString *)groupId ByName:(NSString *)name;


/**
 根据虚拟账号Id & 用户真实Id RealJid 及会话类型打开一个会话

 @param userId 虚拟账号Id
 @param realJid 用户真实Id
 @param chatType 会话类型
 */
- (void)openChatSessionByUserId:(NSString *)userId ByRealJid:(NSString *)realJid WithChatType:(ChatType)chatType;


/**
 新增一个Consult会话

 @param sessionId sessionId
 @param realJid 用户真实Id
 @param userId 虚拟账号Id
 @param msgId msgId
 @param open 是否打开
 @param lastUpdateTime lastUpdateTime
 @param chatType 会话类型
 */
- (void)addConsultSessionById:(NSString *)sessionId ByRealJid:(NSString *)realJid WithUserId:(NSString *)userId ByMsgId:(NSString *)msgId WithOpen:(BOOL)open WithLastUpdateTime:(long long)lastUpdateTime WithChatType:(ChatType)chatType;


/**
 新增一个普通会话

 @param type 会话类型
 @param jid 会话Id
 @param msgId 消息Id
 @param msgTime 消息时间戳
 */
- (void)addSessionByType:(ChatType)type ById:(NSString *)jid ByMsgId:(NSString *)msgId WithMsgTime:(long long)msgTime WithNeedUpdate:(BOOL)needUpdate;

QIMKit+QIMUserCard.h -> 用户名片

/**
 更新用户备注信息
 
 @param userId 用户Id
 @param markUpName 用户备注
 */
- (void)updateUserMarkupNameWithUserId:(NSString *)userId WithMarkupName:(NSString *)markUpName;

/**
 获取用户备注信息
 
 @param userId 用户Id
 @return 用户备注
 */
- (NSString *)getUserMarkupNameWithUserId:(NSString *)userId;

/**
 更新用户名片

 @param xmppIds 用户Id数组
 */
- (void)updateUserCard:(NSArray *)xmppIds;

/**
 *  通过userId获取用户大头像
 *
 *  @param userId 头像url
 */
- (NSString *)getUserBigHeaderImageUrlWihtUserId:(NSString *)userId;

- (void)updateUserBigHeaderImageUrl:(NSString *)url WihtVersion:(NSString *)version ForUserId:(NSString *)userId ;


/**
 更新我的名片信息
 */
- (void)updateMyCard;

/**
 更新QChat群成员
 
 @param groupId 群id
 */
- (void)updateQChatGroupMembersCardForGroupId:(NSString *)groupId;

/**
 更新我的头像

 @param photoData 头像二进制
 */
- (void)updateMyPhoto:(NSData *)photoData;

/**
 *  根据用户Id获取用户信息
 *
 *  @param myId 用户Id
 *
 *  @return 用户信息Info
 */
- (NSDictionary *)getUserInfoByUserId:(NSString *)myId;

/**
 + 根据用户Id获取WorkInfo
 + */
- (NSDictionary *)getUserWorkInfoByUserId:(NSString *)userId;


/**
 获取远端用户职工信息

 @param userId 用户Id
 */
- (NSDictionary *)getRemoteUserWorkInfoWithUserId:(NSString *)userId;


/**
 获取用户手机号

 @param qtalkId qtalkId
 */
- (NSString *)getPhoneNumberWithUserId:(NSString *)qtalkId;

/**
 *  通过nickName获取用户信息
 *
 *  @param nickName 昵称
 *
 */
//TODO 先本地获取名片,若无再取数据库
- (NSDictionary *)getUserInfoByName:(NSString *)nickName;

#pragma mark - 用户头像

/**
 *  根据用户Id更新用户头像
 *
 *  @param userId 用户Id
 */
/*
- (void)takeUserHeaderByUserId:(NSString *)userId;
*/

/**
 用户默认头像
 */
+ (NSData *)defaultUserHeaderImage;

/**
 第三方Cell默认头像
 
 @return 用户头像
 */
+ (UIImage *)defaultCommonTrdInfoImage ;

/**
 根据用户Id获取用户名片信息

 @param rtxId 用户Id
 */
- (NSDictionary *)getUserInfoByRTX:(NSString *)rtxId ;

/**
 更新用户签名

 @param userId 用户Id
 @param signature 个性签名
 */
- (void)updateUserSignatureForUser:(NSString *)userId signature:(NSString *)signature;


/**
 获取用户Profile

 @param userId 用户Id
 @param update 是否需要更新
 @param block 回调
 */
- (void)userProfilewithUserId:(NSString *)userId needupdate:(BOOL)update withBlock:(void (^)(NSDictionary *))block;

/**
 本地获取用户Profile
 
 @param userId 用户Id
 */
- (NSDictionary *)getLocalProfileForUserId:(NSString *)userId;

/**
 *  获取userProfile
 *
 *  @param userIds 用户ID
 *
 *  @return userProfile
 *  数据样例:
 
 "dan.liu@ejabhost1" =     {
 M = "\U8fd9\U592aimba\U4e86!";
 U = "dan.liu";
 V = 19;
 };
 */
- (NSDictionary *)getRemoteUserProfileForUserIds:(NSArray *)userIds;


/**
 根据用户Id获取QChat 用户名片信息

 @param user 用户Id
 */
- (NSDictionary *)getQChatUserInfoForUser:(NSString *)user;

#pragma mark - 跨域

/**
 搜索用户(跨域)
 
 @param searchStr 关键词
 @return 返回用户列表
 */
- (NSArray *)searchQunarUserBySearchStr:(NSString *)searchStr;

/**
 搜索用户
 
 @param searchStr 关键词
 @return 返回用户列表
 */
- (NSArray *)searchUserListBySearchStr:(NSString *)searchStr;

- (NSInteger)searchUserListTotalCountBySearchStr:(NSString *)searchStr;

- (NSArray *)searchUserListBySearchStr:(NSString *)searchStr WithLimit:(NSInteger)limit WithOffset:(NSInteger)offset;

/**
 搜索用户(全平台)
 
 @param searchStr 关键词
 @param searchURL search url
 @param Id id
 @param limitNum 限制条数
 @param offset 偏移量
 @return 返回用户列表
 */
- (NSArray *)searchUserListBySearchStr:(NSString *)searchStr Url:(NSString *)searchURL id:(NSString *)Id limit:(NSInteger)limitNum offset:(NSInteger)offset;
Clone this wiki locally