// // NIMSDKHeaders.h // NIMLib // // Created by Netease. // Copyright (c) 2015 Netease. All rights reserved. // #import NS_ASSUME_NONNULL_BEGIN @class NIMSDKOption; @class NIMQChatOption; @class NIMServerSetting; @protocol NIMCustomizedAPIManager; /** * 压缩日志回调 * * @param error 执行结果,如果成功 error 为 nil * @param path 压缩包的路径,只有当执行成功才有值,否则为 nil */ typedef void(^NIMArchiveLogsHandler)(NSError *error, NSString *path); typedef void(^NIMUploadLogsHandler)(NSError *error, NSString *path); /** * SDK 核心类,提供初始化 SDK,获取各个服务能力接口,获取当前版本等接口 */ @interface NIMSDK : NSObject /** * 获取 NIM SDK 实例。 * @par 调用时机: * IM 所有业务均通过 NIM SDK 单例进行调用。 * @par 注意事项: * 虽然所有的云信接口都是线程安全的,但为了防范于未然,推荐您在且只在主线程调用该接口。 * @par 返回: * NIM SDK: 实例 */ + (instancetype)sharedSDK; /** * 获取当前 SDK 版本号。 * * @par 返回: * 当前 SDK 版本号,如 "1.0.0" */ - (NSString *)sdkVersion; /** * 获取当前 Git 的版本号。 */ - (NSString *)gitVersion; /** * 初始化 SDK,初始化时,可同时注册应用的 AppKey 和 APNs 推送证书名称。
* 如需要同时配置 PushKit 推送证书名称,请使用 - (void)registerWithOption:(NIMSDKOption *)option; 接口。 * @par 调用时机: * 建议在应用启动时初始化 NIM SDK。 * @par 参数说明: * * * * *
参数名称描述
appKey对应云信控制台应用的 AppKey,应用的唯一标识。使用相同 App Key 、不同 Bundle Id 的应用,消息仍可以互通
cerName对应云信控制台配置的推送证书名称,不超过 32 个字符,否则登录时会报 500 错误
* */ - (void)registerWithAppID:(NSString *)appKey cerName:(nullable NSString *)cerName; /** * 初始化 SDK,初始化时,可同时注册 APNs 推送证书名称和 PushKit 推送证书名称。
* @par 调用时机: * 建议在应用启动时初始化 NIM SDK。 * @par 参数说明: * option:初始化的配置项,包括应用的 AppKey 、APNs 推送证书名称和 PushKit 推送证书名称 */ - (void)registerWithOption:(NIMSDKOption *)option; /** * 获取 AppKey。 * * @par 返回: * 当前注册应用的 AppKey */ - (nullable NSString *)appKey; /** * 是否正在使用 Demo 的 AppKey。 * * @par 返回: * YES:正在使用;NO :没有使用 */ - (BOOL)isUsingDemoAppKey; /** * 配置圈组的推送证书。通过配置推送证书的名称(对应云信控制台上的推送证书名称),与第三方推送厂商完成通信。 * * @par 参数说明: * option:圈组选项,推送证书名称 */ - (void)qchatWithOption:(NIMQChatOption *)option; /** * 上传/更新 DeviceToken 至云信服务器,用于后续的 APNs 推送。若需要同时设置自定义推送文案,请使用 [updateApnsToken:customContentKey:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/de/de3/interface_n_i_m_s_d_k.html#ab84b0a2d91225c8b10de070205fd9d2a) customContentKey:(nullable NSString *)key; * @par 参数说明: * token:当前设备的 DeviceToken * @par 返回: * 格式化后的 DeviceToken */ - (NSString *)updateApnsToken:(NSData *)token; /** * 上传/更新 DeviceToken 至云信服务器,用于后续的 APNs 推送。该接口可同时设置自定义推送文案(对应云信控制台中的自定义推送文案类型)。若需要在圈组中使用自定义推送文案,请使用 [updateApnsToken:customContentKey:qchatCustomContentKey:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/de/de3/interface_n_i_m_s_d_k.html#a76e4b4325d3ae560eedfab3e67e3afff) * @par 参数说明: * * * * *
参数名称描述
token当前设备的 DeviceToken
key自定义的推送文案(对应云信控制台中的自定义推送文案类型,最多可设置 100 种,对应不同的业务场景)
不填(nil),则表示不更改,使用云信系统内默认的推送文案:“你收到一条新消息”;
填 “”(空值),则清空配置;
* @par 返回: * 格式化后的 DeviceToken */ - (NSString *)updateApnsToken:(NSData *)token customContentKey:(nullable NSString *)key; /** * 上传/更新 DeviceToken 至云信服务器,用于后续的 APNs 推送。该接口可同时设置自定义推送文案以及圈组自定义推送文案(对应云信控制台中的自定义推送文案类型)。 * @par 参数说明: * * * * * *
参数名称描述
token当前设备的 DeviceToken
key自定义的推送文案(对应云信控制台中的自定义推送文案类型,最多可设置 100 种,对应不同的业务场景)
不填(nil),则表示不更改,使用云信系统内默认的推送文案:“你收到一条新消息”;
填 “”(空值),则清空配置
qchatKey圈组的自定义推送文案(对应云信控制台中的自定义推送文案类型,最多可设置 100 种,对应不同的业务场景)
不填(nil),则表示不更改,圈组使用云信系统内默认的推送文案:“你收到一条新消息”;
填 “”(空值),则清空配置
* @par 返回: * 格式化后的 DeviceToken */ - (NSString *)updateApnsToken:(NSData *)token customContentKey:(nullable NSString *)key qchatCustomContentKey:(nullable NSString *)qchatKey; /** * 上传/更新 PushKit Token 至云信服务器,用于后续的离线推送。目前仅支持 PKPushTypeVoIP 类型。 * * @par 参数说明: * token :VoIP Push Token * @par 返回: * 格式化后的 VoIP Push Token */ - (void)updatePushKitToken:(NSData *)token; /** * 获得 SDK 当前的 log 文件路径。 * @par 注意事项: * SDK 每天会生成一个 log 文件,方便开发者定位和反馈问题。 * @par 返回: * SDK 当前的 log 文件路径(当前生成的最新的 log 文件路径) */ - (NSString *)currentLogFilepath; /** * 打包当前所有的 log 文件,调用该接口后,SDK 将压缩当前所有的日志为 Zip 文件,并输出 Zip 路径,上层可以根据该文件进行上传反馈。 * * @par 参数说明: * completion:压缩日志的回调,回调信息包含 error(执行结果,如果成功将返回 nil)和 path(压缩包的路径,只有当执行成功才有值,否则将返回 nil) */ - (void)archiveLogs:(NIMArchiveLogsHandler)completion; /** * 打包并上传当前所有的 log 文件,调用该接口后,SDK 将压缩当前所有的日志为 Zip 文件,输出 Zip 路径并上传,上层可以根据该文件进行上传反馈。 * * @par 参数说明: * completion:打包并上传日志的回调,回调信息包含 error(执行结果,如果成功将返回 nil)和 path(压缩包的路径,只有当执行成功才有值,否则将返回 nil) */ - (void)uploadLogs:(NIMUploadLogsHandler _Nullable)completion; /** * 打包并上传目标聊天室的所有的 log 文件,调用该接口后,SDK 将压缩目标聊天室当前所有的日志为 Zip 文件,输出 Zip 路径并上传,上层可以根据该文件进行上传反馈。 * * @par 参数说明: * * * * * *
参数名称描述
attach附言,可为空
roomId目标聊天室 ID,可为空
completion打包并上传日志的回调,回调信息包含 error 和 path
error :执行结果,如果成功将返回 nil
path :压缩包的路径,只有当执行成功才有值,否则将返回 nil
*/ - (void)uploadLogsWithAttach:(nullable NSString *)attach roomId:(nullable NSString *)roomId completion:(NIMUploadLogsHandler _Nullable)completion; /** * 优化圈组表现。 */ - (void)optimizeQChat; /** * 开启控制台 Log。调用该接口开启控制台 Log 后,会将云信 SDK 的日志写进开发者调试工具的控制台日志文件中(Console Log)。 */ - (void)enableConsoleLog; /** * 当前服务器配置 * @discussion 私有化需要进行自定义设置,必须在注册 appkey 完成之前设置 */ @property (nonatomic,strong) NIMServerSetting *serverSetting; /** * 资源场景配置 * @discussion nos 预设场景和自定义场景规则 * 可以覆盖设置,如果预设场景不设置,为系统默认设置 * sceneDict key-value,系统默认预设场景为3种,自定义场景数量不超过10种 * key 是场景,nsstring类型;value 是资源存活时间,nsnumber类型,精确到天,0为永久存活 * 例如:@{@"nim_icon":@0,@"nim_msg":@0,@"nim_system":@0,@"nim_custom":@30} */ @property (nonatomic,strong) NSMutableDictionary *sceneDict; /** * 登录管理类,负责登录、注销和相关操作的通知收发,提供鉴权、登录、登出、踢人等接口 */ @property (nonatomic,strong,readonly) id loginManager; /** * 聊天管理类,提供消息发送、消息查询、消息撤回等相关接口 */ @property (nonatomic,strong,readonly) id chatManager; /** * 会话管理类,负责消息、最近会话的读写和管理,提供获取/删除会话消息、设置会话消息已读等相关接口 */ @property (nonatomic,strong,readonly) id conversationManager; /** * 媒体管理类,提供语音录制和播放相关接口 */ @property (nonatomic,strong,readonly) id mediaManager; /** * 群组管理类,负责群组的操作:创建,拉人,踢人,同步等 */ @property (nonatomic,strong,readonly) id teamManager; /** * 超大群管理类,提供超大群成员管理、超大群消息发送、超大群资料管理等相关接口 */ @property (nonatomic,strong,readonly) id superTeamManager; /** * 好友管理类,提供用户信息管理和好友关系管理相关接口 */ @property (nonatomic,strong,readonly) id userManager; /** * 系统通知管理类,提供发送、标记、删除系统通知等接口 */ @property (nonatomic,strong,readonly) id systemNotificationManager; /** * APNS 推送管理类,提供APNs 离线推送服务相关配置接口 */ @property (nonatomic,strong,readonly) id apnsManager; /** * 资源管理器,提供下载、搜索、查询资源等接口 */ @property (nonatomic,strong,readonly) id resourceManager; /** * 聊天室管理类,提供进出聊天室、发送聊天室消息、聊天室成员管理、聊天室队列服务、聊天室标签等接口 */ @property (nonatomic,strong,readonly) id chatroomManager; /** * 文档转码管理类,提供查询文档转码信息、删除转码文档等接口 */ @property (nonatomic,strong,readonly) id docTranscodingManager; /** * 事件订阅管理类,提供发布、查询、订阅事件等接口 */ @property (nonatomic,strong,readonly) id subscribeManager; /** * 智能机器人管理类,提供获取机器人信息等接口 */ @property (nonatomic,strong,readonly) id robotManager; /** * 红包管理类,提供获取红包 token 的接口 */ @property (nonatomic,strong,readonly) id redPacketManager; /** * 广播消息管理类,提供广播消息监听等接口 */ @property (nonatomic,strong,readonly) id broadcastManager; /** * 反垃圾管理类,提供本地反垃圾检查接口 */ @property (nonatomic,strong,readonly) id antispamManager; /** * 通用音视频信令管理类,提供信令相关接口 */ @property (nonatomic,strong,readonly) id signalManager; /** * 透传代理管理类 */ @property (nonatomic,strong,readonly) id passThroughManager; /** * Thread Talk(扩展消息)管理类,提供收藏消息、快捷评论等接口 */ @property (nonatomic,strong,readonly) id chatExtendManager; /** * 索引管理类,提供消息检索相关接口 */ @property (nonatomic,strong,readonly) id indexManager; /** * 圈组管理类 */ @property (nonatomic,strong,readonly) id qchatManager; /** * 圈组APNS推送管理类 */ @property (nonatomic,strong,readonly) id qchatApnsManager; /** * 圈组服务器管理类 */ @property (nonatomic,strong,readonly) id qchatServerManager; /** * 圈组频道管理类 */ @property (nonatomic,strong,readonly) id qchatChannelManager; /** * 圈组身份组管理类 */ @property (nonatomic,strong,readonly) id qchatRoleManager; /** * 圈组消息管理类 */ @property (nonatomic,strong,readonly) id qchatMessageManager; /** * 圈组消息扩展管理类 */ @property (nonatomic,strong,readonly) id qchatMessageExtendManager; /** * 圈组rtc管理类 */ @property (nonatomic,strong,readonly) id qchatRTCChannelManager; /** * 定制化接口调用管理类,提供调用定制化 API 接口 */ @property (nonatomic,strong,readonly) id customizedAPIManager; @end NS_ASSUME_NONNULL_END