初始化
更新时间: 2021/07/22 12:36:46
NIMSDK 注册
NIM SDK 通过注册 App Key 来进行初始化。在使用 SDK 任何方法之前,都应该首先调用初始化方法。正常业务情况下,初始化方法有仅只应调用一次。
原型
objc@interface NIMSDK : NSObject
/**
* 初始化SDK
*
* @param option 注册选项
*/
- (void)registerWithOption:(NIMSDKOption *)option;
@end
NIMSDKOption 选项参数列表
参数 | 类型 | 说明 |
---|---|---|
appKey | NSString | 云信分配的 App Key |
apnsCername | NSString | 云信 APNs 推送证书名 |
pkCername | NSString | 云信 VOIP 推送证书名 |
AppKey 作为应用的唯一逻辑标识,同一 AppKey 不同 Bundle Id 的应用消息仍可以互通。
CerName 为开发者为推送证书在云信管理后台定义的名字,在使用中,云信服务器会寻找同名推送证书发起苹果推送服务。
目前 CerName 可传 APNs 证书 和 Voip 证书两种,分别对应了参数中 apnsCername
和 pkCername
两个字段。
如果没有在后台定义推送证书,则参数可传 nil 。
调用示例
objc- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
//推荐在程序启动的时候初始化 NIMSDK
NSString *appKey = @"your app key";
NIMSDKOption *option = [NIMSDKOption optionWithAppKey:appKey];
option.apnsCername = @"your APNs cer name";
option.pkCername = @"your pushkit cer name";
[[NIMSDK sharedSDK] registerWithOption:option];
...
}
其他配置初始化
NIM SDK 还提供了一些其他额外的初始化配置以供开发者做一些扩展,定义在 NIMSDKConfig.h
中。
NIMSDKConfig
是一个单例,推荐在调用注册接口前配置。
原型
objc@interface NIMSDKConfig : NSObject
/**
* 返回配置项实例
*
* @return 配置项
*/
+ (instancetype)sharedConfig;
@end
-
是否开启 Https 支持
enabledHttps
默认为 YES。这个属性将影响使用 SDK 时上传下载文件的模式。如果设置为 YES,上传将使用 https 上传,所有返回 url 的地方也会尝试将 http url 调整为 https url。
如果设置为 NO,上传将使用 http 上传,而所有返回 url 的地方都只返回原 url,而不做任何处理,同时
enabledHttpsForInfo
和enabledHttpsForMessage
将无效。示例
objc
[NIMSDKConfig sharedConfig].enabledHttps = YES;
-
URL 对 HTTPS 的自动支持配置
enabledHttpsForInfo
enabledHttpsForMessage
在默认情况下,我们认为消息,包括图片,视频,音频信息都是默认托管在云信上,所以 SDK 会针对他们自动开启 HTTPS 支持,将原本 HTTP URL 转化成可用的 HTTPS URL 。
如果开发者需要将这些信息都托管在自己的服务器上,需要设置这个接口为 NO,避免 SDK 自动转换地址。
需要注意的是,即使设置了这个属性,通过 iOS SDK 发出去的消息 URL 仍是 HTTPS 的,设置这个值只影响接收到的消息 URL 格式转换。
示例:
objc
[NIMSDKConfig sharedConfig].enabledHttpsForInfo = YES; [NIMSDKConfig sharedConfig].enabledHttpsForMessage = YES;
-
设置 SDK 根目录
objc
- (void)setupSDKDir:(NSString *)sdkDir;
为了更好的应用体验,SDK 需要对应用数据做一些本地持久,比如消息,用户信息等等。在默认情况下,所有数据将放置于 $Document/NIMSDK 目录下。
设置该值后 SDK 产生的数据(包括聊天记录,但不包括临时文件)都将放置在这个目录下
示例
objc
[[NIMSDKConfig sharedConfig] setupSDKDir:@"your data path"];
-
配置是否需要忽略某个通知
当收到通知时,可以选择是否忽略此通知,当选择忽略时,SDK 不会对此通知进行存储,也不会上抛接收回调。
在使用时,需要自行创建一个配置对象,并将此对象赋值给
NIMSDKConfig
的delegate
属性。对象需要实现NIMSDKConfigDelegate
协议中的忽略方法objc
- (BOOL)shouldIgnoreNotification:(NIMNotificationObject *)notification
此方法在消息将要存储到本地时调用,配置对象判断是否忽略返回 YES 或 NO 。开发者只应该在这个回调里做简单逻辑判断,如果做耗时操作会严重影响存储性能。
-
其他配置
配置名称 | 字段 | 说明 |
---|---|---|
是否在收到消息后自动下载附件 | fetchAttachmentAutomaticallyAfterReceiving | 在收到图片或视频消息后,默认情况下 SDK 会去主动获取图片的缩略图和视频的第一帧封面,将这个字段设置为 NO,SDK 将不再主动获取,开发者需要在根据业务逻辑手动调用获取附件接口 |
是否在收到聊天室消息后自动下载附件 | fetchAttachmentAutomaticallyAfterReceivingInChatroom | 同普通消息下载附件开关说明,默认情况下 SDK 不会去主动获取聊天室消息的附件 |
是否使用 NSFileProtectionNone 作为云信文件的 NSProtectionKey | fileProtectionNone | 默认为 NO,只有在上层 APP 开启了 Data Protection 时才起效。设置成 YES 时,云信文件保护属性 为 NSFileProtectionNone ,设置成 NO 时,为 NSFileProtectionCompleteUntilFirstUserAuthentication |
是否需要将被撤回的消息计入未读计算考虑 | shouldConsiderRevokedMessageUnreadCount | 默认为 NO。设置成 YES 的情况下,如果被撤回的消息本地还未读,那么当消息发生撤回时,对应会话的未读计数将减 1 以保持最近会话未读数的一致性。 |
是否需要多端同步未读数 | shouldSyncUnreadCount | 默认为 NO。设置成 YES 的情况下,同个账号多端(PC 和 移动端等)将同步未读计数。 |
自动登录重试次数 | maxAutoLoginRetryTimes | 即默认情况下,自动登录将无限重试。设置成大于 0 的值后,在没有登录成功前,自动登录将重试最多 maxAutoLoginRetryTimes 次,如果失败,则抛出错误 (NIMLocalErrorCodeAutoLoginRetryLimit)。 |