协同sdk说明


用户

<p>[TOC]</p> <h2>用户</h2> <p><code>QDIMUserManager</code> 提供了用户账号资料管理。</p> <p>QDUser 原型</p> <pre><code>@interface QDUser : NSObject /** * 用户ID */ @property (nonatomic, copy) NSString *userId; /** * 在组织架构里面的排序 */ @property (nonatomic, assign) NSInteger index; /** * 用户状态 0-未激活;1-正常;2-禁用;3-删除 */ @property (nonatomic, assign) NSInteger userStatus; /** * 用户昵称 */ @property (nullable, nonatomic, copy) NSString *nickname; /** * 用户登录名 */ @property (nullable, nonatomic, copy) NSString *loginname; /** * 备注名 */ @property (nullable, nonatomic, copy) NSString *alias; /** * 头像信息 */ @property (nullable, nonatomic, copy) NSString *avatar; /** * 性别 0:未知 1:男 2:女 */ @property (nullable, nonatomic, copy) NSString *sex; /** * 生日 */ @property (nullable, nonatomic, copy) NSString *birthday; /** * 简介 */ @property (nullable, nonatomic, copy) NSString *intro; /** * 移动电话 */ @property (nullable, nonatomic, copy) NSString *mobile; /** * 办公电话 */ @property (nullable, nonatomic, copy) NSString *OPhone; /** * 职位 */ @property (nullable, nonatomic, copy) NSString *job; /** * 员工号 */ @property (nullable, nonatomic, copy) NSString *empcode; /** * 电子邮件 */ @property (nullable, nonatomic, copy) NSString *email; /** * 房间号 */ @property (nullable, nonatomic, copy) NSString *roomNum; /** * 短号 */ @property (nullable, nonatomic, copy) NSString *shortNum; /** * 用户等级 */ @property (nullable, nonatomic, copy) NSString *secLevel; /** * 地址 */ @property (nullable, nonatomic, copy) NSString *address; /** * 最近离线时间 */ @property (nullable, nonatomic, copy) NSString *lastOffLineTime; /** * 姓名简拼 */ @property (nullable, nonatomic, copy) NSString *nameSP; /** * 姓名全拼 */ @property (nullable, nonatomic, copy) NSString *nameAP; /** * 扩展字段 */ @property (nullable, nonatomic, copy) NSString *ext; @property (nullable, nonatomic, copy) NSString *extdata1; @property (nullable, nonatomic, copy) NSString *extdata2; @property (nullable, nonatomic, copy) NSString *extdata3; @property (nullable, nonatomic, copy) NSString *extdata4; @property (nullable, nonatomic, copy) NSString *extdata5; /** * 会话是否置顶 * * @return 是否置顶 */ - (BOOL)sessionIsTop; /** * 是否需要消息提醒 * * @return 是否需要消息提醒 */ - (BOOL)notifyForNewMsg; /** * 是否在黑名单中 * * @return 是否在黑名单中 */ - (BOOL)isInMyBlackList; /** * 聊天背景图片url (本地存储使用) * * @return url */ - (NSString *)imgurlSessionBackground; @end</code></pre> <h2>登录用户的用户信息以及部分系统配置</h2> <p><code>QDLoginInfo</code> 提供了用户账号资料管理, 配置信息配合WorkPro部分功能使用</p> <pre><code>/** * ssid */ @property (nonatomic, copy) NSString *SSID; /** * 账号 */ @property (nonatomic, copy) NSString *userId; /** * 用户名 */ @property (nonatomic, copy) NSString *username; /** * 登录名 */ @property (nonatomic, copy) NSString *loginName; /** * 用户头像 */ @property (nonatomic, copy) NSString *userAvatar; /** * 密码 */ @property (nonatomic, copy) NSString *password; /** * 加密类型 */ @property (nonatomic, assign) NSInteger enType; /** * 消息加密方式 */ @property (nonatomic, assign) NSInteger msgEntype; /** * 登录Token */ @property (nonatomic, copy, nullable) NSString *token; /** * 消息加密密钥 */ @property (nonatomic, copy, nullable) NSString *msgToken; /** * 会话ID */ @property (nonatomic, copy) NSString *sessionID; /** * 登录服务器ID */ @property (nonatomic, copy) NSString *serverID; /** * 序列号失效天数 */ @property (nonatomic, assign) NSInteger SLDay; /** * 序列号提醒 1,试用到期剩余10天内提醒;2-注册到期剩余10天内提醒,3-试用到期提醒,4-注册到期提醒 */ @property (nonatomic, assign) NSInteger SLPrompt; /** * 服务端配置属性 */ @property (nonatomic, assign) NSInteger CFlag; /** * 服务端时间 */ @property (nonatomic, copy) NSString *STime; /** * 本地时间与服务器时间的差值 */ @property (nonatomic, assign) NSInteger STimeOffset; /** * 公司名称 */ @property (nonatomic, copy) NSString *scName; /** * 皮肤版本号 */ @property (nonatomic, copy) NSString *skinVer; /** * 服务端保存的客户端版本号 */ @property (nonatomic, copy) NSString *packVer; /** 版本类型 -1, 标准版本;2,专业版本(默认);3,国产化版本 */ @property (nonatomic, assign) NSInteger verType; /** * 第三方集成授权 */ @property (nonatomic, copy) NSString *verifytoken; /** * 扩展属性 */ @property (nonatomic, copy) NSString *client_ext; // ====================================================================== // 所在组织架构公司、部门信息 // ====================================================================== /** * 所在公司 */ @property (nonatomic, strong) NSArray&lt;QDCompany *&gt; *companys; /** * 所在的部门 */ @property (nonatomic, strong) NSArray&lt;QDDept *&gt; *depts; // ====================================================================== // 服务接口信息 // ====================================================================== /** * 域名 */ @property (nonatomic, copy) NSString *domain; /** * 登录服务器IP地址 */ @property (nonatomic, copy) NSString *loginServer; /** * 登录服务器端口 */ @property (nonatomic, assign) int16_t loginPort; /** * 文件服务器地址 */ @property (nonatomic, copy) NSString *fileServer; /** * 文件服务器端口 */ @property (nonatomic, assign) int16_t filePort; /** * 音视频服务器地址 */ @property (nonatomic, copy) NSString *mediaServer; /** * web服务地址 */ @property (nonatomic, copy) NSString *webServer; /** * web文件服务地址 */ @property (nonatomic, copy) NSString *webFileServer; // ====================================================================== // 权限配置 // ====================================================================== @property (nonatomic, strong) NSDictionary *powerDict; @property (nonatomic, copy) NSString *authen; @property (nonatomic, copy) NSString *appid; @property (nonatomic, copy) NSString *appSecret; @property (nonatomic, assign) int8_t msg_ace; @property (nonatomic, assign) int8_t profile_edit; @property (nonatomic, assign) int8_t profile_view; @property (nonatomic, assign) double attach_size_limit; @property (nonatomic, assign) NSInteger video_use; @property (nonatomic, assign) NSInteger batch_person_limit; // ====================================================================== // 高管配置 // ====================================================================== /** * 用户密级 */ @property (nonatomic, copy) NSString *secLevel; /** * 高管模式禁止策略 取值说明: 值叠加 1-禁止聊天 2-禁止查看联系方式 */ @property (nonatomic, assign) NSInteger grade_disable_ace; /** * 高管模式跨级策略 选择允许低级别用户跨级沟通:1,2,3,禁止跨级(0) */ @property (nonatomic, assign) NSInteger grade_cross_grade; // ====================================================================== // 修改用户信息权限 // ====================================================================== /** * 是否可以修改职位 */ - (BOOL)enableEditJob; /** * 是否修改头像 */ - (BOOL)enableEditPic; /** * 是否可以修改电子邮件 */ - (BOOL)enabelEditEmail; /** * 是否可以修改手机号 */ - (BOOL)enableEditMobile; /** * 是否可以修改座机号 */ - (BOOL)enabelEditOPhone; // ====================================================================== // 查看用户信息权限 // ====================================================================== /** * 是否可以查看邮箱 */ - (BOOL)enableViewEmail; /** * 是否可以查看手机号 */ - (BOOL)enableViewMobile; /** * 是否可以查看座机 */ - (BOOL)enableViewOPhone; /** * 是否可以查看房间号 */ - (BOOL)enableViewRoomNum; // ====================================================================== // 功能权限 // ====================================================================== /** * 是否禁止语音功能 */ - (BOOL)disableAudio; /** * 是否禁止视频功能 */ - (BOOL)disableVideo; /** * 是否开启水印 */ - (BOOL)enableWatermask; /** * 是否禁止外部联系人互加好友 */ - (BOOL)enableAddFriend; /** * 是否禁止发送文件 */ - (BOOL)disableSendFile; /** * 是否禁止修改密码 */ - (BOOL)disableChangePwd; /** * 是否开启密聊功能 */ - (BOOL)enableSecretChat; /** * 是否开启用户安全等级 */ - (BOOL)enableUserSecret; /** * 是否设置门户为程序主页 */ - (BOOL)enableHomePortal; /** * 是否禁止按在线状态排序 */ - (BOOL)disableOnlineSort; /** * 是否禁止显示在线状态 */ - (BOOL)disableShowOnline; /** * 是否禁止群共享 */ - (BOOL)disableGroupShare; /** * 是否开启敏感词过滤 */ - (BOOL)enableFilterSeword; /** * 禁止文件下载 */ - (BOOL)disableDownloadFile; /** * 是否允许好友邀请 */ - (BOOL)enableFriendInvited; /** * 是否禁止启用消息文件存储到云盘 */ - (BOOL)enableSaveFileToYunPan; /** * 是否启用消息文件存储到云盘 */ - (BOOL)enableSaveFileToYunPan; /** * 禁止搜索外部联系人 */ - (BOOL)disableSearchExternalContact; /** * 是否开启群主销毁消息功能 */ - (BOOL)enableGroupOwnerDestoryMessage; /** * 单对单音视频是否使用Linphone */ - (BOOL)enableP2PLinphone; /** * 是否无感知撤回消息 */ - (BOOL)enableNoPerceivedRecallMessage; </code></pre> <h2>获取本地用户资料</h2> <pre><code>@protocol QDIMUserManager /** 从本地获取用户资料 @param userId 用户Id @return 用户信息对象 */ - (nullable QDUser *)userInfo:(NSString *)userId; @end</code></pre> <p>示例</p> <pre><code>QDUser *user = [[[QDClient sharedClient] userManager] userInfo:@"userId"];</code></pre> <p>用户资料除自己之外,不保证其他用户资料实时更新。其他用户数据更新时机为:</p> <ul> <li>调用 <code>- (void)fetchUserInfos:completion:</code> 方法刷新用户</li> <li>收到此用户发来消息</li> </ul> <p>获取服务器用户资料</p> <pre><code>@protocol QDIMUserManager /** 批量获取用户信息接口 @param users 用户Id列表 @param completion 用户信息回调 */ - (void)fetchUserInfos:(NSArray&lt;NSString *&gt; *)users completion:(void (^ _Nullable)(NSArray&lt;QDUser *&gt; * _Nullable userList, NSError * _Nullable error))completion; @end</code></pre> <p>此接口可以批量从服务器获取用户资料,出于用户体验和流量成本考虑,不建议应用频繁调用此接口。对于用户数据实时性要求不高的页面,应尽量调用读取本地缓存接口。</p> <h2>好友关系</h2> <ul> <li>获取好友列表</li> </ul> <pre><code>@protocol QDIMUserManager /** * 获取好友列表 (本地获取) * * @return 好友列表 */ - (NSArray&lt;QDUser *&gt; *)getFriendList; @end</code></pre> <p>好友列表有本地缓存,缓存会在手动/自动登录后与服务器自动进行同步更新。接口返回的是 QDUser 列表。 QDUser 封装了开发者向我们服务端的好友ID,对此好友的会话设置(是否需要消息提醒,是否是拉黑用户等)。</p> <ul> <li>好友请求</li> </ul> <pre><code>@protocol QDIMUserManager /** * 邀请好友 * * @param userId 用户Id * @param desc 原因描述 * @param completion 回调 */ - (void)inviteFriendWithUserId:(NSString *)userId desc:(nullable NSString *)desc completion:(void(^ _Nullable)(NSError * _Nullable error))completion; @end</code></pre> <ul> <li>处理好友请求</li> </ul> <pre><code>@protocol QDIMUserManager /** * 处理好友申请 * * @param userID 申请用户ID * @param isAgreement 是否同意好友申请 * @param reason 原因描述 * @param completion 回调 */ - (void)dealWithFriendInvitedWithUserID:(NSString *)userID isAgreement:(BOOL)isAgreement reason:(nullable NSString *)reason completion:(void(^ _Nullable)(NSError * _Nullable error))completion; @end</code></pre> <ul> <li>监听好友请求</li> </ul> <p>当好友邀请发出后,对方会收到一条系统通知消息 ( QDSystemNotification ) ,可以通过注册 QDIMSystemNotificationManager 中的 addDelegate: 回调来监听。</p> <p>示例</p> <pre><code>// QiNotificationCenter.m [[QDClient sharedClient].systemNotificationManager addDelegate:self];</code></pre> <ul> <li>好友添加成功后,会触发回调: </li> </ul> <pre><code>@protocol QDIMUserManagerDelegate &lt;NSObject&gt; /** * 好友状态发生改变 */ - (void)onFriendChanged:(QDUser *)user; @end</code></pre> <ul> <li>删除好友 用户和用户之间可以解除好友关系</li> </ul> <pre><code>@protocol QDIMUserManager /** * 删除好友 * * @param userID 好友的用户ID * @param completion 回调 */ - (void)deleteFriend:(NSString *)userID completion:(void(^ _Nullable)(NSError * _Nullable error))completion; @end</code></pre> <ul> <li>解除成功后,会同时修改本地的缓存数据,并触发回调:</li> </ul> <pre><code>@protocol QDIMUserManagerDelegate &lt;NSObject&gt; /** * 好友状态发生改变 */ - (void)onFriendChanged:(QDUser *)user; @end</code></pre> <h2>黑名单</h2> <p>在关系服务中,黑名单和好友关系是互相独立的,即修改好友关系不会影响黑名单关系,同时,修改黑名单也不会对好友关系进行操作。</p> <ul> <li>获取黑名单成员列表</li> </ul> <pre><code>@protocol QDIMUserManager /** * 返回所有在黑名单中的用户列表 * * @return 黑名单成员QDUser列表 */ - (NSArray&lt;QDUser *&gt; *)myBlackList; @end </code></pre> <p>黑名单列表有本地缓存,缓存会在手动/自动登录后与服务器自动进行同步更新。接口返回的是 QDUser 列表。 </p> <ul> <li>添加用户到黑名单</li> </ul> <pre><code>@protocol QDIMUserManager /** * 添加用户到黑名单 * * @param userId 用户Id * @param completion 完成回调 */ - (void)addToBlackList:(NSString *)userId completion:(_Nullable QDUserBlock)completion; @end </code></pre> <p>拉黑成功后,会同时修改本地缓存,并触发回调:</p> <pre><code> @protocol QDIMUserManagerDelegate &lt;NSObject&gt; /** * 黑名单列表发生变化 (在线) */ - (void)onBlackListChanged; @end </code></pre> <ul> <li>将用户从黑名单移除</li> </ul> <pre><code>@protocol QDIMUserManager /** * 将用户从黑名单移除 * * @param userId 用户Id * @param completion 完成回调 */ - (void)removeFromBlackBlackList:(NSString *)userId completion:(_Nullable QDUserBlock)completion; @end </code></pre> <p>移除成功后,会同时修改本地缓存,并触发回调:</p> <pre><code>@protocol QDIMUserManagerDelegate &lt;NSObject&gt; /** * 黑名单列表发生变化 (在线) */ - (void)onBlackListChanged; @end </code></pre> <ul> <li>判断用户是否在自己的黑名单内</li> </ul> <pre><code>@protocol QDIMUserManager /** * 判断用户是否已被拉黑 * * @param userId 用户Id * @return 是否已被拉黑 */ - (BOOL)isUserInBlackList:(NSString *)userId; @end </code></pre> <h2>消息提醒</h2> <p>在消息服务中,可以单独设置是否开启某个用户的消息提醒,即对某个用户静音。静音关系和好友关系是互相独立的,修改好友关系不会影响静音关系,同时,修改静音关系也不会对好友关系进行操作。</p> <ul> <li>获取静音成员列表</li> </ul> <pre><code>@protocol QDIMUserManager /** * 静音列表 * * @return 返回被我设置为取消消息通知的QDUser列表 */ - (nullable NSArray&lt;QDUser *&gt; *)myMuteUserList; @end </code></pre> <p>静音列表有本地缓存,缓存会在手动/自动登录后与服务器自动进行同步更新。接口返回的是 QDUser 列表。</p> <ul> <li>设置消息提醒</li> </ul> <pre><code>@protocol QDIMUserManager /** * 设置消息提醒 * * @param notify 是否提醒 * @param userId 用户Id * @param completion 完成回调 */ - (void)updateNotifyState:(BOOL)notify forUser:(NSString *)userId completion:(_Nullable QDUserBlock)completion; @end </code></pre> <p>设置成功之后,同时更新本地缓存数据。</p> <ul> <li>用户是否有消息提醒</li> </ul> <pre><code>@protocol QDIMUserManager /** * 是否需要消息通知 * * @param userId 用户Id * @return 是否需要消息通知 */ - (BOOL)notifyForNewMsg:(NSString *)userId; @end </code></pre> <p>此接口是根据本地缓存数据来判断是否有消息提醒的,在调用时请保证本地缓存是正确的(登录后有正常完成数据同步)。</p>

页面列表

ITEM_HTML