IM 即时通讯
iOS
产品介绍
简介
主要功能
产品优势
功能介绍
帐号集成与登录
基础消息功能
群组功能
聊天室功能
聊天室标签功能
圈组功能
多端登录与互踢策略
质量数据监控台
海外数据中心
IM平滑迁移方案
接口及业务限制
更新日志
IM UIKit 更新日志
NIM SDK 开发版更新日志
NIM SDK 稳定版更新日志
体验 Demo
下载 SDK 与 Demo 源码
快速开始
跑通 IM Demo 源码
跑通圈组 Demo 源码
实现单聊消息收发(不含 UI)
实现圈组消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能概览
快速集成 IM UIKit
组件导入
初始化与登录
界面跳转
自定义用户信息
会话列表相关
集成会话列表界面
自定义会话列表 UI
会话列表 API 概览
会话消息相关
集成会话消息界面
实现地理位置消息功能
实现音视频通话
实现自定义消息收发
自定义会话消息 UI
会话消息 API 概览
通讯录相关
集成通讯录界面
自定义通讯录 UI
通讯录 API 概览
IM UIKit API 概览
不含 UI 集成
集成 SDK
初始化
登录相关
登录 IM
多端登录与互踢
登出 IM
消息相关
消息概述
消息收发
自定义消息收发
消息配置选项
NOS 资源场景
广播消息收发
消息已读回执
消息撤回
消息重发与转发
消息更新
消息过滤
语音消息处理
本地消息插入
历史消息
最近会话
服务端会话服务
用户资料
用户关系
在线状态订阅
系统通知
离线推送
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
聊天室
圈组功能
圈组概述
登录管理
服务器相关
服务器概述
服务器管理
服务器成员管理
游客功能
服务器未读数管理
频道相关
频道概述
频道管理
频道黑白名单
实时互动频道
频道分组
频道分组黑白名单
频道未读数管理
搜索服务器与频道
身份组相关
身份组概述
身份组应用场景
服务器身份组
频道身份组
频道分组身份组
用户定制权限
自定义权限项
成员权限查询与判定
身份组相关查询
圈组订阅机制
圈组消息相关
图解圈组消息流转
圈组消息收发
圈组消息撤回
圈组消息更新
圈组消息删除
消息正在输入
会话消息回复(Thread)
圈组快捷评论
圈组消息缓存
圈组消息搜索
查询历史消息
查询@我的消息
圈组系统通知相关
圈组系统通知概述
圈组系统通知收发
圈组系统通知更新
圈组离线推送
圈组内容审核
圈组第三方回调
圈组相关抄送
圈组各端接口命名差异
反垃圾
聊天扩展
其他
最佳实践
IM 登录最佳实践
聊天室重要消息投递
参考文档
iOS PushKit 配置
iOS苹果推送配置
API 参考
iOS SDK API
iOS SDK 状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
开通聊天室功能
配置客户端应用标识
常见问题
FAQ
错题集
iOS 推送问题排查
服务协议

用户资料

更新时间: 2022/12/19 19:13:09

NIMUserManager 提供了用户帐号资料管理。以下几个接口仅当选择云信托管用户资料时有效,如果开发者不希望云信获取自己的用户数据,则需自行维护用户资料。

NIMUserManager 里,使用 NIMUser 对用户进行封装。其中用户信息为 NIMUserInfo 属性。 具体的信息字段由 NIMUserInfoUpdateTag定义。 NIMUserInfoUpdateTag内置了多个常用信息字段(有格式校验)和一个拓展字段 NIMUserInfoUpdateTagEx 供开发者自行拓展。

NIMUser 原型

@interface NIMUser : NSObject

/**
 *  用户 Id
 */
@property (nullable,nonatomic,copy)   NSString    *userId;

/**
 *  备注名,长度限制为128个字符。
 */
@property (nullable,nonatomic,copy)   NSString    *alias;

/**
 *  扩展字段
 */
@property (nullable,nonatomic,copy)   NSString  *ext;

/**
 *  服务器扩展字段。该字段只能由服务器进行修改,客户端只能读取。
 */
@property (nullable, nonatomic, copy, readonly) NSString *serverExt;

/**
 *  用户资料,仅当用户选择托管信息到云信时有效
 *  用户资料除自己之外,不保证其他用户资料实时更新
 *  其他用户资料更新的时机为: 1.调用 - (void)fetchUserInfos:completion: 方法刷新用户
 *                        2.收到此用户发来消息
 *                        3.程序再次启动,此时会同步好友信息
 */
@property (nullable,nonatomic,strong,readonly) NIMUserInfo *userInfo;

@end

属性列表

参数 类型 说明
userId NSString 用户 Id
alias NSString 备注名,长度限制为128个字符。
ext NSString 扩展字段
serverExt NSString 服务器扩展字段。该字段只能由服务器进行修改,客户端只能读取。
userInfo NIMUserInfo 用户资料,仅当用户选择托管信息到云信时有效,用户资料除自己之外,不保证其他用户资料实时更新

NIMUserInfo 原型


@interface NIMUserInfo : NSObject

/**
 *  用户昵称
 */
@property (nullable,nonatomic,copy,readonly) NSString *nickName;

/**
 *  用户头像
 */
@property (nullable,nonatomic,copy,readonly) NSString *avatarUrl;

/**
 *  用户头像缩略图
 *  @discussion 仅适用于使用云信上传服务进行上传的资源,否则无效。
 */
@property (nullable,nonatomic,copy,readonly) NSString *thumbAvatarUrl;

/**
 *  用户签名
 */
@property (nullable,nonatomic,copy,readonly) NSString *sign;

/**
 *  用户性别
 */
@property (nonatomic,assign,readonly) NIMUserGender gender;

/**
 *  邮箱
 */
@property (nullable,nonatomic,copy,readonly) NSString *email;

/**
 *  生日
 */
@property (nullable,nonatomic,copy,readonly) NSString *birth;

/**
 *  电话号码
 */
@property (nullable,nonatomic,copy,readonly) NSString *mobile;

/**
 *  用户自定义扩展字段
 */
@property (nullable,nonatomic,copy,readonly) NSString *ext;
@end

属性列表

参数 类型 说明
nickName NSString 用户昵称
avatarUrl NSString 用户头像
thumbAvatarUrl NSString 用户头像缩略图,仅适用于使用云信上传服务进行上传的资源,否则无效。
sign NSString 用户签名
gender NSString 用户性别
email NSString 邮箱
birth NSString 生日
mobile NSString 电话号码
ext NSString 用户自定义扩展字段

获取用户资料

从本地获取用户资料

调用userInfo:方法可从本地获取用户资料。

目前userInfo:只支持在主线程调用,否则可能导致程序崩溃和数据读写丢失。

@protocol NIMUserManager <NSObject>

/**
 *  从本地获取用户资料
 *
 *  @param  userId 用户id
 *
 *  @return NIMUser
 *
 *  @discussion 需要将用户信息交给云信托管,且数据已经正常缓存到本地,此接口才有效。
 *              用户资料除自己之外,不保证其他用户资料实时更新
 *              其他用户资料更新的时机为: 1.调用 - (void)fetchUserInfos:completion: 方法刷新用户
 *                                    2.收到此用户发来消息
 *                                    3.程序再次启动,此时会同步部分好友信息
 */
- (nullable NIMUser *)userInfo:(NSString *)userId;

@end

示例

NIMUser *user = [[NIMSDK sharedSDK].userManager userInfo:@"userId"];

用户资料更新时机

SDK本地用户资料除自己之外,不保证其他用户资料实时更新。其他用户数据更新时机为:

  • 调用 - (void)fetchUserInfos:completion: 方法主动获取并刷新用户资料。

  • 收到其他用户发来消息。如果消息发送者有资料变更,SDK会负责更新并通过- (void)onUserInfoChanged:(NIMUser *)user回调出来。

  • 登录后数据同步阶段,SDK会自动更新好友的用户资料。

从云端获取用户资料

@protocol NIMUserManager <NSObject>
/**
 *  从云信服务器批量获取用户资料
 *
 *  @param users       用户id列表
 *  @param completion  用户信息回调
 *
 *  @discussion 需要将用户信息交给云信托管,此接口才有效。调用此接口,不会触发 - (void)onUserInfoChanged: 回调。
 *              该接口会将获取到的用户信息缓存在本地,所以需要避免此接口的滥调,导致存储过多无用数据到本地而撑爆缓存:如在聊天室请求请求每个聊天室用户数据将造成缓存过大而影响程序性能
 *              本接口一次最多支持 150 个用户信息获取
 */
- (void)fetchUserInfos:(NSArray<NSString *> *)users
            completion:(nullable NIMUserInfoBlock)completion;
@end

此接口可以批量从服务器获取用户资料,出于用户体验和流量成本考虑,不建议应用频繁调用此接口。对于用户数据实时性要求不高的页面,应尽量调用读取本地缓存接口。

编辑用户资料

对于自己的用户资料信息,用户可以调用修改接口去针对某些字段进行修改。

原型:

@protocol NIMUserManager <NSObject>
/**
 *  修改自己的用户资料
 *
 *  @param values      需要更新的用户信息键值对
 *  @param completion  修改结果回调
 *
 *  @discussion   这个接口可以一次性修改多个属性,如昵称,头像等,传入的数据键值对是 {@(NIMUserInfoUpdateTag) : NSString},
 *                无效数据将被过滤。一些字段有修改限制,具体请参看 NIMUserInfoUpdateTag 的相关说明
 */
- (void)updateMyUserInfo:(NSDictionary<NSNumber *,NSString *> *)values
              completion:(nullable NIMUserBlock)completion;
@end

只允许用户编辑自己的资料。此接口可以一次性编辑多个属性。如昵称,头像等,传入的数据键值对是 {@(NIMUserInfoUpdateTag) : NSString},无效数据将被过滤。一些字段有修改格式校验。具体限制为:

属性名 具体字段 类型限制 格式校验
用户昵称 NIMUserInfoUpdateTagNick NSString
用户头像 NIMUserInfoUpdateTagAvatar NSString
用户签名 NIMUserInfoUpdateTagSign NSString
用户性别 NIMUserInfoUpdateTagGender NIMUserGender 只支持指定枚举
用户邮箱 NIMUserInfoUpdateTagEmail NSString 只支持合法邮箱
用户生日 NIMUserInfoUpdateTagBirth NSString yyyy-MM-dd
用户手机 NIMUserInfoUpdateTagMobile NSString 合法手机号 如13588888888、+(86)-13055555555
拓展字段 NIMUserInfoUpdateTagExt NSString
对某些资料内容另外的反垃圾的业务ID NIMUserInfoUpdateTagAntispamBusinessId NSString

头像资源处理

如要更新头像时,需要先将头像图片上传到云端后,再将 URL 传给 SDK。云信提供了文件资源上传与下载服务。

文件资源上传:

@protocol NIMResourceManager <NSObject>
/**
 *  上传文件
 *  @param filepath    上传文件路径
 *  @param scene       场景类别
 *  @param progress    进度Block
 *  @param completion  结果回调
 *
 *  @discussion   这个接口可以一次性修改多个属性,如昵称,头像等,传入的数据键值对是 {@(NIMUserInfoUpdateTag) : NSString},
 *                无效数据将被过滤。一些字段有修改限制,具体请参看 NIMUserInfoUpdateTag 的相关说明
 */
- (void)upload:(NSString *)filepath 
         scene:(nonnull NSString *)scene 
      progress:(nullable NIMHttpProgressBlock)progress 
    completion:(nullable NIMUploadCompleteBlock)completion;
@end

其中,scene具体参见NOS 资源场景

NIMResourceManager协议主要方法一览:

@protocol NIMResourceManager <NSObject>
/**
 *  下载文件
 */
- (void)download:(NSString *)urlString 
        filepath:(NSString *)filepath 
        progress:(nullable NIMHttpProgressBlock)progress 
      completion:(nullable NIMDownloadCompleteBlock)completion;

/**
 *  取消上传/下载任务
 */
- (void)cancelTask:(NSString *)filepath;

/**
 *  规范化 URL 地址
 */
- (NSString *)normalizeURLString:(NSString *)urlString;

/**
 *  将传入的 nos 图片 url 调整为缩略图形式 url
 */
- (NSString *)imageThumbnailURL:(NSString *)urlString;

/**
 *  将传入的 nos 视频 url 调整为缩略图形式 url
 */
- (NSString *)videoThumbnailURL:(NSString *)urlString;
@end

用户资料变更回调

当修改用户资料成功后,会触发回调:

@protocol NIMUserManagerDelegate <NSObject>
/** 
* 用户个人信息发生变化 (在线)
*/
- (void)onUserInfoChanged:(NIMUser *)user;
@end

用户检索

原型:

@protocol NIMUserManager <NSObject>
/**
*  查找成员
*
*  @param option      查询条件
*  @param completion  完成回调
*/
- (void)searchUserWithOption:(NIMUserSearchOption *)option
                  completion:(nullable NIMUserInfoBlock)completion;

参数列表:

参数 类型 说明
option NIMUserSearchOption 搜索选项
completion NIMUserInfoBlock 完成回调

NIMUserSearchOption原型:

@interface NIMUserSearchOption : NSObject
/**
*  搜索文本的搜索范围。(默认:NIMUserSearchRangeOptionFriends)
*/
@property (nonatomic, assign) NIMUserSearchRangeOption searchRange;

/**
*  搜索文本的匹配区域。(默认:NIMUserSearchContentOptionAll)
*/
@property (nonatomic, assign) NIMUserSearchContentOption searchContentOption;

/**
*  忽略大小写。(默认:YES)
*/
@property (nonatomic, assign) BOOL ignoreingCase;

/**
*  搜索文本。
*/
@property (nullable,nonatomic,copy) NSString *searchContent;

参数列表:

参数 类型 说明
searchRange NIMUserSearchRangeOption 搜索文本的搜索范围
searchContentOption NIMUserSearchContentOption 搜索文本的匹配区域
ignoreingCase BOOL 忽略大小写
searchContent NSString 搜索文本
此文档是否对你有帮助?
有帮助
我要吐槽
  • 获取用户资料
  • 从本地获取用户资料
  • 用户资料更新时机
  • 从云端获取用户资料
  • 编辑用户资料
  • 头像资源处理
  • 用户资料变更回调
  • 用户检索