提交
This commit is contained in:
17
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMCloud.h
generated
Normal file
17
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMCloud.h
generated
Normal file
@@ -0,0 +1,17 @@
|
||||
// Copyright (c) 2023 Tencent. All rights reserved.
|
||||
|
||||
#ifndef SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_CLOUD_H_
|
||||
#define SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_CLOUD_H_
|
||||
|
||||
#include "TIMCommunityManager.h"
|
||||
#include "TIMConversationManager.h"
|
||||
#include "TIMErrorCode.h"
|
||||
#include "TIMExperimentalAPI.h"
|
||||
#include "TIMFriendshipManager.h"
|
||||
#include "TIMGroupManager.h"
|
||||
#include "TIMManager.h"
|
||||
#include "TIMMessageManager.h"
|
||||
#include "TIMOfflinePushManager.h"
|
||||
#include "TIMSignalingManager.h"
|
||||
|
||||
#endif // SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_CLOUD_H_
|
||||
108
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMCloudComm.h
generated
Normal file
108
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMCloudComm.h
generated
Normal file
@@ -0,0 +1,108 @@
|
||||
// Copyright (c) 2021 Tencent. All rights reserved.
|
||||
|
||||
#ifndef SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_CLOUD_COMM_H_
|
||||
#define SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_CLOUD_COMM_H_
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifndef _MSC_VER
|
||||
// stdint.h is part of C99 but MSVC doesn't have it.
|
||||
#include <stdint.h> // For intptr_t.
|
||||
#endif
|
||||
|
||||
/* define int types*/
|
||||
#if defined(__GNUC__)
|
||||
|
||||
#ifndef _STDINT_H
|
||||
|
||||
#if defined(__PROSPERO__) || defined(__ORBIS__)
|
||||
typedef u_int8_t uint8_t;
|
||||
typedef u_int16_t uint16_t;
|
||||
typedef u_int32_t uint32_t;
|
||||
typedef u_int64_t uint64_t;
|
||||
#elif !defined(_SYS_TYPES_H)
|
||||
typedef signed char int8_t;
|
||||
typedef signed short int16_t;
|
||||
typedef signed int int32_t;
|
||||
typedef signed long long int64_t;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef unsigned long long uint64_t;
|
||||
#else
|
||||
/* FreeBSD has these C99 int types defined in /sys/inttypes.h already */
|
||||
typedef u_int8_t uint8_t;
|
||||
typedef u_int16_t uint16_t;
|
||||
typedef u_int32_t uint32_t;
|
||||
typedef u_int64_t uint64_t;
|
||||
#endif // defined(__PROSPERO__) || defined(__ORBIS__)
|
||||
|
||||
#endif // _STDINT_H
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
typedef signed char int8_t;
|
||||
typedef signed short int16_t;
|
||||
typedef signed int int32_t;
|
||||
typedef signed __int64 int64_t;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
|
||||
/* the following definitions are from VS2010's stdint.h */
|
||||
#ifndef _INTPTR_T_DEFINED
|
||||
#define _INTPTR_T_DEFINED
|
||||
#ifdef _WIN64
|
||||
typedef __int64 intptr_t;
|
||||
#else /* _WIN64 */
|
||||
typedef int intptr_t;
|
||||
#endif /* _WIN64 */
|
||||
#endif /* _INTPTR_T_DEFINED */
|
||||
|
||||
#ifndef _UINTPTR_T_DEFINED
|
||||
#define _UINTPTR_T_DEFINED
|
||||
#ifdef _WIN64
|
||||
typedef unsigned __int64 uintptr_t;
|
||||
#else /* _WIN64 */
|
||||
typedef unsigned int uintptr_t;
|
||||
#endif /* _WIN64 */
|
||||
#endif /* _UINTPTR_T_DEFINED */
|
||||
|
||||
#endif // COMPILER_GCC/COMPILER_MSVC
|
||||
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
/* Even in pure C, we still need a standard boolean typedef */
|
||||
#ifndef bool
|
||||
typedef unsigned char bool;
|
||||
#endif
|
||||
#ifndef true
|
||||
#define true (1)
|
||||
#endif
|
||||
#ifndef false
|
||||
#define false (0)
|
||||
#endif
|
||||
|
||||
#endif /* !__cplusplus */
|
||||
|
||||
#if defined(_WIN32) || defined(__PROSPERO__) || defined(__ORBIS__)
|
||||
#if defined(ENABLE_STATIC_LIB)
|
||||
#define TIM_API
|
||||
#else
|
||||
#if defined(TIM_EXPORTS)
|
||||
#define TIM_API __declspec(dllexport)
|
||||
#else
|
||||
#define TIM_API __declspec(dllimport)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#define TIM_API __attribute__ ((visibility ("default")))
|
||||
|
||||
#endif
|
||||
|
||||
#define TIM_DECL TIM_API
|
||||
|
||||
#endif // SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_CLOUD_COMM_H_
|
||||
79
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMCloudDef.h
generated
Normal file
79
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMCloudDef.h
generated
Normal file
@@ -0,0 +1,79 @@
|
||||
// Copyright (c) 2023 Tencent. All rights reserved.
|
||||
|
||||
#ifndef SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_CLOUD_DEF_H_
|
||||
#define SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_CLOUD_DEF_H_
|
||||
|
||||
#include "TIMCloudComm.h"
|
||||
|
||||
// 模块简介
|
||||
// - 公共配置选项 和 通用回调 的定义
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 一. SDK 接口常用配置选项
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 1.1 调用接口的返回值(若接口参数中有回调,只有当接口返回 TIM_SUCC 时,回调才会被调用)
|
||||
enum TIMResult {
|
||||
/// 接口调用成功
|
||||
TIM_SUCC = 0,
|
||||
/// 接口调用失败,ImSDK 未初始化
|
||||
TIM_ERR_SDKUNINIT = -1,
|
||||
/// 接口调用失败,用户未登录
|
||||
TIM_ERR_NOTLOGIN = -2,
|
||||
/// 接口调用失败,错误的 Json 格式或 Json Key
|
||||
TIM_ERR_JSON = -3,
|
||||
/// 接口调用失败,参数错误
|
||||
TIM_ERR_PARAM = -4,
|
||||
/// 接口调用失败,无效的会话
|
||||
TIM_ERR_CONV = -5,
|
||||
/// 接口调用失败,无效的群组
|
||||
TIM_ERR_GROUP = -6,
|
||||
};
|
||||
|
||||
/// 1.2 会话类型
|
||||
enum TIMConvType {
|
||||
/// 无效会话
|
||||
kTIMConv_Invalid,
|
||||
/// 个人会话
|
||||
kTIMConv_C2C,
|
||||
/// 群组会话
|
||||
kTIMConv_Group,
|
||||
/// 系统会话,已废弃
|
||||
kTIMConv_System,
|
||||
};
|
||||
|
||||
/// 1.3 消息接收选项
|
||||
enum TIMReceiveMessageOpt {
|
||||
/// 在线正常接收消息,离线时会进行 APNs 推送
|
||||
kTIMRecvMsgOpt_Receive = 0,
|
||||
/// 不会接收到消息,离线不会有推送通知
|
||||
kTIMRecvMsgOpt_Not_Receive,
|
||||
/// 在线正常接收消息,离线不会有推送通知
|
||||
kTIMRecvMsgOpt_Not_Notify,
|
||||
/// 在线接收消息,离线只接收 at 消息的推送
|
||||
kTIMRecvMsgOpt_Not_Notify_Except_At,
|
||||
/// 在线和离线都只接收@消息
|
||||
kTIMRecvMsgOpt_Not_Receive_Except_At,
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 二. SDK 接口通用回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 接口通用回调的定义
|
||||
*
|
||||
* @param code 值为 ERR_SUCC 表示成功,其他值表示失败。详情请参考 [错误码](https://cloud.tencent.com/document/product/269/1671)
|
||||
* @param desc 错误描述字符串
|
||||
* @param json_params Json 字符串,不同的接口,Json 字符串不一样
|
||||
* @param user_data ImSDK 负责透传的用户自定义数据,未做任何处理
|
||||
*
|
||||
* @note
|
||||
* 所有回调均需判断 code 是否等于 ERR_SUCC,若不等于说明接口调用失败了,具体原因可以看 code 的值以及 desc 描述。详情请参考 [错误码](https://cloud.tencent.com/document/product/269/1671)
|
||||
*/
|
||||
typedef void (*TIMCommCallback)(int32_t code, const char* desc, const char* json_params, const void* user_data);
|
||||
|
||||
#endif // SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_CLOUD_DEF_H_
|
||||
1029
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMCommunityManager.h
generated
Normal file
1029
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMCommunityManager.h
generated
Normal file
File diff suppressed because it is too large
Load Diff
1087
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMConversationManager.h
generated
Normal file
1087
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMConversationManager.h
generated
Normal file
File diff suppressed because it is too large
Load Diff
455
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMErrorCode.h
generated
Normal file
455
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMErrorCode.h
generated
Normal file
@@ -0,0 +1,455 @@
|
||||
// Copyright (c) 2023 Tencent. All rights reserved.
|
||||
|
||||
#ifndef SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_ERROR_CODE_H_
|
||||
#define SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_ERROR_CODE_H_
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//详细 [错误码](https://cloud.tencent.com/document/product/269/1671),请您移步官网查看
|
||||
enum TIMErrCode {
|
||||
// ///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 一. IM SDK 的错误码
|
||||
//
|
||||
// ///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 通用错误码
|
||||
|
||||
ERR_SUCC = 0, // 无错误。
|
||||
ERR_IN_PROGESS = 6015, // 接口正在执行中,请您在收到回调之后,再次发起对当前接口的调用,即采用串行方式调用接口。
|
||||
ERR_INVALID_PARAMETERS = 6017, // 参数无效,请检查参数是否符合要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_IO_OPERATION_FAILED = 6022, // 操作本地 IO 错误,检查是否有读写权限,磁盘是否已满。
|
||||
ERR_INVALID_JSON = 6027, // 错误的 JSON 格式,请检查参数是否符合接口的要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_OUT_OF_MEMORY = 6028, // 内存不足,可能存在内存泄漏,iOS 平台使用 Instrument 工具,Android 平台使用 Profiler 工具,分析出什么地方的内存占用高。
|
||||
ERR_PARSE_RESPONSE_FAILED = 6001, // PB 解析失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SERIALIZE_REQ_FAILED = 6002, // PB 序列化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_NOT_INITIALIZED = 6013, // IM SDK 未初始化,初始化成功回调之后重试。
|
||||
ERR_LOADMSG_FAILED = 6005, // 加载本地数据库操作失败,可能存储文件有损坏,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服定位具体问题。
|
||||
ERR_DATABASE_OPERATE_FAILED = 6019, // 本地数据库操作失败,可能是部分目录无权限或者数据库文件已损坏。
|
||||
ERR_SDK_COMM_CROSS_THREAD = 7001, // 跨线程错误,不能在跨越不同线程中执行,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_TINYID_EMPTY = 7002, // TinyId 为空,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_INVALID_IDENTIFIER = 7003, // Identifier 非法,必须不为空,要求可打印 ASCII 字符(0x20-0x7e),长度不超过32字节。
|
||||
ERR_SDK_COMM_FILE_NOT_FOUND = 7004, // 文件不存在,请检查文件路径是否正确。
|
||||
ERR_SDK_COMM_FILE_TOO_LARGE = 7005, // 文件大小超出了限制,语音、图片,最大限制是28MB,视频、文件,最大限制 100M
|
||||
ERR_SDK_COMM_FILE_SIZE_EMPTY = 7006, // 空文件,要求文件大小不是0字节,如果上传图片、语音、视频或文件,请检查文件是否正确生成。
|
||||
ERR_SDK_COMM_FILE_OPEN_FAILED = 7007, // 文件打开失败,请检查文件是否存在,或者已被独占打开,引起 SDK 打开失败。
|
||||
ERR_SDK_COMM_API_CALL_FREQUENCY_LIMIT = 7008, // API 调用超频
|
||||
ERR_SDK_COMM_INTERRUPT = 7009, // 正在执行时被终止,例如正在登录时,调用 unInit 停止使用 SDK 。
|
||||
ERR_SDK_COMM_DATABASE_FAILURE = 7010, // database 操作失败
|
||||
ERR_SDK_COMM_DATABASE_NOTFOUND = 7011, // database 查询的数据不存在
|
||||
ERR_SDK_INTERNAL_ERROR = 7012, // SDK 内部不应该出现的内部错误
|
||||
ERR_SDK_INTERFACE_NOT_SUPPORT = 7013, // 套餐包不支持该接口的使用,请升级到旗舰版套餐
|
||||
ERR_SDK_INVALID_OPERATION = 7014, // 非法请求
|
||||
|
||||
// 账号错误码
|
||||
|
||||
ERR_SDK_NOT_LOGGED_IN = 6014, // IM SDK 未登录,请先登录,成功回调之后重试,或者已被踢下线,可使用 TIMManager getLoginUser 检查当前是否在线。
|
||||
ERR_NO_PREVIOUS_LOGIN = 6026, // 自动登录时,并没有登录过该用户,这时候请调用 login 接口重新登录。
|
||||
ERR_USER_SIG_EXPIRED = 6206, // UserSig 过期,请重新获取有效的 UserSig 后再重新登录。
|
||||
ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, // 其他终端登录同一个账号,引起已登录的账号被踢,需重新登录。
|
||||
ERR_SDK_ACCOUNT_LOGIN_IN_PROCESS = 7501, // 登录正在执行中,例如,第一次 login 或 autoLogin 操作在回调前,后续的 login 或 autoLogin 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_LOGOUT_IN_PROCESS = 7502, // 登出正在执行中,例如,第一次 logout 操作在回调前,后续的 logout 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_TLS_INIT_FAILED = 7503, // TLS SDK 初始化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_NOT_INITIALIZED = 7504, // TLS SDK 未初始化,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_TRANSPKG_ERROR = 7505, // TLS SDK TRANS 包格式错误,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_DECRYPT_FAILED = 7506, // TLS SDK 解密失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_FAILED = 7507, // TLS SDK 请求失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_TIMEOUT = 7508, // TLS SDK 请求超时,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_INVALID_CONVERSATION = 6004, // 会话无效,getConversation 时检查是否已经登录,如未登录获取会话,会有此错误码返回。
|
||||
ERR_FILE_TRANS_AUTH_FAILED = 6006, // 文件传输鉴权失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_NO_SERVER = 6007, // 文件传输获取 Server 列表失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_UPLOAD_FAILED = 6008, // 文件传输上传失败,请检查网络是否连接。
|
||||
ERR_IMAGE_UPLOAD_FAILED_NOTIMAGE = 6031, // 文件传输上传失败,请检查上传的图片是否能够正常打开。
|
||||
ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, // 文件传输下载失败,请检查网络,或者文件、语音是否已经过期,目前资源文件存储7天。
|
||||
ERR_HTTP_REQ_FAILED = 6010, // HTTP 请求失败,请检查 URL 地址是否合法,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_INVALID_MSG_ELEM = 6016, // IM SDK 无效消息 elem,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_INVALID_SDK_OBJECT = 6021, // 无效的对象,例如用户自己生成 TIMImage 对象,或内部赋值错误导致对象无效。
|
||||
ERR_INVALID_MSG_RECEIVER = 6032, // 无效的消息接收方,请在 IM 控制台检查消息的接收方是否存在。
|
||||
ERR_SDK_MSG_BODY_SIZE_LIMIT = 8001, // 消息长度超出限制,消息长度不要超过12k,消息长度是各个 elem 长度的总和,elem 长度是所有 elem 字段的长度总和。
|
||||
ERR_SDK_MSG_KEY_REQ_DIFFER_RSP = 8002, // 消息 KEY 错误,内部错误,网络请求包的 KEY 和 回复包的不一致。
|
||||
ERR_SDK_IMAGE_CONVERT_ERROR = 8003, // 万象优图 HTTP 请求失败。
|
||||
ERR_SDK_IMAGE_CI_BLOCK = 8004, // 万象优图因为鉴黄等原因转缩略图失败。
|
||||
ERR_MERGER_MSG_LAYERS_OVER_LIMIT = 8005, // 合并消息嵌套层数超过上限(上限 100 层)。
|
||||
ERR_SDK_MSG_MODIFY_CONFLICT = 8006, // 消息修改冲突,您请求修改的消息已经被其他人修改。
|
||||
ERR_SDK_SIGNALING_INVALID_INVITE_ID = 8010, // 信令请求 ID 无效或已经被处理过。(上层接口使用,底层为了不重复也增加一份)
|
||||
ERR_SDK_SIGNALING_NO_PERMISSION = 8011, // 信令请求无权限,比如取消非自己发起的邀请。(上层接口使用,底层为了不重复也增加一份)
|
||||
ERR_SDK_INVALID_CANCEL_MESSAGE = 8020, // 取消消息时,取消的消息不存在,或者已经发送成功。取消失败
|
||||
ERR_SDK_SEND_MESSAGE_FAILED_WITH_CANCEL = 8021, // 消息发送失败,因为该消息已被取消
|
||||
// 群组错误码
|
||||
|
||||
ERR_SDK_GROUP_INVALID_ID = 8501, // 群组 ID 非法,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长48个字节,且前缀不能为 @TGS#(避免与服务端默认分配的群组 ID 混淆)。
|
||||
ERR_SDK_GROUP_INVALID_NAME = 8502, // 群名称非法,群名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_INTRODUCTION = 8503, // 群简介非法,群简介最长240字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_NOTIFICATION = 8504, // 群公告非法,群公告最长300字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_FACE_URL = 8505, // 群头像 URL 非法,群头像 URL 最长100字节,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_SDK_GROUP_INVALID_NAME_CARD = 8506, // 群名片非法,群名片最长50字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_MEMBER_COUNT_LIMIT = 8507, // 超过群组成员数的限制,在创建群和邀请成员时,指定的成员数超出限制,最大群成员数量:私有群是200人,公开群是2000人,聊天室是10000人,音视频聊天室和在线成员广播大群无限制。
|
||||
ERR_SDK_GROUP_JOIN_PRIVATE_GROUP_DENY = 8508, // 不允许申请加入 Private 群组,任意群成员可邀请入群,且无需被邀请人同意。
|
||||
ERR_SDK_GROUP_INVITE_SUPER_DENY = 8509, // 不允许邀请角色为群主的成员,请检查角色字段是否填写正确。
|
||||
ERR_SDK_GROUP_INVITE_NO_MEMBER = 8510, // 不允许邀请0个成员,请检查成员字段是否填写正确。
|
||||
ERR_SDK_GROUP_ATTR_FREQUENCY_LIMIT = 8511, // 群属性接口操作限制:增删改接口后台限制1秒5次,查接口 SDK 限制5秒20次。
|
||||
ERR_SDK_GROUP_GET_ONLINE_MEMBER_COUNT_LIMIT = 8512, // 获取群在线人数接口操作限制:查接口 SDK 限制60秒1次。
|
||||
ERR_SDK_GROUP_GET_GROUPS_INFO_LIMIT = 8513, // 获取群资料接口操作限制:查接口 SDK 限制1秒1次。
|
||||
ERR_SDK_GROUP_GET_JOINED_GROUP_LIMIT = 8514, // 获取加入群列表接口操作限制:查接口 SDK 限制1秒1次。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SDK_FRIENDSHIP_INVALID_PROFILE_KEY = 9001, // 资料字段非法,资料支持标配字段及自定义字段,其中自定义字段的关键字,必须是英文字母,且长度不得超过8字节,自定义字段的值最长不能超过500字节。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_REMARK = 9002, // 备注字段非法,最大96字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_WORDING = 9003, // 请求添加好友的请求说明字段非法,最大120字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_SOURCE = 9004, // 请求添加好友的添加来源字段非法,来源需要添加“AddSource_Type_”前缀。
|
||||
ERR_SDK_FRIENDSHIP_FRIEND_GROUP_EMPTY = 9005, // 好友分组字段非法,必须不为空,每个分组的名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_EXCEED_THE_LIMIT = 9006, // 超过数量限制
|
||||
|
||||
// 网络错误码
|
||||
|
||||
ERR_SDK_NET_ENCODE_FAILED = 9501, // 网络加密失败,内部错误。
|
||||
ERR_SDK_NET_DECODE_FAILED = 9502, // 网络数据解密失败,内部错误。
|
||||
ERR_SDK_NET_AUTH_INVALID = 9503, // 未完成鉴权,可能登录未完成,请在登录完成后再操作。
|
||||
ERR_SDK_NET_COMPRESS_FAILED = 9504, // 数据包压缩失败,内部错误。
|
||||
ERR_SDK_NET_UNCOMPRESS_FAILED = 9505, // 数据包解压失败,内部错误。
|
||||
ERR_SDK_NET_FREQ_LIMIT = 9506, // 调用频率限制,最大每秒发起 5 次请求。
|
||||
ERR_SDK_NET_REQ_COUNT_LIMIT = 9507, // 请求队列満,超过同时请求的数量限制,最大同时发起1000个请求。
|
||||
ERR_SDK_NET_DISCONNECT = 9508, // 网络已断开,未建立连接,或者建立 socket 连接时,检测到无网络。
|
||||
ERR_SDK_NET_ALLREADY_CONN = 9509, // 网络连接已建立,重复创建连接,内部错误。
|
||||
ERR_SDK_NET_CONN_TIMEOUT = 9510, // 建立网络连接超时,请等网络恢复后重试。
|
||||
ERR_SDK_NET_CONN_REFUSE = 9511, // 网络连接已被拒绝,请求过于频繁,服务端拒绝服务。
|
||||
ERR_SDK_NET_NET_UNREACH = 9512, // 没有到达网络的可用路由,请等网络恢复后重试。
|
||||
ERR_SDK_NET_SOCKET_NO_BUFF = 9513, // 系统中没有足够的缓冲区空间资源可用来完成调用,系统过于繁忙,内部错误。
|
||||
ERR_SDK_NET_RESET_BY_PEER = 9514, // 对端重置了连接,可能服务端过载,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_SOCKET_INVALID = 9515, // socket 套接字无效,内部错误。
|
||||
ERR_SDK_NET_HOST_GETADDRINFO_FAILED = 9516, // IP 地址解析失败,内部错误,可能是本地 imsdk_config 配置文件被损坏,读取到到 IP 地址非法。
|
||||
ERR_SDK_NET_CONNECT_RESET = 9517, // 网络连接到中间节点或服务端重置,引起连接失效,内部错误,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_WAIT_INQUEUE_TIMEOUT = 9518, // 请求包等待进入待发送队列超时,发送时网络连接建立比较慢 或 频繁断网重连时,会出现该错误,请检查网络连接是否正常。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT = 9519, // 请求包已进入 IM SDK 待发送队列,等待进入操作系统的网络层时超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT = 9520, // 请求包已由 IM SDK 待发送队列进入操作系统网络层,等待服务端回包超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_SEND_REMAINING_TIMEOUT = 9521, // 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误时检测有联网,内部错误。
|
||||
ERR_SDK_NET_PKG_SIZE_LIMIT = 9522, // 请求包长度大于限制,最大支持 1MB 。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT_NO_NETWORK = 9523, // 请求包已进入待发送队列,等待进入系统的网络 buffer 超时,数据包较多 或 发送线程处理不过来,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT_NO_NETWORK = 9524, // 请求包已进入系统的网络 buffer ,等待服务端回包超时,可能请求包没离开终端设备、中间路由丢弃、服务端意外丢包或回包被系统网络层丢弃,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_SEND_REMAINING_TIMEOUT_NO_NETWORK = 9525, // 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误码时检测到没有联网。
|
||||
|
||||
// ///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 二. 服务端的错误码
|
||||
//
|
||||
// ///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 网络接入层的错误码
|
||||
|
||||
ERR_SVR_SSO_CONNECT_LIMIT = -302, // Server 的连接数量超出限制,服务端拒绝服务。
|
||||
ERR_SVR_SSO_VCODE = -10000, // 下发验证码标志错误。
|
||||
ERR_SVR_SSO_D2_EXPIRED = -10001, // Key 过期。Key 是根据 UserSig 生成的内部票据,Key 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_A2_UP_INVALID = -10003, // Ticket 过期。Ticket 是根据 UserSig 生成的内部票据,Ticket 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Ticket。
|
||||
ERR_SVR_SSO_A2_DOWN_INVALID = -10004, // 票据验证没通过或者被安全打击。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的票据。
|
||||
ERR_SVR_SSO_EMPTY_KEY = -10005, // 不允许空 Key。
|
||||
ERR_SVR_SSO_UIN_INVALID = -10006, // Key 中的账号和请求包头的账号不匹配。
|
||||
ERR_SVR_SSO_VCODE_TIMEOUT = -10007, // 验证码下发超时。
|
||||
ERR_SVR_SSO_NO_IMEI_AND_A2 = -10008, // 需要带上 Key 和 Ticket。
|
||||
ERR_SVR_SSO_COOKIE_INVALID = -10009, // Cookie 检查不匹配。
|
||||
ERR_SVR_SSO_DOWN_TIP = -10101, // 下发提示语时 Key 过期。Key 是根据 UserSig 生成的内部票据,Key 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_DISCONNECT = -10102, // 网络连接断开。
|
||||
ERR_SVR_SSO_IDENTIFIER_INVALID = -10103, // 失效身份。
|
||||
ERR_SVR_SSO_CLIENT_CLOSE = -10104, // 终端自动退出。
|
||||
ERR_SVR_SSO_MSFSDK_QUIT = -10105, // MSFSDK 自动退出。
|
||||
ERR_SVR_SSO_D2KEY_WRONG = -10106, // 解密失败次数超过阈值,通知终端需要重置,请重新调用 TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_UNSURPPORT = -10107, // 不支持聚合,给终端返回统一的错误码。终端在该 TCP 长连接上停止聚合。
|
||||
ERR_SVR_SSO_PREPAID_ARREARS = -10108, // 预付费欠费。
|
||||
ERR_SVR_SSO_PACKET_WRONG = -10109, // 请求包格式错误。
|
||||
ERR_SVR_SSO_APPID_BLACK_LIST = -10110, // SDKAppID 黑名单。
|
||||
ERR_SVR_SSO_CMD_BLACK_LIST = -10111, // SDKAppID 设置 service cmd 黑名单。
|
||||
ERR_SVR_SSO_APPID_WITHOUT_USING = -10112, // SDKAppID 停用。
|
||||
ERR_SVR_SSO_FREQ_LIMIT = -10113, // 频率限制(用户),频率限制是设置针对某一个协议的每秒请求数的限制。
|
||||
ERR_SVR_SSO_OVERLOAD = -10114, // 过载丢包(系统),连接的服务端处理过多请求,处理不过来,拒绝服务。
|
||||
ERR_SVR_SSO_FREQUENCY_LIMIT = -20009, // 终端访问接口超频。
|
||||
|
||||
// 资源文件错误码
|
||||
|
||||
ERR_SVR_RES_NOT_FOUND = 114000, // 要发送的资源文件不存在。
|
||||
ERR_SVR_RES_ACCESS_DENY = 114001, // 要发送的资源文件不允许访问。
|
||||
ERR_SVR_RES_SIZE_LIMIT = 114002, // 文件大小超过限制。
|
||||
ERR_SVR_RES_SEND_CANCEL = 114003, // 用户取消发送,如发送过程中登出等原因。
|
||||
ERR_SVR_RES_READ_FAILED = 114004, // 读取文件内容失败。
|
||||
ERR_SVR_RES_TRANSFER_TIMEOUT = 114005, // 资源文件(如图片、文件、语音、视频)传输超时,一般是网络问题导致。
|
||||
ERR_SVR_RES_INVALID_PARAMETERS = 114011, // 参数非法。
|
||||
ERR_SVR_RES_INVALID_FILE_MD5 = 115066, // 文件 MD5 校验失败。
|
||||
ERR_SVR_RES_INVALID_PART_MD5 = 115068, // 分片 MD5 校验失败。
|
||||
|
||||
// 后台公共错误码
|
||||
|
||||
ERR_SVR_COMM_INVALID_HTTP_URL = 60002, // HTTP 解析错误 ,请检查 HTTP 请求 URL 格式。
|
||||
ERR_SVR_COMM_REQ_JSON_PARSE_FAILED = 60003, // HTTP 请求 JSON 解析错误,请检查 JSON 格式。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT = 60004, // 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT_EX = 60005, // 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_SDKAPPID = 60006, // SDKAppID 失效,请核对 SDKAppID 有效性。
|
||||
ERR_SVR_COMM_REST_FREQ_LIMIT = 60007, // REST 接口调用频率超过限制,请降低请求频率。
|
||||
ERR_SVR_COMM_REQUEST_TIMEOUT = 60008, // 服务请求超时或 HTTP 请求格式错误,请检查并重试。
|
||||
ERR_SVR_COMM_INVALID_RES = 60009, // 请求资源错误,请检查请求 URL。
|
||||
ERR_SVR_COMM_ID_NOT_ADMIN = 60010, // REST API 请求的 Identifier 字段请填写 App 管理员账号。
|
||||
ERR_SVR_COMM_SDKAPPID_FREQ_LIMIT = 60011, // SDKAppID 请求频率超限,请降低请求频率。
|
||||
ERR_SVR_COMM_SDKAPPID_MISS = 60012, // REST 接口需要带 SDKAppID,请检查请求 URL 中的 SDKAppID。
|
||||
ERR_SVR_COMM_RSP_JSON_PARSE_FAILED = 60013, // HTTP 响应包 JSON 解析错误。
|
||||
ERR_SVR_COMM_EXCHANGE_ACCOUNT_TIMEUT = 60014, // 置换账号超时。
|
||||
ERR_SVR_COMM_INVALID_ID_FORMAT = 60015, // 请求包体 Identifier 类型错误,请确认 Identifier 为字符串格式。
|
||||
ERR_SVR_COMM_SDKAPPID_FORBIDDEN = 60016, // SDKAppID 被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FORBIDDEN = 60017, // 请求被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT = 60018, // 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT_EX = 60019, // 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_INVALID_SERVICE = 60020, // 未购买套餐包或购买的套餐包正在配置中暂未生效,请五分钟后再次尝试。
|
||||
ERR_SVR_COMM_SENSITIVE_TEXT = 80001, // 文本安全打击,文本中可能包含敏感词汇。
|
||||
ERR_SVR_COMM_BODY_SIZE_LIMIT = 80002, // 发消息包体过长,目前支持最大12k消息包体长度,请减少包体大小重试。
|
||||
ERR_SVR_COMM_SENSITIVE_IMAGE = 80004, // 图片安全打击,图片中可能包含敏感内容。
|
||||
|
||||
// 账号错误码
|
||||
|
||||
ERR_SVR_ACCOUNT_USERSIG_EXPIRED = 70001, // UserSig 已过期,请重新生成 UserSig,建议 UserSig 有效期不小于24小时。
|
||||
ERR_SVR_ACCOUNT_USERSIG_EMPTY = 70002, // UserSig 长度为0,请检查传入的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED = 70003, // UserSig 校验失败,请确认下 UserSig 内容是否被截断,如缓冲区长度不够导致的内容截断。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED_EX = 70005, // UserSig 校验失败,可用工具自行验证生成的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_PUBLICKEY = 70009, // 用公钥验证 UserSig 失败,请确认生成的 UserSig 使用的私钥和 SDKAppID 是否对应。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_ID = 70013, // 请求的 Identifier 与生成 UserSig 的 Identifier 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_SDKAPPID = 70014, // 请求的 SDKAppID 与生成 UserSig 的 SDKAppID 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_PUBLICKEY_NOT_FOUND = 70016, // 验证 UserSig 时公钥不存在。请先登录控制台下载私钥,下载私钥的具体方法可参考 [下载签名用的私钥](https://cloud.tencent.com/document/product/269/32688#.E4.B8.8B.E8.BD.BD.E7.AD.BE.E5.90.8D.E7.94.A8.E7.9A.84.E7.A7.81.E9.92.A5) 。
|
||||
ERR_SVR_ACCOUNT_SDKAPPID_NOT_FOUND = 70020, // SDKAppID 未找到,请在云通信 IM 控制台确认应用信息。
|
||||
ERR_SVR_ACCOUNT_INVALID_USERSIG = 70052, // UserSig 已经失效,请重新生成,再次尝试。
|
||||
ERR_SVR_ACCOUNT_NOT_FOUND = 70107, // 请求的用户账号不存在。
|
||||
ERR_SVR_ACCOUNT_SEC_RSTR = 70114, // 安全原因被限制。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_TIMEOUT = 70169, // 服务端内部超时,请重试。
|
||||
ERR_SVR_ACCOUNT_INVALID_COUNT = 70206, // 请求中批量数量不合法。
|
||||
ERR_SVR_ACCOUNT_INVALID_PARAMETERS = 70402, // 参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。
|
||||
ERR_SVR_ACCOUNT_ADMIN_REQUIRED = 70403, // 请求需要 App 管理员权限。
|
||||
ERR_SVR_ACCOUNT_FREQ_LIMIT = 70050, // 因失败且重试次数过多导致被限制,请检查 UserSig 是否正确,一分钟之后再试。
|
||||
ERR_SVR_ACCOUNT_BLACKLIST = 70051, // 账号被拉入黑名单。
|
||||
ERR_SVR_ACCOUNT_COUNT_LIMIT = 70398, // 创建账号数量超过免费体验版数量限制,请升级为专业版。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_ERROR = 70500, // 服务端内部错误,请重试。
|
||||
ERR_SVR_ACCOUNT_USER_STATUS_DISABLED = 72001, // 用户状态能力需要登录 IM 控制台开启
|
||||
|
||||
// 资料错误码
|
||||
|
||||
ERR_SVR_PROFILE_INVALID_PARAMETERS = 40001, // 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_PROFILE_ACCOUNT_MISS = 40002, // 请求参数错误,没有指定需要拉取资料的用户账号。
|
||||
ERR_SVR_PROFILE_ACCOUNT_NOT_FOUND = 40003, // 请求的用户账号不存在。
|
||||
ERR_SVR_PROFILE_ADMIN_REQUIRED = 40004, // 请求需要 App 管理员权限。
|
||||
ERR_SVR_PROFILE_SENSITIVE_TEXT = 40005, // 资料字段中包含敏感词。
|
||||
ERR_SVR_PROFILE_INTERNAL_ERROR = 40006, // 服务端内部错误,请稍后重试。
|
||||
ERR_SVR_PROFILE_READ_PERMISSION_REQUIRED = 40007, // 没有资料字段的读权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_WRITE_PERMISSION_REQUIRED = 40008, // 没有资料字段的写权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_TAG_NOT_FOUND = 40009, // 资料字段的 Tag 不存在。
|
||||
ERR_SVR_PROFILE_SIZE_LIMIT = 40601, // 资料字段的 Value 长度超过500字节。
|
||||
ERR_SVR_PROFILE_VALUE_ERROR = 40605, // 标配资料字段的 Value 错误,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_INVALID_VALUE_FORMAT = 40610, // 资料字段的 Value 类型不匹配,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_SUBSCRIPTION_DISABLED = 72012, // 用户资料变更订阅能力未开启,请参见 [订阅非好友用户资料](https://cloud.tencent.com/document/product/269/75416#53edea52-35ef-4d82-aae9-941ba690f051),登录 [IM 控制台](https://console.tencentcloud.com/im) 开启该功能。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SVR_FRIENDSHIP_INVALID_PARAMETERS = 30001, // 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID = 30002, // SDKAppID 不匹配。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND = 30003, // 请求的用户账号不存在。
|
||||
ERR_SVR_FRIENDSHIP_ADMIN_REQUIRED = 30004, // 请求需要 App 管理员权限。
|
||||
ERR_SVR_FRIENDSHIP_SENSITIVE_TEXT = 30005, // 关系链字段中包含敏感词。
|
||||
ERR_SVR_FRIENDSHIP_INTERNAL_ERROR = 30006, // 服务端内部错误,请重试。
|
||||
ERR_SVR_FRIENDSHIP_NET_TIMEOUT = 30007, // 网络超时,请稍后重试。
|
||||
ERR_SVR_FRIENDSHIP_WRITE_CONFLICT = 30008, // 并发写导致写冲突,建议使用批量方式。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_DENY = 30009, // 后台禁止该用户发起加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_COUNT_LIMIT = 30010, // 自己的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_GROUP_COUNT_LIMIT = 30011, // 分组已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_LIMIT = 30012, // 未决数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_BLACKLIST_LIMIT = 30013, // 黑名单数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_FRIEND_LIMIT = 30014, // 对方的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_ALREADY_FRIENDS = 30015, // 已经存在好友关系。
|
||||
ERR_SVR_FRIENDSHIP_IN_SELF_BLACKLIST = 30515, // 请求添加好友时,对方在自己的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_DENY_ANY = 30516, // 请求添加好友时,对方的加好友验证方式是不允许任何人添加自己为好友。
|
||||
ERR_SVR_FRIENDSHIP_IN_PEER_BLACKLIST = 30525, // 请求添加好友时,自己在对方的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_NEED_CONFIRM = 30539, // A 请求加 B 为好友,B 的加好友验证方式被设置为“AllowType_Type_NeedConfirm”,这时 A 与 B 之间只能形成未决关系,该返回码用于标识加未决成功,以便与加好友成功的返回码区分开,调用方可以捕捉该错误给用户一个合理的提示。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_SEC_RSTR = 30540, // 添加好友请求被安全策略打击,请勿频繁发起添加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_NOT_FOUND = 30614, // 请求的未决不存在。
|
||||
ERR_SVR_FRIENDSHIP_DEL_NONFRIEND = 31704, // 与请求删除的账号之间不存在好友关系。
|
||||
ERR_SVR_FRIENDSHIP_DEL_FRIEND_SEC_RSTR = 31707, // 删除好友请求被安全策略打击,请勿频繁发起删除好友请求。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND_EX = 31804, // 请求的用户账号不存在。
|
||||
ERR_SVR_FRIENDSHIP_SELF_FOLLOWING_COUNT_EXCEEDS_LIMIT = 32100, // 自己的关注数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32101, // 对方的粉丝数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_SELF_MUTUAL_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32102, // 自己的互关数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_MUTUAL_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32103, // 对方的互关数量到达上限。
|
||||
|
||||
// 最近联系人错误码
|
||||
|
||||
ERR_SVR_CONV_ACCOUNT_NOT_FOUND = 50001, // 请求的用户账号不存在。
|
||||
ERR_SVR_CONV_INVALID_PARAMETERS = 50002, // 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_CONV_ADMIN_REQUIRED = 50003, // 请求需要 App 管理员权限。
|
||||
ERR_SVR_CONV_INTERNAL_ERROR = 50004, // 服务端内部错误,请重试。
|
||||
ERR_SVR_CONV_NET_TIMEOUT = 50005, // 网络超时,请稍后重试。
|
||||
|
||||
ERR_SVR_CONV_CONV_MARK_REQ_COUNT_EXCEED_LIMIT = 51006, // 一次标记、分组、设置自定义数据的会话数超过了上限(最大支持 100 个)
|
||||
ERR_SVR_CONV_CONV_MARK_OPERATE_FAILED = 51007, // Group 会话操作异常,Server 内部错误或 Group 已经解散
|
||||
ERR_SVR_CONV_CONV_MARK_TOTAL_COUNT_EXCEED_LIMIT = 51008, // 标记、分组、设置自定义数据的总会话数超过了上限(最大支持 1000 个)
|
||||
ERR_SVR_CONV_CONV_GROUP_NOT_EXIST = 51009, // 会话分组不存在
|
||||
ERR_SVR_CONV_CONV_GROUP_TOTAL_COUNT_EXCEED_LIMIT = 51010, // 会话分组数超过了上限(最大支持 20 个)
|
||||
ERR_SVR_CONV_CONV_GROUP_NAME_EXCEED_LENGTH = 51011, // 会话分组名字节数超过了上限(最大支持 32 字节)
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_SVR_MSG_PKG_PARSE_FAILED = 20001, // 请求包非法,请检查发送方和接收方账号是否存在。
|
||||
ERR_SVR_MSG_INTERNAL_AUTH_FAILED = 20002, // 内部鉴权失败。
|
||||
ERR_SVR_MSG_INVALID_ID = 20003, // Identifier 无效或者 Identifier 未导入云通信 IM。
|
||||
ERR_SVR_MSG_NET_ERROR = 20004, // 网络异常,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR1 = 20005, // 服务端内部错误,请重试。
|
||||
ERR_SVR_MSG_PUSH_DENY = 20006, // 触发发送单聊消息之前回调,App 后台返回禁止下发该消息。
|
||||
ERR_SVR_MSG_IN_PEER_BLACKLIST = 20007, // 发送单聊消息,被对方拉黑,禁止发送。
|
||||
ERR_SVR_MSG_BOTH_NOT_FRIEND = 20009, // 消息发送双方互相不是好友,禁止发送(配置单聊消息校验好友关系才会出现)。
|
||||
ERR_SVR_MSG_NOT_PEER_FRIEND = 20010, // 发送单聊消息,自己不是对方的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_NOT_SELF_FRIEND = 20011, // 发送单聊消息,对方不是自己的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_SHUTUP_DENY = 20012, // 因禁言,禁止发送消息。
|
||||
ERR_SVR_MSG_REVOKE_TIME_LIMIT = 20016, // 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_MSG_DEL_RAMBLE_INTERNAL_ERROR = 20018, // 删除漫游内部错误。
|
||||
ERR_SVR_MSG_EXTENSION_CONFLICT = 23001, // 消息扩展操作冲突。
|
||||
ERR_SVR_MSG_EXTENSION_NOT_EXIST = 23004, // 删除的消息扩展不存在。
|
||||
ERR_SVR_MSG_REACTION_COUNT_LIMIT = 23005, // 单条消息 Reaction 数量超过最大限制。
|
||||
ERR_SVR_MSG_REACTION_USER_COUNT_LIMIT = 23006, // 单个 Reaction 用户数量超过最大限制。
|
||||
ERR_SVR_MSG_REACTION_ALREADY_CONTAIN_USER = 23007, // Reaction 已经包含当前操作用户。
|
||||
ERR_SVR_MSG_REACTION_NOT_EXISTS = 23008, // Reaction 不存在。
|
||||
ERR_SVR_MSG_REACTION_NOT_CONTAIN_USER = 23009, // Reaction 不包含当前操作用户。
|
||||
ERR_SVR_MSG_JSON_PARSE_FAILED = 90001, // JSON 格式解析失败,请检查请求包是否符合 JSON 规范。
|
||||
ERR_SVR_MSG_INVALID_JSON_BODY_FORMAT = 90002, // JSON 格式请求包中 MsgBody 不符合消息格式描述,或者 MsgBody 不是 Array 类型,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_INVALID_TO_ACCOUNT = 90003, // JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_RAND = 90005, // JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_TIMESTAMP = 90006, // JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_BODY_NOT_ARRAY = 90007, // JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型
|
||||
ERR_SVR_MSG_ADMIN_REQUIRED = 90009, // 请求需要 App 管理员权限。
|
||||
ERR_SVR_MSG_INVALID_JSON_FORMAT = 90010, // JSON 格式请求包不符合消息格式描述,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_COUNT_LIMIT = 90011, // 批量发消息目标账号超过500,请减少 To_Account 中目标账号数量。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_NOT_FOUND = 90012, // To_Account 没有注册或不存在,请确认 To_Account 是否导入云通信 IM 或者是否拼写错误。
|
||||
ERR_SVR_MSG_TIME_LIMIT = 90026, // 消息离线存储时间错误(最多不能超过7天)。
|
||||
ERR_SVR_MSG_INVALID_SYNCOTHERMACHINE = 90031, // JSON 格式请求包体中 SyncOtherMachine 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_MSGLIFETIME = 90044, // JSON 格式请求包体中 MsgLifeTime 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_ACCOUNT_NOT_FOUND = 90048, // 请求的用户账号不存在。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR2 = 90994, // 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR3 = 90995, // 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR4 = 91000, // 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR5 = 90992, // 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务端是否正常向云通信 IM 后台服务端返回回调结果。
|
||||
ERR_SVR_MSG_BODY_SIZE_LIMIT = 93000, // JSON 数据包超长,消息包体请不要超过12k。
|
||||
ERR_SVR_MSG_LONGPOLLING_COUNT_LIMIT = 91101, // Web 端长轮询被踢(Web 端同时在线实例个数超出限制)。
|
||||
// 120001 - 130000, // 单聊第三方回调返回的自定义错误码。
|
||||
|
||||
// 群组错误码
|
||||
|
||||
ERR_SVR_GROUP_INTERNAL_ERROR = 10002, // 服务端内部错误,请重试。
|
||||
ERR_SVR_GROUP_API_NAME_ERROR = 10003, // 请求中的接口名称错误,请核对接口名称并重试。
|
||||
ERR_SVR_GROUP_INVALID_PARAMETERS = 10004, // 参数非法,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_GROUP_ACOUNT_COUNT_LIMIT = 10005, // 请求包体中携带的账号数量过多。
|
||||
ERR_SVR_GROUP_FREQ_LIMIT = 10006, // 操作频率限制,请尝试降低调用的频率。
|
||||
ERR_SVR_GROUP_PERMISSION_DENY = 10007, // 操作权限不足,比如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限。
|
||||
ERR_SVR_GROUP_INVALID_REQ = 10008, // 请求非法,可能是请求中携带的签名信息验证不正确,请再次尝试或 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系技术客服。
|
||||
ERR_SVR_GROUP_SUPER_NOT_ALLOW_QUIT = 10009, // 该群不允许群主主动退出。
|
||||
ERR_SVR_GROUP_NOT_FOUND = 10010, // 群组不存在,或者曾经存在过,但是目前已经被解散。
|
||||
ERR_SVR_GROUP_JSON_PARSE_FAILED = 10011, // 解析 JSON 包体失败,请检查包体的格式是否符合 JSON 格式。
|
||||
ERR_SVR_GROUP_INVALID_ID = 10012, // 发起操作的 Identifier 非法,请检查发起操作的用户 Identifier 是否填写正确。
|
||||
ERR_SVR_GROUP_ALLREADY_MEMBER = 10013, // 被邀请加入的用户已经是群成员。
|
||||
ERR_SVR_GROUP_FULL_MEMBER_COUNT = 10014, // 群已满员,无法将请求中的用户加入群组,如果是批量加人,可以尝试减少加入用户的数量。
|
||||
ERR_SVR_GROUP_INVALID_GROUPID = 10015, // 群组 ID 非法,请检查群组 ID 是否填写正确。
|
||||
ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY = 10016, // App 后台通过第三方回调拒绝本次操作。
|
||||
ERR_SVR_GROUP_SHUTUP_DENY = 10017, // 因被禁言而不能发送消息,请检查发送者是否被设置禁言。
|
||||
ERR_SVR_GROUP_RSP_SIZE_LIMIT = 10018, // 应答包长度超过最大包长(1MB),请求的内容过多,请尝试减少单次请求的数据量。
|
||||
ERR_SVR_GROUP_ACCOUNT_NOT_FOUND = 10019, // 请求的用户账号不存在。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED = 10021, // 群组 ID 已被使用,请选择其他的群组 ID。
|
||||
ERR_SVR_GROUP_SEND_MSG_FREQ_LIMIT = 10023, // 发消息的频率超限,请延长两次发消息时间的间隔。
|
||||
ERR_SVR_GROUP_REQ_ALLREADY_BEEN_PROCESSED = 10024, // 此邀请或者申请请求已经被处理。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED_FOR_SUPER = 10025, // 群组 ID 已被使用,并且操作者为群主,可以直接使用。
|
||||
ERR_SVR_GROUP_SDKAPPID_DENY = 10026, // 该 SDKAppID 请求的命令字已被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_NOT_FOUND = 10030, // 请求撤回的消息不存在。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_TIME_LIMIT = 10031, // 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_DENY = 10032, // 请求撤回的消息不支持撤回操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REVOKE_MSG = 10033, // 群组类型不支持消息撤回操作。
|
||||
ERR_SVR_GROUP_REMOVE_MSG_DENY = 10034, // 该消息类型不支持删除操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REMOVE_MSG = 10035, // 音视频聊天室和在线成员广播大群不支持删除消息。
|
||||
ERR_SVR_GROUP_AVCHATROOM_COUNT_LIMIT = 10036, // 音视频聊天室创建数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买预付费套餐“IM音视频聊天室”。
|
||||
ERR_SVR_GROUP_COUNT_LIMIT = 10037, // 单个用户可创建和加入的群组数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“单人可创建与加入群组数”。
|
||||
ERR_SVR_GROUP_MEMBER_COUNT_LIMIT = 10038, // 群成员数量超过限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“扩展群人数上限”。
|
||||
ERR_SVR_GROUP_ATTRIBUTE_WRITE_CONFILCT = 10056, // 群属性写冲突,请先拉取最新的群属性后再尝试写操作,IMSDK 5.6 及其以上版本支持。
|
||||
ERR_SVR_GROUP_PINNED_MESSAGE_COUNT_LIMIT = 10070, // 置顶消息超出数量限制时。
|
||||
ERR_SVR_GROUP_MESSAGE_ALREADY_PINNED = 10071, // 消息已经被置顶。
|
||||
|
||||
// ///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 三. IM SDK V3 版本的错误码
|
||||
//
|
||||
// ///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ERR_NO_SUCC_RESULT = 6003, // 批量操作无成功结果。
|
||||
ERR_TO_USER_INVALID = 6011, // 无效接收方。
|
||||
ERR_REQUEST_TIME_OUT = 6012, // 请求超时。
|
||||
ERR_INIT_CORE_FAIL = 6018, // INIT CORE 模块失败。
|
||||
ERR_EXPIRED_SESSION_NODE = 6020, // SessionNode 为 null 。
|
||||
ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, // 在登录完成前进行了登出(在登录时返回)。
|
||||
ERR_TLSSDK_NOT_INITIALIZED = 6024, // TLS SDK 未初始化。
|
||||
ERR_TLSSDK_USER_NOT_FOUND = 6025, // TLS SDK 没有找到相应的用户信息。
|
||||
ERR_BIND_FAIL_UNKNOWN = 6100, // QALSDK 未知原因BIND失败。
|
||||
ERR_BIND_FAIL_NO_SSOTICKET = 6101, // 缺少 SSO 票据。
|
||||
ERR_BIND_FAIL_REPEATD_BIND = 6102, // 重复 BIND。
|
||||
ERR_BIND_FAIL_TINYID_NULL = 6103, // TinyId 为空。
|
||||
ERR_BIND_FAIL_GUID_NULL = 6104, // GUID 为空。
|
||||
ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, // 解注册包失败。
|
||||
ERR_BIND_FAIL_REG_TIMEOUT = 6106, // 注册超时。
|
||||
ERR_BIND_FAIL_ISBINDING = 6107, // 正在 BIND 操作中。
|
||||
ERR_PACKET_FAIL_UNKNOWN = 6120, // 发包未知错误。
|
||||
ERR_PACKET_FAIL_REQ_NO_NET = 6121, // 发送请求包时没有网络。
|
||||
ERR_PACKET_FAIL_RESP_NO_NET = 6122, // 发送回复包时没有网络。
|
||||
ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, // 发送请求包时没有权限。
|
||||
ERR_PACKET_FAIL_SSO_ERR = 6124, // SSO 错误。
|
||||
ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, // 请求超时。
|
||||
ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, // 回复超时。
|
||||
ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, // 重发失败。
|
||||
ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, // 重发时没有真正发送。
|
||||
ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, // 保存被过滤。
|
||||
ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, // 发送过载。
|
||||
ERR_PACKET_FAIL_LOGIC_ERR = 6131, // 数据逻辑错误。
|
||||
ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, // proxy_manager 没有完成服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCING = 6151, // proxy_manager 正在进行服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, // proxy_manager 同步失败。
|
||||
ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, // proxy_manager 请求参数,在本地检查不合法。
|
||||
ERR_GROUP_INVALID_FIELD = 6160, // Group assistant 请求字段中包含非预设字段。
|
||||
ERR_GROUP_STORAGE_DISABLED = 6161, // Group assistant 群资料本地存储没有开启。
|
||||
ERR_LOADGRPINFO_FAILED = 6162, // 加载群资料失败。
|
||||
ERR_REQ_NO_NET_ON_REQ = 6200, // 请求的时候没有网络。
|
||||
ERR_REQ_NO_NET_ON_RSP = 6201, // 响应的时候没有网络。
|
||||
ERR_SERIVCE_NOT_READY = 6205, // QALSDK 服务未就绪。
|
||||
ERR_LOGIN_AUTH_FAILED = 6207, // 账号认证失败( TinyId 转换失败)。
|
||||
ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, // 在应用启动后没有尝试联网。
|
||||
ERR_REQ_FAILED = 6210, // QALSDK 执行失败。
|
||||
ERR_REQ_INVALID_REQ = 6211, // 请求非法,toMsgService 非法。
|
||||
ERR_REQ_OVERLOADED = 6212, // 请求队列满。
|
||||
ERR_REQ_KICK_OFF = 6213, // 已经被其他终端踢了。
|
||||
ERR_REQ_SERVICE_SUSPEND = 6214, // 服务被暂停。
|
||||
ERR_REQ_INVALID_SIGN = 6215, // SSO 签名错误。
|
||||
ERR_REQ_INVALID_COOKIE = 6216, // SSO cookie 无效。
|
||||
ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, // 登录时 TLS SDK 回包校验,包体长度错误。
|
||||
ERR_LOGIN_OPENMSG_TIMEOUT = 6218, // 登录时 OPENSTATSVC 向 OPENMSG 上报状态超时。
|
||||
ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, // 登录时 OPENSTATSVC 向 OPENMSG 上报状态时解析回包失败。
|
||||
ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, // 登录时 TLS SDK 解密失败。
|
||||
ERR_WIFI_NEED_AUTH = 6221, // WIFI 需要认证。
|
||||
ERR_USER_CANCELED = 6222, // 用户已取消。
|
||||
ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, // 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_LACK_UGC_EXT = 6224, // 缺少 UGC 扩展包。
|
||||
ERR_AUTOLOGIN_NEED_USERSIG = 6226, // 自动登录,本地票据过期,需要 UserSig 手动登录。
|
||||
ERR_QAL_NO_SHORT_CONN_AVAILABLE = 6300, // 没有可用的短连接 SSO 。
|
||||
ERR_REQ_CONTENT_ATTACK = 80101, // 消息内容安全打击。
|
||||
ERR_LOGIN_SIG_EXPIRE = 70101, // 登录返回,票据过期。
|
||||
ERR_SDK_HAD_INITIALIZED = 90101, // IM SDK 已经初始化无需重复初始化。
|
||||
ERR_OPENBDH_BASE = 115000, // OpenBDH 错误码基。
|
||||
ERR_REQUEST_NO_NET_ONREQ = 6250, // 请求时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_NO_NET_ONRSP = 6251, // 响应时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_FAILED = 6252, // QALSDK 执行失败。
|
||||
ERR_REQUEST_INVALID_REQ = 6253, // 请求非法,toMsgService 非法。
|
||||
ERR_REQUEST_OVERLOADED = 6254, // 请求队列満。
|
||||
ERR_REQUEST_KICK_OFF = 6255, // 已经被其他终端踢了。
|
||||
ERR_REQUEST_SERVICE_SUSPEND = 6256, // 服务被暂停。
|
||||
ERR_REQUEST_INVALID_SIGN = 6257, // SSO 签名错误。
|
||||
ERR_REQUEST_INVALID_COOKIE = 6258, // SSO cookie 无效。
|
||||
};
|
||||
|
||||
#endif // SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_ERROR_CODE_H_
|
||||
326
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMExperimentalAPI.h
generated
Normal file
326
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMExperimentalAPI.h
generated
Normal file
@@ -0,0 +1,326 @@
|
||||
// Copyright (c) 2023 Tencent. All rights reserved.
|
||||
|
||||
#ifndef SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_EXPERIMENTAL_API_H_
|
||||
#define SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_EXPERIMENTAL_API_H_
|
||||
|
||||
#include "TIMCloudDef.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// 模块简介
|
||||
// - 实验性 API, 用于提供一些实验性功能
|
||||
//
|
||||
// 模块参数说明
|
||||
// - API 的参数采用 json 字符串格式,请使用文件中预先定义的 JsonKey 进行参数传递和解析
|
||||
// - 如果参数中包含非英文字符,请使用 UTF-8 编码
|
||||
//
|
||||
// 模块回调说明
|
||||
// 1. 回调的类型:
|
||||
// - 调用 API 时传入的 TIMCommCallback 回调,用于异步返回 API 的调用结果
|
||||
// - 调用 TIMSetXXXCallback 设置的全局回调,用于接收后台推送的通知
|
||||
// 2. 回调触发的线程:
|
||||
// - 对于 Windows 平台,当在主线程中调用 @ref TIMInit 接口时,SDK 会将所有回调抛到主线程,请确保主线程已创建消息循环;否则,回调将在 SDK 内部的逻辑线程触发
|
||||
// - 对于 Android 平台,当调用 @ref TIMInit 接口的线程支持消息循环时,SDK 会将所有回调抛到该线程;否则,回调将在 SDK 内部的逻辑线程触发
|
||||
// - 对于 iOS 和 MAC 平台,SDK 默认将所有回调抛到主线程
|
||||
// - 对于 Linux 平台,暂不支持将回调抛到主线程,回调将在 SDK 内部的逻辑线程触发
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 一. ImSDK 实验性通知回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 1.1 实验性通知的回调(7.4 及其以上版本支持)
|
||||
*
|
||||
* @param key 通知 key
|
||||
* @param data 通知数据
|
||||
*/
|
||||
typedef void (*TIMExperimentalNotifyCallback)(const char* key, const char* data, const void* user_data);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 二. 注册实验性通知回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 2.1 实验性通知的回调
|
||||
* @param cb 实验性通知的回调,请参考 @ref TIMExperimentalNotifyCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
*/
|
||||
TIM_API void TIMSetExperimentalNotifyCallback(TIMExperimentalNotifyCallback cb, const void *user_data);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 三. 实验性 API
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 3.1 实验性 API
|
||||
*
|
||||
* @note 该接口提供一些实验性功能
|
||||
*/
|
||||
TIM_API int callExperimentalAPI(const char* json_param, TIMCommCallback cb, const void* user_data);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 四. 实验性 API 参数相关的 Json Key 定义
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.1 TIMInternalOperation(实验性接口的操作类型)
|
||||
static const char* kTIMInternalOperationSSOData = "internal_operation_sso_data";
|
||||
static const char* kTIMInternalOperationUserId2TinyId = "internal_operation_userid_tinyid";
|
||||
static const char* kTIMInternalOperationTinyId2UserId = "internal_operation_tinyid_userid";
|
||||
static const char* kTIMInternalOperationSetEnv = "internal_operation_set_env";
|
||||
static const char* kTIMInternalOperationDisableCrashReport = "internal_operation_disable_crash_report";
|
||||
static const char* kTIMInternalOperationSetIPv6Prior = "internal_operation_set_ipv6_prior";
|
||||
static const char* kTIMInternalOperationSetMaxRetryCount = "internal_operation_set_max_retry_count";
|
||||
static const char* kTIMInternalOperationSetPacketRequestTimeout = "internal_operation_set_packet_request_timeout";
|
||||
static const char* kTIMInternalOperationSetCustomServerInfo = "internal_operation_set_custom_server_info";
|
||||
static const char* kTIMInternalOperationEnableQuicChannel = "internal_operation_enable_quic_channel";
|
||||
static const char* kTIMInternalOperationSetSM4GCMCallback = "internal_operation_set_sm4_gcm_callback";
|
||||
static const char* kTIMInternalOperationInitLocalStorage = "internal_operation_init_local_storage";
|
||||
static const char* kTIMInternalOperationSetCosSaveRegionForConversation = "internal_operation_set_cos_save_region_for_conversation";
|
||||
static const char* kTIMInternalOperationSetUIPlatform = "internal_operation_set_ui_platform";
|
||||
static const char* kTIMInternalOperationSetDatabaseEncryptInfo = "internal_operation_set_database_encrypt_info";
|
||||
static const char* kTIMInternalOperationIsCommercialAbilityEnabled = "internal_operation_is_commercial_ability_enabled";
|
||||
static const char* kTIMInternalOperationSetOfflinePushState = "internal_operation_set_offline_push_state";
|
||||
static const char* kTIMInternalOperationGetOfflinePushState = "internal_operation_get_offline_push_state";
|
||||
static const char* kTIMInternalOperationGetMessageRevoker = "internal_operation_get_message_revoker";
|
||||
static const char* kTIMInternalOperationSetLogSetting = "internal_operation_set_log_setting";
|
||||
static const char* kTIMInternalOperationWriteLog = "internal_operation_write_log";
|
||||
static const char* kTIMInternalOperationClearLocalHistoryMessage = "internal_operation_clear_local_history_message";
|
||||
static const char* kTIMInternalOperationUpdateProxyInfo = "internal_operation_update_proxy_info";
|
||||
static const char* kTIMInternalOperationReportTUIComponentUsage = "internal_operation_report_tuicomponent_usage";
|
||||
static const char* kTIMInternalOperationSendTRTCCustomData = "internal_operation_send_trtc_custom_data";
|
||||
static const char* kTIMInternalOperationSendRoomCustomData = "internal_operation_send_room_custom_data";
|
||||
static const char* kTIMInternalOperationSetApplicationID = "internal_operation_set_application_id";
|
||||
static const char* kTIMInternalOperationGetServerConfig = "internal_operation_get_server_config";
|
||||
static const char* kTIMInternalOperationSetIgnoreRepeatLogin = "internal_operation_set_ignore_repeat_login";
|
||||
static const char* kTIMInternalOperationStartMessageLongPolling = "internal_operation_start_message_long_polling";
|
||||
static const char* kTIMInternalOperationStopMessageLongPolling = "internal_operation_stop_message_long_polling";
|
||||
static const char* kTIMInternalOperationFindMergerMessages = "internal_operation_find_merger_messages";
|
||||
static const char* kTIMInternalOperationGetBriefGroupMemberList = "internal_operation_get_brief_group_member_list";
|
||||
static const char* kTIMInternalOperationSetCustomLoginInfo = "internal_operation_set_custom_login_info";
|
||||
static const char* kTIMInternalOperationDisableHttpRequest = "internal_operation_disable_http_request";
|
||||
static const char* kTIMInternalOperationSetNetworkInfo = "internal_operation_set_network_info";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.2 SSODataParam(发送 sso data 的参数)
|
||||
// string, 只写(必填), sso请求的命令字
|
||||
static const char* kTIMSSODataParamCmd = "sso_data_param_cmd";
|
||||
// string, 只写(必填), sso请求的内容,内容是二进制,需要外部传入base64编码后的字符串,sdk内部回解码成原二进制
|
||||
static const char* kTIMSSODataParamBody = "sso_data_param_body";
|
||||
// uint64, 只写(选填), sso请求的超时时间,默认是15秒
|
||||
static const char* kTIMSSODataParamTimeout = "sso_data_param_timeout";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.3 SSODataRes(发送 sso data 的返回信息)
|
||||
// string, 只读(必填), sso返回数据对应请求的命令字
|
||||
static const char* kTIMSSODataResCmd = "sso_data_res_cmd";
|
||||
// string, 只读(必填), sso返回的内容,内容是二进制,sdk内部使用base64编码了,外部使用前需要base64解码
|
||||
static const char* kTIMSSODataResBody = "sso_data_res_body";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.4 UserInfo(用户账号信息)
|
||||
static const char* kTIMUserInfoUserId = "user_info_userid";
|
||||
static const char* kTIMUserInfoTinyId = "user_info_tinyid";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.5 ServerAddress(服务器地址)
|
||||
// string, 只写(必填), 服务器 IP
|
||||
static const char* kTIMServerAddressIp = "server_address_ip";
|
||||
// int, 只写(必填), 服务器端口
|
||||
static const char* kTIMServerAddressPort = "server_address_port";
|
||||
// bool, 只写(选填), 是否 IPv6 地址,默认为 false
|
||||
static const char* kTIMServerAddressIsIPv6 = "server_address_is_ipv6";
|
||||
// bool, 只写(选填), 是否 Quic 地址,默认为 false
|
||||
static const char* kTIMServerAddressIsQuic = "server_address_is_quic";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.6 CustomServerInfo(自定义服务器信息)
|
||||
// array @ref ServerAddress, 只写(必填), 长连接服务器地址列表
|
||||
static const char* kTIMCustomServerInfoLongConnectionAddressArray = "longconnection_address_array";
|
||||
// array @ref ServerAddress, 只写(选填), 短连接服务器地址列表
|
||||
static const char* kTIMCustomServerInfoShortConnectionAddressArray = "shortconnection_address_array";
|
||||
// string, 只写(必填), 服务器公钥
|
||||
static const char* kTIMCustomServerInfoServerPublicKey = "server_public_key";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.7 QuicChannelInfo(Quic 通道信息)
|
||||
// bool, 只写(必填), 是否启用 Quic 通道,true:打开,false:不打开
|
||||
static const char* kTIMQuicChannelInfoEnableQuic = "quic_channel_info_enable_quic";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.8 SM4GCMCallbackParam(国密 SM4 GCM 回调函数地址的参数)
|
||||
// uint64 只写(必填), SM4 GCM 加密回调函数地址
|
||||
static const char* kTIMSM4GCMCallbackParamEncrypt = "sm4_gcm_callback_param_encrypt";
|
||||
// uint64, 只写(必填), SM4 GCM 解密回调函数地址
|
||||
static const char* kTIMSM4GCMCallbackParamDecrypt = "sm4_gcm_callback_param_decrypt";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.9 CosSaveRegionForConversationParam(设置 cos 存储区域)
|
||||
// string, 只写(必填), 会话 ID
|
||||
static const char* kTIMCosSaveRegionForConversationParamConversationID = "cos_save_region_for_conversation_param_conversation_id";
|
||||
// string, 只写(必填), 存储区域
|
||||
static const char* kTIMCosSaveRegionForConversationParamCosSaveRegion = "cos_save_region_for_conversation_param_cos_save_region";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.10 DatabaseEncryptInfo(数据库加密信息)
|
||||
// int, 只写(必填), 数据库加密类型,0 不加密(默认),1:按位异或,2:TEA,3:国密,4:AES
|
||||
static const char* kTIMDatabaseEncryptInfoEncryptType = "database_encrypt_info_encrypt_type";
|
||||
// string, 只写(选填), 数据库加密类型 key ,除了 按位异或 算法,其他算法的加密 key,必须是长度是 32 base16 字符串,不填写就使用 IMSDK 内部生成的 key,由于数据库加密数据持久化到文件中,因此,一旦 key 被使用过,不能够再更换
|
||||
static const char* kTIMDatabaseEncryptInfoEncryptKey = "database_encrypt_info_encrypt_key";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.11 CommercialAbilityResult(商业化能力项的查询结果)
|
||||
// bool, 只读(必填), 查询是否支持指定的商业化能力项的结果,true:支持,false:不支持
|
||||
static const char* kTIMCommercialAbilityResultEnabled = "commercial_ability_result_enabled";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.12 LogSetting(日志配置)
|
||||
// bool, 只写(必填), 是否关闭自动清理,true:是,false:否
|
||||
static const char* kTIMLogSettingDisableAutoClean = "log_setting_disable_auto_clean";
|
||||
// uint64, 只写(选填), 日志文件的最大大小,单位 Bytes,默认 100MB,不能小于 150KB
|
||||
static const char* kTIMLogSettingMaxFileSize = "log_setting_max_file_size";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.13 RequestParam(callExperimentalAPI 接口请求的参数)
|
||||
// string @ref TIMInternalOperation, 只写(必填), 内部接口的操作类型
|
||||
static const char* kTIMRequestInternalOperation = "request_internal_operation";
|
||||
// object @ref SSODataParam, 只写(选填), sso发包请求, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSSOData 时需要设置
|
||||
static const char* kTIMRequestSSODataParam = "request_sso_data_param";
|
||||
// array string, 只写(选填), 请求需要转换成tinyid的userid列表, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationUserId2TinyId 时需要设置
|
||||
static const char* kTIMRequestUserId2TinyIdParam = "request_userid_tinyid_param";
|
||||
// array uint64, 只写(选填), 请求需要转换成userid的tinyid列表, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationTinyId2UserId 时需要设置
|
||||
static const char* kTIMRequestTinyId2UserIdParam = "request_tinyid_userid_param";
|
||||
// bool, 只写(选填), true 表示设置当前环境为测试环境,false表示设置当前环境是正式环境,默认是正式环境, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetEnv 时需要设置
|
||||
static const char* kTIMRequestSetEnvParam = "request_set_env_param";
|
||||
// bool, 只写(选填), true 表示关闭 crash 上报,false 表示开启 crash 上报,默认开启, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationDisableCrashReport 时需要设置
|
||||
static const char* kTIMRequestDisableCrashReportParam = "request_disable_crash_report_param";
|
||||
// bool, 只写(选填), 在 IPv6 双栈网络下,是否优先使用 IPv6 协议,当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetIPv6Prior 时需要设置
|
||||
static const char* kTIMRequestSetIPv6PriorParam = "request_set_ipv6_prior_param";
|
||||
// uint32, 只写(选填), 设置登录、发消息请求的重试次数, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetMaxRetryCount 时需要设置
|
||||
static const char* kTIMRequestSetMaxRetryCountParam = "request_set_max_retry_count_param";
|
||||
// int64, 只写(选填), 设置登录、发消息请求的超时时间, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetPacketRequestTimeout 时需要设置
|
||||
static const char* kTIMRequestSetPacketRequestTimeoutParam = "request_set_packet_request_timeout_param";
|
||||
// object @ref CustomServerInfo, 只写(选填), 自定义服务器信息, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetCustomServerInfo 时需要设置
|
||||
static const char* kTIMRequestSetCustomServerInfoParam = "request_set_custom_server_info_param";
|
||||
// bool, 只写(选填), true 表示设置 Quic 通道信息, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationEnableQuicChannel 时需要设置
|
||||
static const char* kTIMRequestEnableQuicChannelParam = "request_enable_quic_channel_param";
|
||||
// object @ref SM4GCMCallbackParam, 只写(选填), 国密 SM4 GCM 回调函数地址的参数, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetSM4GCMCallback 时需要设置
|
||||
static const char* kTIMRequestSetSM4GCMCallbackParam = "request_set_sm4_gcm_callback_param";
|
||||
// string, 只写(选填), 初始化 Database 的用户 ID, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationInitLocalStorage 时需要设置
|
||||
static const char* kTIMRequestInitLocalStorageParam = "request_init_local_storage_user_id_param";
|
||||
// object @ref CosSaveRegionForConversationParam, 只写(选填), 设置 cos 存储区域的参数, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetCosSaveRegionForConversation 时需要设置
|
||||
static const char* kTIMRequestSetCosSaveRegionForConversationParam = "request_set_cos_save_region_for_conversation_param";
|
||||
// uint32, 只写(选填), 设置 UI 平台,当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetUIPlatform 时需要设置
|
||||
static const char* kTIMRequestSetUIPlatformParam = "request_set_ui_platform_param";
|
||||
// object @ref DatabaseEncryptInfo, 只写(选填), 设置数据库加密信息, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetDatabaseEncryptInfo 时需要设置
|
||||
static const char* kTIMRequestSetDatabaseEncryptInfoParam = "request_set_database_encrypt_info_param";
|
||||
// uint64, 只写(选填), 商业化能力项枚举的组合值, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationIsCommercialAbilityEnabled 时需要设置
|
||||
static const char* kTIMRequestIsCommercialAbilityEnabledParam = "request_is_commercial_ability_enabled_param";
|
||||
// uint32, 只写(选填), 设置推送状态:0 - 不设置 1 - 开启推送 2 - 关闭推送, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetOfflinePushState 时需要设置
|
||||
static const char* kTIMRequestSetOfflinePushStateParam = "request_set_offline_push_state_param";
|
||||
// array string, 只写(选填), 撤回消息的 id, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationGetMessageRevoker 时需要设置
|
||||
static const char* kTIMRequestMessageRevokerMessageIdArray = "request_message_revoker_message_id_array";
|
||||
// object @ref LogSetting, 只写(选填), 设置日志参数, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetLogSetting 时需要设置
|
||||
static const char* kTIMRequestSetLogSettingParam = "request_set_log_setting_param";
|
||||
// int, 只写(选填), 打印日志的级别, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationWriteLog 时需要设置
|
||||
static const char* kTIMRequestWriteLogLogLevelParam = "request_write_log_log_level_param";
|
||||
// string, 只写(选填), 打印日志的内容, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationWriteLog 时需要设置
|
||||
static const char* kTIMRequestWriteLogLogContentParam = "request_write_log_log_content_param";
|
||||
// string, 只写(选填), 打印日志的文件名, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationWriteLog 时需要设置
|
||||
static const char* kTIMRequestWriteLogFileNameParam = "request_write_log_file_name_param";
|
||||
// string, 只写(选填), 打印日志的函数名, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationWriteLog 时需要设置
|
||||
static const char* kTIMRequestWriteLogFuncNameParam = "request_write_log_func_name_param";
|
||||
// int, 只写(选填), 打印日志的所在行数, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationWriteLog 时需要设置
|
||||
static const char* kTIMRequestWriteLogLineNumberParam = "request_write_log_line_number_param";
|
||||
// string, 只写(选填), 设置要删除消息的会话 ID, 其中单聊格式为 "c2c_userID", 群聊会话格式为 "group_groupID", 当输入为 "c2c" 或者 "group" 时会同时操作所有 单聊 或者 群聊 会话,当输入为 "" 时会同时操纵所有会话,当 kTIMRequestInternalOperation 为 kTIMInternalOperationClearLocalHistoryMessage 时需要设置
|
||||
static const char* kTIMRequestClearLocalHistoryMessageConversationIDParam = "request_clear_local_history_message_conversation_id_param";
|
||||
// uint64, 只写(选填), 设置要删除消息时间范围的开始时间, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationClearLocalHistoryMessage 时需要设置
|
||||
static const char* kTIMRequestClearLocalHistoryMessageBeginTimestampParam = "request_clear_local_history_message_begin_timestamp_param";
|
||||
// uint64, 只写(选填), 设置要删除消息时间范围的结束时间,删除消息时间范围为 [begin_time, end_time],若结束时间设置为 0,则删除开始时间之后的所有消息,若开始和结束时间都被设置为 0,则清空指定会话的所有消息,当 kTIMRequestInternalOperation 为 kTIMInternalOperationClearLocalHistoryMessage 时需要设置
|
||||
static const char* kTIMRequestClearLocalHistoryMessageEndTimestampParam = "request_clear_local_history_message_end_timestamp_param";
|
||||
static const char* kTIMRequestReportTUIComponentUsageUIComponentTypeParam = "report_tuicomponent_usage_uicomponent_type_param";
|
||||
static const char* kTIMRequestReportTUIComponentUsageUIStyleTypeParam = "report_tuicomponent_usage_uistyle_type_param";
|
||||
// string, 只写(必填),长连接透传发送的数据,当 kTIMRequestInternalOperation 为 kTIMInternalOperationSendTRTCCustomData 时需要设置
|
||||
static const char* kTIMRequestSendTRTCCustomDataParam = "request_send_trtc_custom_data_param";
|
||||
// string, 只写(必填),长连接透传发送的数据,当 kTIMRequestInternalOperation 为 kTIMInternalOperationSendRoomCustomData 时需要设置
|
||||
static const char* kTIMRequestSendRoomCustomDataServiceCommandParam = "request_send_room_custom_data_service_command_param";
|
||||
// string, 只写(必填),长连接透传发送的数据,当 kTIMRequestInternalOperation 为 kTIMInternalOperationSendRoomCustomData 时需要设置
|
||||
static const char* kTIMRequestSendRoomCustomDataRequestContentParam = "request_send_room_custom_data_request_content_param";
|
||||
// uint8, 只写(选填), 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetApplicationID 时需要设置
|
||||
static const char* kTIMRequestSetApplicationIDParam = "request_set_application_id_param";
|
||||
// string, 只写(必填), 当 kTIMRequestInternalOperation 为 kTIMInternalOperationGetServerConfig 时需要设置
|
||||
static const char* kTIMRequestGetServerConfigKeyParam = "request_get_server_config_key_param";
|
||||
// string, 只写(必填), 当 kTIMRequestInternalOperation 为 kTIMInternalOperationGetServerConfig 时需要设置
|
||||
// 0或不填: 无效, 1:数值类型 2:字符串类型
|
||||
static const char* kTIMRequestGetServerConfigValueTypeParam = "request_get_server_config_value_type_param";
|
||||
// bool, 只写(选填), 设置「SDK 是否忽略重复登录请求」, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetIgnoreRepeatLogin 时有效
|
||||
static const char* kTIMRequestSetIgnoreRepeatLoginParam = "request_set_ignore_repeat_login_param";
|
||||
// string, 只写(必填),直播群 ID, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationStartMessageLongPolling 时需要设置
|
||||
static const char* kTIMRequestStartMessageLongPollingIDParam = "request_start_message_long_polling_id_param";
|
||||
// string, 只写(必填),直播群长轮询的 key, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationStartMessageLongPolling 时需要设置
|
||||
static const char* kTIMRequestStartMessageLongPollingKeyParam = "request_start_message_long_polling_key_param";
|
||||
// string, 只写(必填),长轮询起始的 sequence, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationStartMessageLongPolling 时需要设置
|
||||
static const char* kTIMRequestStartMessageLongPollingSequenceParam = "request_start_message_long_polling_sequence_param";
|
||||
// string, 只写(必填),直播群 ID, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationStopMessageLongPolling 时需要设置
|
||||
static const char* kTIMRequestStopMessageLongPollingIDParam = "request_stop_message_long_polling_id_param";
|
||||
// string, 只写(必填),消息 ID,当 kTIMRequestInternalOperation 为 kTIMInternalOperationFindMergerMessages 时需要设置
|
||||
static const char* kTIMRequestFindMergerMessagesMessageIDParam = "request_find_merger_messages_message_id_param";
|
||||
// array, 只写(必填),合并消息 ID 列表,当 kTIMRequestInternalOperation 为 kTIMInternalOperationFindMergerMessages 时需要设置
|
||||
static const char* kTIMRequestFindMergerMessagesMergerMessageIDListParam = "request_find_merger_messages_merger_message_id_list_param";
|
||||
// string, 只写(选填),群 ID, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationGetBriefGroupMemberList 时需要设置
|
||||
static const char* kTIMRequestGetBriefGroupMemberListGroupIDParam = "request_get_brief_group_member_list_group_id_param";
|
||||
// string, 只写(选填), 自定义登录信息, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetCustomLoginInfo 时需要设置
|
||||
static const char* kTIMRequestSetCustomLoginInfoUserIDParam = "request_set_custom_login_info_user_id_param";
|
||||
static const char* kTIMRequestSetCustomLoginInfoCustomInfoParam = "request_set_custom_login_info_custom_info_param";
|
||||
// bool, 只写(选填), 设置是否禁用 http 请求, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationDisableHttpRequest 时需要设置
|
||||
static const char* kTIMRequestDisableHttpRequestParam = "request_disable_http_request_param";
|
||||
// int32, 只写(选填), 设置网络类型, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetNetworkInfo 时需要设置
|
||||
static const char* kTIMRequestSetNetworkInfoNetworkTypeParam = "request_set_network_info_network_type_param";
|
||||
// int32, 只写(选填), 设置 IP 协议类型, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetNetworkInfo 时需要设置
|
||||
static const char* kTIMRequestSetNetworkInfoIPTypeParam = "request_set_network_info_ip_type_param";
|
||||
// string, 只写(选填), 设置网络标识, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetNetworkInfo 时需要设置
|
||||
static const char* kTIMRequestSetNetworkInfoNetworkIdParam = "request_set_network_info_network_id_param";
|
||||
// uint64, 只写(选填), 设置 WIFI 的网卡接口信息, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetNetworkInfo 时需要设置
|
||||
static const char* kTIMRequestSetNetworkInfoWifiNetworkHandleParam = "request_set_network_info_wifi_network_handle_param";
|
||||
// uint64, 只写(选填), 设置 XG 的网卡接口信息, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetNetworkInfo 时需要设置
|
||||
static const char* kTIMRequestSetNetworkInfoXgNetworkHandleParam = "request_set_network_info_xg_network_handle_param";
|
||||
// bool, 只写(选填), 设置网络连接状态, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetNetworkInfo 时需要设置
|
||||
static const char* kTIMRequestSetNetworkInfoNetworkConnectedParam = "request_set_network_info_network_connected_param";
|
||||
// int64, 只写(选填), 设置获取网络信息的耗时, 当 kTIMRequestInternalOperation 为 kTIMInternalOperationSetNetworkInfo 时需要设置
|
||||
static const char* kTIMRequestSetNetworkInfoInitializeCostTimeParam = "request_set_network_info_initialize_cost_time_param";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.14 ResponseInfo(callExperimentalAPI 接口回调返回的数据)
|
||||
// string @ref TIMInternalOperation, 只读(必填), 响应的内部操作
|
||||
static const char* kTIMResponseInternalOperation = "response_internal_operation";
|
||||
// object @ref SSODataRes, 只读(选填), sso发包请求的响应, 当 kTIMResponseInternalOperation 为 kTIMInternalOperationSSOData 时有值
|
||||
static const char* kTIMResponseSSODataRes = "response_sso_data_res";
|
||||
// array @ref UserInfo, 只读(选填), 响应的tinyid列表, 当 kTIMResponseInternalOperation 为 kTIMInternalOperationUserId2TinyId 时有值
|
||||
static const char* kTIMResponseUserId2TinyIdRes = "response_userid_tinyid_res";
|
||||
// array @ref UserInfo, 只读(选填), 响应的tinyid列表, 当 kTIMResponseInternalOperation 为 kTIMInternalOperationTinyId2UserId 时有值
|
||||
static const char* kTIMResponseTinyId2UserIdRes = "response_tinyid_userid_res";
|
||||
// bool, 只读(选填), true 表示当前环境为测试环境,false表示当前环境是正式环境, 当 kTIMResponseInternalOperation 为 kTIMInternalOperationSetEnv 时有值
|
||||
static const char* kTIMResponseSetEvnRes = "response_set_env_res";
|
||||
// uint32, 只读(选填), 推送状态:0 - 不设置 1 - 开启推送 2 - 关闭推送, 当 kTIMResponseInternalOperation 为 kTIMInternalOperationGetOfflinePushState 时有值
|
||||
static const char* kTIMResponseGetOfflinePushStateRes = "response_get_offline_push_state_res";
|
||||
// string, 只读(选填), 撤回消息的 id, 当 kTIMResponseInternalOperation 为 kTIMInternalOperationGetMessageRevoker 时有值
|
||||
static const char* kTIMResponseMessageId = "response_message_id";
|
||||
// string, 只读(选填), 撤回消息的操作者, 当 kTIMResponseInternalOperation 为 kTIMInternalOperationGetMessageRevoker 时有值
|
||||
static const char* kTIMResponseMessageRevoker = "response_message_revoker";
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_EXPERIMENTAL_API_H_
|
||||
1731
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMFriendshipManager.h
generated
Normal file
1731
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMFriendshipManager.h
generated
Normal file
File diff suppressed because it is too large
Load Diff
2186
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMGroupManager.h
generated
Normal file
2186
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMGroupManager.h
generated
Normal file
File diff suppressed because it is too large
Load Diff
1081
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMManager.h
generated
Normal file
1081
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMManager.h
generated
Normal file
File diff suppressed because it is too large
Load Diff
2861
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMMessageManager.h
generated
Normal file
2861
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMMessageManager.h
generated
Normal file
File diff suppressed because it is too large
Load Diff
262
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMOfflinePushManager.h
generated
Normal file
262
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMOfflinePushManager.h
generated
Normal file
@@ -0,0 +1,262 @@
|
||||
// Copyright (c) 2023 Tencent. All rights reserved.
|
||||
|
||||
#ifndef SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_OFFLINE_PUSH_MANAGER_H_
|
||||
#define SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_OFFLINE_PUSH_MANAGER_H_
|
||||
|
||||
#include "TIMCloudDef.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// 模块简介
|
||||
// * -离线推送接口,用于支持离线推送功能
|
||||
//
|
||||
// 模块参数说明
|
||||
// * -API 的参数采用 json 字符串格式,请使用文件中预先定义的 JsonKey 进行参数传递和解析
|
||||
// * -如果参数中包含非英文字符,请使用 UTF-8 编码
|
||||
//
|
||||
// 模块回调说明
|
||||
// 1. 回调的类型:
|
||||
// * -调用 API 时传入的 TIMCommCallback 回调,用于异步返回 API 的调用结果
|
||||
// * -调用 TIMSetXXXCallback 设置的全局回调,用于接收后台推送的通知
|
||||
// 2. 回调触发的线程:
|
||||
// * -对于 Windows 平台,当在主线程中调用 @ref TIMInit 接口时,SDK 会将所有回调抛到主线程,请确保主线程已创建消息循环;否则,回调将在 SDK 内部的逻辑线程触发
|
||||
// * -对于 Android 平台,当调用 @ref TIMInit 接口的线程支持消息循环时,SDK 会将所有回调抛到该线程;否则,回调将在 SDK 内部的逻辑线程触发
|
||||
// * -对于 iOS 和 MAC 平台,SDK 默认将所有回调抛到主线程
|
||||
// * -对于 Linux 平台,暂不支持将回调抛到主线程,回调将在 SDK 内部的逻辑线程触发
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 一. 离线推送相关配置选项定义
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 1.1 离线推送注册的 token 类型
|
||||
enum TIMOfflinePushTokenType {
|
||||
// 默认厂商 token, 例如 APNS/小米 push/Huawei push 等
|
||||
TIMOfflinePushTokenType_Default = 0,
|
||||
// TPNS
|
||||
TIMOfflinePushTokenType_TPNS = 1,
|
||||
// VoIP push
|
||||
TIMOfflinePushTokenType_VOIP = 2,
|
||||
};
|
||||
|
||||
// 1.2 iOS 离线推送的类型
|
||||
enum TIMIOSOfflinePushType {
|
||||
// 普通的 APNs 推送
|
||||
TIMIOSOfflinePushType_APNS = 0,
|
||||
// VoIP 推送
|
||||
TIMIOSOfflinePushType_VOIP = 1,
|
||||
};
|
||||
|
||||
// 1.3 Android 离线推送模式
|
||||
enum TIMAndroidOfflinePushNotifyMode {
|
||||
// 普通通知栏消息模式,离线消息下发后,点击通知栏消息直接启动应用,不会给应用进行回调
|
||||
kTIMAndroidOfflinePushNotifyMode_Normal,
|
||||
// 自定义消息模式,离线消息下发后,点击通知栏消息会给应用进行回调
|
||||
kTIMAndroidOfflinePushNotifyMode_Custom,
|
||||
};
|
||||
|
||||
// 1.4 推送规则
|
||||
enum TIMOfflinePushFlag {
|
||||
// 按照默认规则进行推送
|
||||
kTIMOfflinePushFlag_Default,
|
||||
// 不进行推送
|
||||
kTIMOfflinePushFlag_NoPush,
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 二. 离线推送相关 API
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 2.1 设置离线推送配置信息(iOS 和 Android 平台专用)
|
||||
*
|
||||
* @param json_token 离线推送配置 Json 字符串, Json Key 请参考 @ref OfflinePushToken。注意 kTIMOfflinePushTokenToken 字段要填写为设备 Token 的 hex 字符串(即 base16 编码)。
|
||||
* @param cb 成功与否的回调。回调函数定义请参考 @ref TIMCommCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
* @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
|
||||
*
|
||||
* @note
|
||||
* - 接口成功设置后会开启离线推送功能,如果您需要自定义推送的格式信息,请参考 @ref TIMMsgSendMessage 接口。
|
||||
* - 如果您想关闭离线推送,请把 json_token 设置为 NULL。
|
||||
*
|
||||
* __示例__
|
||||
* @code{.cpp}
|
||||
* Json::Value json_parameters;
|
||||
* json_parameters[kTIMOfflinePushTokenToken] = "token base16 string";
|
||||
* json_parameters[kTIMOfflinePushTokenBusinessID] = 1234578;
|
||||
* json_parameters[kTIMOfflinePushTokenType] = 0;
|
||||
* TIMMsgSetOfflinePushToken(json_parameters.toStyledString().c_str(),
|
||||
* [](int32_t code, const char* desc, const char* json_params, const void* user_data) {
|
||||
* }, nullptr);
|
||||
* @endcode
|
||||
*/
|
||||
TIM_API int TIMMsgSetOfflinePushToken(const char *json_token, TIMCommCallback cb, const void* user_data);
|
||||
|
||||
/**
|
||||
* 2.2 APP 检测到应用退后台时可以调用此接口,可以用作桌面应用角标的初始化未读数量(iOS 和 Android 平台专用)
|
||||
*
|
||||
* @param unread_count 未读数量
|
||||
* @param cb 成功与否的回调。回调函数定义请参考 @ref TIMCommCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
* @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
|
||||
*
|
||||
* @note
|
||||
* - 从 6.1 版本开始,如果配置了离线推送,会收到厂商或 TPNS 的离线推送通道下发的通知栏消息。
|
||||
*/
|
||||
TIM_API int TIMMsgDoBackground(uint32_t unread_count, TIMCommCallback cb, const void* user_data);
|
||||
|
||||
/**
|
||||
* 2.3 APP 检测到应用进前台时可以调用此接口(iOS 和 Android 平台专用)
|
||||
*
|
||||
* @param cb 成功与否的回调。回调函数定义请参考 @ref TIMCommCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
* @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
|
||||
*
|
||||
* @note
|
||||
* - 从 6.1 版本开始,调用 TIMMsgDoForeground,会停止离线推送。但如果应用被 kill,仍然可以正常接收离线推送。
|
||||
*/
|
||||
TIM_API int TIMMsgDoForeground(TIMCommCallback cb, const void* user_data);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 三. 离线推送 API 参数相关的 Json Key 定义
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 3.1 OfflinePushToken(设置离线推送配置信息)
|
||||
// string, 只写(选填), 注册应用到厂商平台的 token。注意:填写为设备 Token 的 hex 字符串(即 base16 编码)。
|
||||
static const char* kTIMOfflinePushTokenToken = "offline_push_token_token";
|
||||
// uint32, 只写(选填), IM 控制台证书 ID
|
||||
static const char* kTIMOfflinePushTokenBusinessID = "offline_push_token_business_id";
|
||||
// uint @ref TIMOfflinePushTokenType, 只写(选填), 厂商 token 类型。默认为 TIMOfflinePushTokenType_Default。其中 TIMOfflinePushTokenType_TPNS 为待废弃状态,如果您之前通过 TPNS 接入离线推送,并且在 TPNS 控制台配置推送信息,可以继续按照该方式接入推送功能。如果您从未接入 TPNS,从未在 TPNS 控制台配置推送信息,IM 将不在支持 TPNS 方式接入离线推送功能, 推荐参照 [官网](https://cloud.tencent.com/document/product/269/74284) 接入
|
||||
static const char* kTIMOfflinePushTokenType = "offline_push_token_type";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 3.2 IOSOfflinePushConfigSoundConfig(iOS 离线推送声音设置选项)
|
||||
// string, 选项, 接收时不会播放声音
|
||||
static const char* kIOSOfflinePushNoSound = "push.no_sound";
|
||||
// string, 选项, 接收时播放系统声音
|
||||
static const char* kIOSOfflinePushDefaultSound = "default";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 3.3 IOSOfflinePushConfig(消息在 iOS 系统上的离线推送配置)
|
||||
// string, 读写, 通知标题
|
||||
static const char* kTIMIOSOfflinePushConfigTitle = "ios_offline_push_config_title";
|
||||
// string, 读写, 离线推送声音设置(仅对 iOS 生效),可设置的选项请参考 @ref IOSOfflinePushConfigSoundConfig。当 iOSSound = kIOSOfflinePushNoSound,表示接收时不会播放声音;当 iOSSound = kIOSOfflinePushDefaultSound,表示接收时播放系统声音;如果要自定义 iOSSound,需要先把语音文件链接进 Xcode 工程,然后把语音文件名(带后缀)设置给 iOSSound。
|
||||
static const char* kTIMIOSOfflinePushConfigSound = "ios_offline_push_config_sound";
|
||||
// bool, 读写, 是否忽略badge计数。若为true,在iOS接收端,这条消息不会使App的应用图标未读计数增加
|
||||
static const char* kTIMIOSOfflinePushConfigIgnoreBadge = "ios_offline_push_config_ignore_badge";
|
||||
// uint @ref TIMIOSOfflinePushType, 读写,iOS 离线推送的类型(仅对 iOS 生效),默认值是 TIMIOSOfflinePushType_APNS
|
||||
static const char* kTIMIOSOfflinePushConfigPushType = "ios_offline_push_config_push_type";
|
||||
// string, 读写, 设置 APNs 离线推送的通知图片 url, 借助 iOS 10 Service Extension 特性,可以下载并展示在弹窗上. url 使用的协议必须是 HTTPS 协议,取值样例:https://example.com/image.png
|
||||
// @note
|
||||
// 限制说明:
|
||||
// - 图片:支持 JPEG、GIF、PNG,大小不超过 10 MB
|
||||
// 使用说明:
|
||||
// - 需要在 IM 控制台打开 mutable-content 属性,支持 iOS 10 Service Extension 特性
|
||||
// - 获取 iOSImage 资源的 key 值是 "image"
|
||||
static const char* kTIMIOSOfflinePushConfigImage = "ios_offline_push_config_image";
|
||||
/// string, 读写, iOS 离线推送的通知级别 (iOS 15 及以上支持)
|
||||
/// 使用说明:
|
||||
/// "passive",不会发出声音、振动或横幅提示,只会静默地出现在通知中心。适用于不紧急的信息,例如应用内的社交活动更新或推荐内容。
|
||||
/// "active", 会发出声音或振动,并显示横幅提示。适用于一般的重要通知,例如消息提醒、日历事件等。(默认类型)
|
||||
/// "time-sensitive",会发出声音或振动,并显示横幅提示,这种级别的通知会打扰用户,即使用户启用了“专注模式”(Focus Mode)。适用于需要用户立即关注的紧急通知,例如安全警报、重要的时间提醒等。打开需要在苹果开发者平台和 xcode 项目中增加相应的配置。
|
||||
/// "critical", 会发出声音或振动,并显示横幅提示。这种级别的通知会打扰用户,即使设备处于静音模式。适用于极其重要的紧急通知,例如公共安全警报、严重的健康警告等。打开需要向 Apple 特殊申请。
|
||||
static const char* kTIMIOSOfflinePushConfigInterruptionLevel = "ios_offline_push_config_interruption_level";
|
||||
/// bool, 读写, 设置 iOS 后台透传消息, 设置打开后,离线接收会唤起应用并透传消息内容 ext
|
||||
static const char* kTIMIOSOfflinePushConfigEnableBackgroundNotification = "ios_offline_push_config_enable_background_notification";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 3.4 AndroidOfflinePushConfig(消息在 Android 系统上的离线推送配置)
|
||||
// @note ChannelID 的说明:
|
||||
// - Android 8.0系统以上通知栏消息增加了 channelID 的设置,目前 oppo 要求必须填写,否则在 8.0 及以上的 OPPO 手机上会收不到离线推送消息。
|
||||
// - 后续可能会增加 xiaomi_channel_id_,huawei_channel_id 等。
|
||||
// string, 读写, 通知标题
|
||||
static const char* kTIMAndroidOfflinePushConfigTitle = "android_offline_push_config_title";
|
||||
// string, 读写, 离线推送声音设置(仅对 Android 生效)。只有华为和谷歌手机支持设置声音提示,小米手机设置声音提示,请您参照 [官网](https://dev.mi.com/console/doc/detail?pId=1278%23_3_0)。另外,谷歌手机 FCM 推送在 Android 8.0 及以上系统设置声音提示,必须调用 setAndroidFCMChannelID 设置好 channelID,才能生效。AndroidSound: Android 工程里 raw 目录中的铃声文件名,不需要后缀名。
|
||||
static const char* kTIMAndroidOfflinePushConfigSound = "android_offline_push_config_sound";
|
||||
// uint @ref TIMAndroidOfflinePushNotifyMode, 读写, 当前消息的通知模式
|
||||
static const char* kTIMAndroidOfflinePushConfigNotifyMode = "android_offline_push_config_notify_mode";
|
||||
// string, 读写, 离线推送设置 VIVO 推送消息类别,详见 [官网](https://dev.vivo.com.cn/documentCenter/doc/359)。
|
||||
static const char* kTIMAndroidOfflinePushConfigVIVOCategory = "android_offline_push_config_vivo_category";
|
||||
// string, 读写, 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID(仅对 Android 生效)。
|
||||
static const char* kTIMAndroidOfflinePushConfigOPPOChannelID = "android_offline_push_config_oppo_channel_id";
|
||||
// string, 读写, 离线推送设置小米手机 8.0 系统及以上的渠道 ID(仅对 Android 生效)。
|
||||
static const char* kTIMAndroidOfflinePushConfigXiaoMiChannelID = "android_offline_push_config_xiaomi_channel_id";
|
||||
// string, 读写, 离线推送设置 FCM 通道手机 8.0 系统及以上的渠道 ID(仅对 Android 生效)。
|
||||
static const char* kTIMAndroidOfflinePushConfigFCMChannelID = "android_offline_push_config_fcm_channel_id";
|
||||
// string, 读写, 离线推送设置华为推送消息分类,详见 [官网]( https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835)
|
||||
static const char* kTIMAndroidOfflinePushConfigHuaWeiCategory = "android_offline_push_config_huawei_category";
|
||||
// string, 读写, 离线推送设置 OPPO 推送消息分类,详见:https://open.oppomobile.com/new/developmentDoc/info?id=13189。 通讯与服务类型有:"IM","ACCOUNT"等;内容与营销类型有:"NEWS","CONTENT"等
|
||||
static const char* kTIMAndroidOfflinePushConfigOPPOCategory = "android_offline_push_config_oppo_category";
|
||||
// uint @ref TIMAndroidOfflinePushConfigOPPONotifyLevel, 读写, 离线推送设置 OPPO 推送通知栏消息提醒等级,详见:https://open.oppomobile.com/new/developmentDoc/info?id=13189。使用生效前,需要先设置 AndroidOPPOCategory 指定 category 为 IM 类消息。消息提醒等级有:1,通知栏;2,通知栏 + 锁屏 (默认);16,通知栏 + 锁屏 + 横幅 + 震动 + 铃声;
|
||||
static const char* kTIMAndroidOfflinePushConfigOPPONotifyLevel = "android_offline_push_config_oppo_notify_level";
|
||||
// uint @ref TIMAndroidOfflinePushConfigHonorImportance, 读写, 离线推送设置 Honor 推送消息分类,详见:https://developer.honor.com/cn/docs/11002/guides/notification-class, "NORMAL", 表示消息为服务通讯类;"LOW", 表示消息为资讯营销类
|
||||
static const char* kTIMAndroidOfflinePushConfigHonorImportance = "android_offline_push_config_honor_importance";
|
||||
// string, 读写, 设置华为设备离线推送的通知图片 url, url 使用的协议必须是 HTTPS 协议,取值样例:https://example.com/image.png
|
||||
// @note
|
||||
// string, 读写, 图片文件须小于 512KB,规格建议为 40dp x 40dp,弧角大小为 8dp。超出建议规格的图片会存在图片压缩或图片显示不全的情况。图片格式建议使用 JPG/JPEG/PNG。
|
||||
static const char* kTIMAndroidOfflinePushConfigHuaWeiImage = "android_offline_push_config_huawei_image";
|
||||
// string, 读写, 设置荣耀设备离线推送的通知图片 url, url 使用的协议必须是 HTTPS 协议,取值样例:https://example.com/image.png
|
||||
// @note
|
||||
// 图标文件大小须小于 100KB,图标建议规格大小:160px x 160px,弧角大小为 32px,超出规格大小的图标会存在图片压缩或显示不全的情况。
|
||||
static const char* kTIMAndroidOfflinePushConfigHonorImage = "android_offline_push_config_honor_image";
|
||||
// string, 读写, 设置 Google FCM 设备离线推送的通知图片 url,未展开消息时显示为大图标,展开消息后展示为大图片. url 使用的协议必须是 HTTPS 协议,取值样例:https://example.com/image.png
|
||||
// @note
|
||||
// 图标文件大小须小于 1 MB,超出规格大小的图标会存在图片压缩或显示不全的情况。
|
||||
static const char* kTIMAndroidOfflinePushConfigFCMImage = "android_offline_push_config_fcm_image";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 3.4 HarmonyOfflinePushConfig(消息在 Harmony 系统上推送配置)
|
||||
// string, 读写, 通知标题
|
||||
static const char* kTIMHarmonyOfflinePushConfigTitle = "harmony_offline_push_config_title";
|
||||
// string, 读写, 设置鸿蒙设备离线推送的通知图片,URL使用的协议必须是HTTPS协议,取值样例:https://example.com/image.png。
|
||||
// @note
|
||||
// 支持图片格式为png、jpg、jpeg、heif、gif、bmp,图片长*宽 < 25000像素。
|
||||
static const char* kTIMHarmonyOfflinePushConfigImage = "harmony_offline_push_config_image";
|
||||
// string, 读写, 设置鸿蒙设备离线推送通知消息类别,详见:https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/message-classification-0000001149358835
|
||||
static const char* kTIMHarmonyOfflinePushConfigCategory = "harmony_offline_push_config_category";
|
||||
// uint32, 读写,离线推送忽略 badge 计数(仅对 Harmony 生效),
|
||||
// 如果设置为 YES,在 Harmony 接收端,这条消息不会使 APP 的应用图标未读计数增加。
|
||||
static const char* kTIMHarmonyOfflinePushConfigIgnoreBadge = "harmony_offline_push_config_ignore_badge";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 3.5 OfflinePushConfig(消息离线推送配置)
|
||||
// string, 读写, 当前消息在对方收到离线推送时候展示标题
|
||||
static const char* kTIMOfflinePushConfigTitle = "offline_push_config_title";
|
||||
// string, 读写, 当前消息在对方收到离线推送时候展示内容
|
||||
static const char* kTIMOfflinePushConfigDesc = "offline_push_config_desc";
|
||||
// string, 读写, 当前消息离线推送时的扩展字段
|
||||
static const char* kTIMOfflinePushConfigExt = "offline_push_config_ext";
|
||||
// uint @ref TIMOfflinePushFlag, 读写, 当前消息是否允许推送,默认允许推送 kTIMOfflinePushFlag_Default
|
||||
static const char* kTIMOfflinePushConfigFlag = "offline_push_config_flag";
|
||||
// object @ref IOSOfflinePushConfig, 读写, iOS离线推送配置
|
||||
static const char* kTIMOfflinePushConfigIOSConfig = "offline_push_config_ios_config";
|
||||
// object @ref AndroidOfflinePushConfig, 读写, Android离线推送配置
|
||||
static const char* kTIMOfflinePushConfigAndroidConfig = "offline_push_config_android_config";
|
||||
// object @ref HarmonyOfflinePushConfig, 读写, Harmony离线推送配置
|
||||
static const char* kTIMOfflinePushConfigHarmonyConfig = "offline_push_config_harmony_config";
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 四. 废弃字段
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 4.1 AndroidOfflinePushConfig(消息在 Android 系统上的离线推送配置, 已废弃的部分)
|
||||
// uint32, 读写,离线推送设置 VIVO 推送消息分类 (待废弃字段,VIVO 推送服务于 2023 年 4 月 3 日优化消息分类规则,推荐使用 kTIMAndroidOfflinePushConfigVIVOCategory 设置消息类别) ,VIVO 手机离线推送消息分类,0:运营消息,1:系统消息。默认取值为 1 。
|
||||
static const char* kTIMAndroidOfflinePushConfigVIVOClassification = "android_offline_push_config_vivo_classification";
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_OFFLINE_PUSH_MANAGER_H_
|
||||
395
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMSignalingManager.h
generated
Normal file
395
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/CHeaders/include/TIMSignalingManager.h
generated
Normal file
@@ -0,0 +1,395 @@
|
||||
// Copyright (c) 2023 Tencent. All rights reserved.
|
||||
|
||||
#ifndef SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_SIGNALING_MANAGER_H_
|
||||
#define SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_SIGNALING_MANAGER_H_
|
||||
|
||||
#include "TIMCloudDef.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// 模块简介
|
||||
// - 信令接口,包含通话邀请相关功能
|
||||
//
|
||||
// 模块参数说明
|
||||
// - API 的参数采用 json 字符串格式,请使用文件中预先定义的 JsonKey 进行参数传递和解析
|
||||
// - 如果参数中包含非英文字符,请使用 UTF-8 编码
|
||||
//
|
||||
// 模块回调说明
|
||||
// 1. 回调的类型:
|
||||
// - 调用 API 时传入的 TIMCommCallback 回调,用于异步返回 API 的调用结果
|
||||
// - 调用 TIMSetXXXCallback 设置的全局回调,用于接收后台推送的通知
|
||||
// 2. 回调触发的线程:
|
||||
// - 对于 Windows 平台,当在主线程中调用 @ref TIMInit 接口时,SDK 会将所有回调抛到主线程,请确保主线程已创建消息循环;否则,回调将在 SDK 内部的逻辑线程触发
|
||||
// - 对于 Android 平台,当调用 @ref TIMInit 接口的线程支持消息循环时,SDK 会将所有回调抛到该线程;否则,回调将在 SDK 内部的逻辑线程触发
|
||||
// - 对于 iOS 和 MAC 平台,SDK 默认将所有回调抛到主线程
|
||||
// - 对于 Linux 平台,暂不支持将回调抛到主线程,回调将在 SDK 内部的逻辑线程触发
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 一. 信令相关配置选项定义
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 1.1 信令响应类型
|
||||
enum TIMSignalingActionType {
|
||||
// 未定义
|
||||
TIMSignalingActionType_Unknown,
|
||||
// 邀请方发起邀请
|
||||
TIMSignalingActionType_Invite,
|
||||
// 邀请方取消邀请
|
||||
TIMSignalingActionType_CancelInvite,
|
||||
// 被邀请方接受邀请
|
||||
TIMSignalingActionType_AcceptInvite,
|
||||
// 被邀请方拒绝邀请
|
||||
TIMSignalingActionType_RejectInvite,
|
||||
// 邀请超时
|
||||
TIMSignalingActionType_InviteTimeout,
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 二. 信令事件回调定义
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 2.1 收到邀请的回调
|
||||
*
|
||||
* @param invite_id 邀请 ID
|
||||
* @param inviter 邀请者 userID
|
||||
* @param group_id 群组 ID
|
||||
* @param json_invitee_list 被邀请者 userID 列表,json 字符串类型
|
||||
* @param data 自定义字段
|
||||
* @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
|
||||
*/
|
||||
typedef void (*TIMSignalingReceiveNewInvitationCallback)(const char* invite_id, const char* inviter, const char* group_id,
|
||||
const char* json_invitee_list, const char* data, const void* user_data);
|
||||
|
||||
/**
|
||||
* 2.2 邀请被取消的回调
|
||||
*
|
||||
* @param invite_id 邀请 ID
|
||||
* @param inviter 邀请者 userID
|
||||
* @param data 自定义字段
|
||||
* @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
|
||||
*/
|
||||
typedef void (*TIMSignalingInvitationCancelledCallback)(const char* invite_id, const char* inviter, const char* data, const void* user_data);
|
||||
|
||||
/**
|
||||
* 2.3 被邀请者接受邀请的回调
|
||||
*
|
||||
* @param invite_id 邀请 ID
|
||||
* @param invitee 被邀请者 userID
|
||||
* @param data 自定义字段
|
||||
* @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
|
||||
*/
|
||||
typedef void (*TIMSignalingInviteeAcceptedCallback)(const char* invite_id, const char* invitee, const char* data, const void* user_data);
|
||||
|
||||
/**
|
||||
* 2.4 被邀请者拒绝邀请的回调
|
||||
*
|
||||
* @param invite_id 邀请 ID
|
||||
* @param invitee 被邀请者 userID
|
||||
* @param data 自定义字段
|
||||
* @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
|
||||
*/
|
||||
typedef void (*TIMSignalingInviteeRejectedCallback)(const char* invite_id, const char* invitee, const char* data, const void* user_data);
|
||||
|
||||
/**
|
||||
* 2.5 邀请超时的回调
|
||||
*
|
||||
* @param invite_id 邀请 ID
|
||||
* @param json_invitee_list 被邀请者 userID 列表,json 字符串类型
|
||||
* @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
|
||||
*/
|
||||
typedef void (*TIMSignalingInvitationTimeoutCallback)(const char* invite_id, const char* json_invitee_list, const void* user_data);
|
||||
|
||||
/**
|
||||
* 2.6 邀请被修改的回调(6.7 及其以上版本支持)
|
||||
*
|
||||
* @param invite_id 邀请 ID
|
||||
* @param data 自定义字段
|
||||
* @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
|
||||
*/
|
||||
typedef void (*TIMSignalingInvitationModifiedCallback)(const char* invite_id, const char* data, const void* user_data);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 三. 注册信令事件回调 API
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 3.1 设置收到信令邀请的回调
|
||||
*
|
||||
* @param cb 收到信令邀请的回调,请参考 @ref TIMSignalingReceiveNewInvitationCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
*/
|
||||
TIM_API void TIMSetSignalingReceiveNewInvitationCallback(TIMSignalingReceiveNewInvitationCallback cb, const void *user_data);
|
||||
|
||||
/**
|
||||
* 3.2 设置信令邀请被取消的回调
|
||||
*
|
||||
* @param cb 信令邀请被取消的回调,请参考 @ref TIMSignalingInvitationCancelledCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
*/
|
||||
TIM_API void TIMSetSignalingInvitationCancelledCallback(TIMSignalingInvitationCancelledCallback cb, const void *user_data);
|
||||
|
||||
/**
|
||||
* 3.3 设置信令邀请被接收者同意的回调
|
||||
*
|
||||
* @param cb 同意信令邀请的回调,请参考 @ref TIMSignalingInviteeAcceptedCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
*/
|
||||
TIM_API void TIMSetSignalingInviteeAcceptedCallback(TIMSignalingInviteeAcceptedCallback cb, const void *user_data);
|
||||
|
||||
/**
|
||||
* 3.4 设置信令邀请被接收者拒绝的回调
|
||||
*
|
||||
* @param cb 拒绝信令邀请的回调,请参考 @ref TIMSignalingInviteeRejectedCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
*/
|
||||
TIM_API void TIMSetSignalingInviteeRejectedCallback(TIMSignalingInviteeRejectedCallback cb, const void *user_data);
|
||||
|
||||
/**
|
||||
* 3.5 设置信令邀请超时的回调
|
||||
*
|
||||
* @param cb 信令邀请超时的回调,请参考 @ref TIMSignalingInvitationTimeoutCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
*/
|
||||
TIM_API void TIMSetSignalingInvitationTimeoutCallback(TIMSignalingInvitationTimeoutCallback cb, const void *user_data);
|
||||
|
||||
/**
|
||||
* 3.6 设置信令邀请被修改的回调
|
||||
*
|
||||
* @param cb 信令邀请被修改的回调,请参考 @ref TIMSignalingInvitationModifiedCallback
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
*/
|
||||
TIM_API void TIMSetSignalingInvitationModifiedCallback(TIMSignalingInvitationModifiedCallback cb, const void *user_data);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 四. 信令 API
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 4.1 邀请某个人
|
||||
*
|
||||
* @param invitee 被邀请人的 userID
|
||||
* @param data 自定义数据
|
||||
* @param online_user_only 是否只有在线用户才能收到邀请,如果设置为 true,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)
|
||||
* @param json_offline_push_info 离线推送时携带的标题和声音,其中 desc 为必填字段,推送的时候会默认展示 desc 信息,Json key 的定义请参考 @ref OfflinePushConfig
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不触发 @ref TIMSignalingInvitationTimeoutCallback 回调
|
||||
* @param invite_id_buffer 出参,邀请 ID,分配内存大小不能低于 128 字节,如果不需要,可传入 nullptr,调用接口后,可以读取到以 '\0' 结尾的字符串
|
||||
* @param cb 回调
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
* @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
|
||||
*
|
||||
* __示例__
|
||||
* @code{.cpp}
|
||||
* Json::Value json_offline_push_info;
|
||||
* json_offline_push_info[kTIMOfflinePushConfigDesc] = "push desc";
|
||||
*
|
||||
* const size_t kMessageIDLength = 128;
|
||||
* char invite_id_buffer[kMessageIDLength] = {0};
|
||||
* int ret = TIMSignalingInvite("user", "custom data", true, json_offline_push_info, 30, invite_id_buffer,
|
||||
* [](int32_t code, const char* desc, const char* json_params, const void* user_data){
|
||||
* if (ERR_SUCC == code) {
|
||||
* // 邀请成功
|
||||
* } else {
|
||||
* // 邀请失败
|
||||
* }
|
||||
* }, nullptr);
|
||||
* @endcode
|
||||
*/
|
||||
TIM_API int TIMSignalingInvite(const char* invitee, const char* data, bool online_user_only, const char* json_offline_push_info, int timeout, char* invite_id_buffer, TIMCommCallback cb, const void* user_data);
|
||||
|
||||
/**
|
||||
* 4.2 邀请群内的某些人
|
||||
*
|
||||
* @param group_id 发起邀请所在群组
|
||||
* @param json_invitee_array 被邀请人列表,且被邀请人必须已经在群组内,否则邀请无效
|
||||
* @param data 自定义字段
|
||||
* @param online_user_only 是否只有在线用户才能收到邀请,如果设置为 true,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不触发 @ref TIMSignalingInvitationTimeoutCallback 回调
|
||||
* @param invite_id_buffer 出参,邀请ID,分配内存大小不能低于 128 字节,如果不需要,可传入 nullptr,调用接口后,可以读取到以 '\0' 结尾的字符串
|
||||
* @param cb 回调
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
* @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
|
||||
*
|
||||
* __示例__
|
||||
* @code{.cpp}
|
||||
* Json::Value json_invitee_array(Json::arrayValue);
|
||||
* json_invitee_array.append("user1");
|
||||
* json_invitee_array.append("user2");
|
||||
*
|
||||
* const size_t kMessageIDLength = 128;
|
||||
* char invite_id_buffer[kMessageIDLength] = {0};
|
||||
* int ret = TIMSignalingInviteInGroup("group_id", json_invitee_array, "custom data", true, 30, invite_id_buffer,
|
||||
* [](int32_t code, const char* desc, const char* json_params, const void* user_data){
|
||||
* if (ERR_SUCC == code) {
|
||||
* // 邀请成功
|
||||
* } else {
|
||||
* // 邀请失败
|
||||
* }
|
||||
* }, nullptr);
|
||||
* @endcode
|
||||
*/
|
||||
TIM_API int TIMSignalingInviteInGroup(const char* group_id, const char* json_invitee_array, const char* data, bool online_user_only, int timeout, char* invite_id_buffer, TIMCommCallback cb, const void* user_data);
|
||||
|
||||
/**
|
||||
* 4.3 邀请方取消邀请
|
||||
*
|
||||
* @param invite_id 邀请 ID
|
||||
* @param data 自定义字段
|
||||
* @param cb 回调
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
* @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
|
||||
*
|
||||
* @note 如果所有被邀请人都已经处理了当前邀请(包含超时),不能再取消当前邀请。
|
||||
*
|
||||
* __示例__
|
||||
* @code{.cpp}
|
||||
* const char *invite_id = "XXX-XXX-XXX-XXX";
|
||||
* int ret = TIMSignalingCancel(invite_id, "",
|
||||
* [](int32_t code, const char* desc, const char* json_params, const void* user_data){
|
||||
* if (ERR_SUCC == code) {
|
||||
* // 取消成功
|
||||
* } else {
|
||||
* // 取消失败
|
||||
* }
|
||||
* }, nullptr);
|
||||
* @endcode
|
||||
*/
|
||||
TIM_API int TIMSignalingCancel(const char* invite_id, const char* data, TIMCommCallback cb, const void* user_data);
|
||||
|
||||
/**
|
||||
* 4.4 被邀请方接受邀请
|
||||
*
|
||||
* @param invite_id 邀请 ID
|
||||
* @param data 自定义字段
|
||||
* @param cb 回调
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
* @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
|
||||
*
|
||||
* @note 不能接受不是针对自己的邀请,请在收到 @ref TIMSignalingReceiveNewInvitation 回调的时候先判断 json_invitee_array 有没有自己,如果没有自己,不能 accept 邀请。
|
||||
*
|
||||
* __示例__
|
||||
* @code{.cpp}
|
||||
* const char *invite_id = "XXX-XXX-XXX-XXX";
|
||||
* int ret = TIMSignalingAccept(invite_id, "",
|
||||
* [](int32_t code, const char* desc, const char* json_params, const void* user_data){
|
||||
* if (ERR_SUCC == code) {
|
||||
* // 接受邀请成功
|
||||
* } else {
|
||||
* // 接受邀请失败
|
||||
* }
|
||||
* }, nullptr);
|
||||
* @endcode
|
||||
*/
|
||||
TIM_API int TIMSignalingAccept(const char* invite_id, const char* data, TIMCommCallback cb, const void* user_data);
|
||||
|
||||
/**
|
||||
* 4.5 被邀请方拒绝邀请
|
||||
*
|
||||
* @param invite_id 邀请 ID
|
||||
* @param data 自定义字段
|
||||
* @param cb 回调
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
* @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
|
||||
*
|
||||
* @note 不能拒绝不是针对自己的邀请,请在收到 @ref TIMSignalingReceiveNewInvitation 回调的时候先判断 json_invitee_array 有没有自己,如果没有自己,不能 reject 邀请。
|
||||
*
|
||||
* __示例__
|
||||
* @code{.cpp}
|
||||
* const char *invite_id = "XXX-XXX-XXX-XXX";
|
||||
* int ret = TIMSignalingReject(invite_id, "",
|
||||
* [](int32_t code, const char* desc, const char* json_params, const void* user_data){
|
||||
* if (ERR_SUCC == code) {
|
||||
* // 拒绝邀请成功
|
||||
* } else {
|
||||
* // 拒绝邀请失败
|
||||
* }
|
||||
* }, nullptr);
|
||||
* @endcode
|
||||
*/
|
||||
TIM_API int TIMSignalingReject(const char* invite_id, const char* data, TIMCommCallback cb, const void* user_data);
|
||||
|
||||
/**
|
||||
* 4.6 获取信令信息
|
||||
*
|
||||
* @param json_msg 消息 json 字符串
|
||||
* @param json_signaling_info_cb 获取信令消息的回调,您可以在该回调中根据 code == ERR_SUCC 来确定当前 json_msg 为信令消息
|
||||
* @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
|
||||
* @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
|
||||
*
|
||||
* @note
|
||||
* 如果 invite 设置 online_user_only 为 false,每次信令操作(包括 invite、cancel、accept、reject、timeout)都会产生一条自定义消息,该消息会通过 @ref TIMRecvNewMsgCallback 抛给用户,用户也可以通过历史消息拉取,如果需要根据信令信息做自定义化文本展示,可以调用下面接口获取信令信息。
|
||||
*
|
||||
* __示例__
|
||||
* @code{.cpp}
|
||||
* const char *json_msg = "";
|
||||
* int ret = TIMGetSignalingInfo(json_msg,
|
||||
* [](int32_t code, const char* desc, const char* json_params, const void* user_data){
|
||||
* if (ERR_SUCC == code) {
|
||||
* // 当前消息是信令消息
|
||||
* } else {
|
||||
* // 当前消息为普通消息
|
||||
* }
|
||||
* }, nullptr);
|
||||
* @endcode
|
||||
*/
|
||||
TIM_API int TIMGetSignalingInfo(const char *json_msg, TIMCommCallback json_signaling_info_cb, const void* user_data);
|
||||
|
||||
/**
|
||||
* 4.7 修改邀请信令(6.7 及其以上版本支持)
|
||||
*
|
||||
* @note 仅支持修改邀请信令的自定义字段 data。只有在线用户才能收到的邀请信令不能被修改。
|
||||
*
|
||||
* __示例__
|
||||
* @code{.cpp}
|
||||
* const char *invite_id = "XXX-XXX-XXX-XXX";
|
||||
* int ret = TIMSignalingModifyInvitation(invite_id, "",
|
||||
* [](int32_t code, const char* desc, const char* json_params, const void* user_data){
|
||||
* if (ERR_SUCC == code) {
|
||||
* // 修改邀请成功
|
||||
* } else {
|
||||
* // 修改邀请失败
|
||||
* }
|
||||
* }, nullptr);
|
||||
* @endcode
|
||||
*/
|
||||
TIM_API int TIMSignalingModifyInvitation(const char* invite_id, const char* data, TIMCommCallback cb, const void* user_data);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 五. 信令 API 参数相关的 Json Key 定义
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 5.1 SignalingInfo(信令基础信息定义)
|
||||
// string, 只读, 邀请 ID
|
||||
static const char* kTIMSignalingInfoInviteID = "signaling_info_invite_id";
|
||||
// string, 只读, 群组 ID
|
||||
static const char* kTIMSignalingInfoGroupID = "signaling_info_group_id";
|
||||
// string, 只读, 邀请方的 ID
|
||||
static const char* kTIMSignalingInfoInviter = "signaling_info_inviter";
|
||||
// string, 只读, 被邀请方列表
|
||||
static const char* kTIMSignalingInfoInviteeList = "signaling_info_invitee_list";
|
||||
// string, 只读, 信令自定义内容
|
||||
static const char* kTIMSignalingInfoData = "signaling_info_data";
|
||||
// int @ref TIMSignalingActionType, 只读, 信令响应类型
|
||||
static const char* kTIMSignalingInfoActionType = "signaling_info_action_type";
|
||||
// int, 只读, 超时时间
|
||||
static const char* kTIMSignalingInfoTimeout = "signaling_info_timeout";
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_SIGNALING_MANAGER_H_
|
||||
56
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/Info.plist
generated
Normal file
56
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/Info.plist
generated
Normal file
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AvailableLibraries</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>LibraryIdentifier</key>
|
||||
<string>ios-arm64_x86_64-maccatalyst</string>
|
||||
<key>LibraryPath</key>
|
||||
<string>ImSDK_Plus.framework</string>
|
||||
<key>SupportedArchitectures</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
<string>x86_64</string>
|
||||
</array>
|
||||
<key>SupportedPlatform</key>
|
||||
<string>ios</string>
|
||||
<key>SupportedPlatformVariant</key>
|
||||
<string>maccatalyst</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>LibraryIdentifier</key>
|
||||
<string>ios-arm64_armv7</string>
|
||||
<key>LibraryPath</key>
|
||||
<string>ImSDK_Plus.framework</string>
|
||||
<key>SupportedArchitectures</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>SupportedPlatform</key>
|
||||
<string>ios</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>LibraryIdentifier</key>
|
||||
<string>ios-arm64_x86_64-simulator</string>
|
||||
<key>LibraryPath</key>
|
||||
<string>ImSDK_Plus.framework</string>
|
||||
<key>SupportedArchitectures</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
<string>x86_64</string>
|
||||
</array>
|
||||
<key>SupportedPlatform</key>
|
||||
<string>ios</string>
|
||||
<key>SupportedPlatformVariant</key>
|
||||
<string>simulator</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XFWK</string>
|
||||
<key>XCFrameworkFormatVersion</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,19 @@
|
||||
// Copyright (c) 2025 Tencent. All rights reserved.
|
||||
|
||||
|
||||
#ifndef TIM_IM_SDK_PLUS_H_
|
||||
#define TIM_IM_SDK_PLUS_H_
|
||||
|
||||
#import "TIMErrorCode.h"
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+APNS.h"
|
||||
#import "V2TIMManager+Friendship.h"
|
||||
#import "V2TIMManager+Conversation.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
#import "V2TIMManager+Community.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
#import "V2TIMManager+Signaling.h"
|
||||
#import "V2TIMManager+VOIP.h"
|
||||
#import "V2TIMManager+LiveActivity.h"
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,446 @@
|
||||
// Copyright (c) 2020 Tencent. All rights reserved.
|
||||
|
||||
#ifndef TIM_ERROR_CODE_H_
|
||||
#define TIM_ERROR_CODE_H_
|
||||
|
||||
enum ERROR_CODE {
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (一)IM SDK 的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 通用错误码
|
||||
|
||||
ERR_SUCC = 0, ///< 无错误。
|
||||
ERR_IN_PROGESS = 6015, ///< 接口正在执行中,请您在收到回调之后,再次发起对当前接口的调用,即采用串行方式调用接口。
|
||||
ERR_INVALID_PARAMETERS = 6017, ///< 参数无效,请检查参数是否符合要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_IO_OPERATION_FAILED = 6022, ///< 操作本地 IO 错误,检查是否有读写权限,磁盘是否已满。
|
||||
ERR_INVALID_JSON = 6027, ///< 错误的 JSON 格式,请检查参数是否符合接口的要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_OUT_OF_MEMORY = 6028, ///< 内存不足,可能存在内存泄漏,iOS 平台使用 Instrument 工具,Android 平台使用 Profiler 工具,分析出什么地方的内存占用高。
|
||||
ERR_PARSE_RESPONSE_FAILED = 6001, ///< PB 解析失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SERIALIZE_REQ_FAILED = 6002, ///< PB 序列化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_NOT_INITIALIZED = 6013, ///< IM SDK 未初始化,初始化成功回调之后重试。
|
||||
ERR_LOADMSG_FAILED = 6005, ///< 加载本地数据库操作失败,可能存储文件有损坏,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服定位具体问题。
|
||||
ERR_DATABASE_OPERATE_FAILED = 6019, ///< 本地数据库操作失败,可能是部分目录无权限或者数据库文件已损坏。
|
||||
ERR_HTTP_NO_CLEARTEXT_TRAFFIC_PERMISSION = 6029, ///< 无 http 协议的访问权限,iOS 9.0 和 Android P 开始默认限制 http 协议,iOS 平台可配置 NSAppTransportSecurity 选项,Android 平台可配置 cleartextTrafficPermitted 选项,取消 http 协议的限制。
|
||||
ERR_SDK_COMM_CROSS_THREAD = 7001, ///< 跨线程错误,不能在跨越不同线程中执行,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_TINYID_EMPTY = 7002, ///< TinyId 为空,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_INVALID_IDENTIFIER = 7003, ///< Identifier 非法,必须不为空,要求可打印 ASCII 字符(0x20-0x7e),长度不超过32字节。
|
||||
ERR_SDK_COMM_FILE_NOT_FOUND = 7004, ///< 文件不存在,请检查文件路径是否正确。
|
||||
ERR_SDK_COMM_FILE_TOO_LARGE = 7005, ///< 文件大小超出了限制,图片、语音最大限制是28MB,视频、文件最大限制是100MB
|
||||
ERR_SDK_COMM_FILE_SIZE_EMPTY = 7006, ///< 空文件,要求文件大小不是0字节,如果上传图片、语音、视频或文件,请检查文件是否正确生成。
|
||||
ERR_SDK_COMM_FILE_OPEN_FAILED = 7007, ///< 文件打开失败,请检查文件是否存在,或者已被独占打开,引起 SDK 打开失败。
|
||||
ERR_SDK_COMM_API_CALL_FREQUENCY_LIMIT = 7008, ///< API 调用超频
|
||||
ERR_SDK_INTERFACE_NOT_SUPPORT = 7013, ///< 套餐包不支持该接口的使用,请升级到旗舰版套餐
|
||||
ERR_SDK_INVALID_OPERATION = 7014, ///< 非法请求
|
||||
ERR_SDK_BLOCKED_BY_SENSITIVE_WORD = 7015, ///< SDK 本地内容审核,命中敏感词
|
||||
|
||||
// 账号错误码
|
||||
|
||||
ERR_SDK_NOT_LOGGED_IN = 6014, ///< IM SDK 未登录,请先登录,成功回调之后重试,或者已被踢下线,可使用 TIMManager getLoginUser 检查当前是否在线。
|
||||
ERR_NO_PREVIOUS_LOGIN = 6026, ///< 自动登录时,并没有登录过该用户,这时候请调用 login 接口重新登录。
|
||||
ERR_USER_SIG_EXPIRED = 6206, ///< UserSig 过期,请重新获取有效的 UserSig 后再重新登录。
|
||||
ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, ///< 其他终端登录同一个账号,引起已登录的账号被踢,需重新登录。
|
||||
ERR_SDK_ACCOUNT_LOGIN_IN_PROCESS = 7501, ///< 登录正在执行中,例如,第一次 login 或 autoLogin 操作在回调前,后续的 login 或 autoLogin 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_LOGOUT_IN_PROCESS = 7502, ///< 登出正在执行中,例如,第一次 logout 操作在回调前,后续的 logout 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_TLS_INIT_FAILED = 7503, ///< TLS SDK 初始化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_NOT_INITIALIZED = 7504, ///< TLS SDK 未初始化,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_TRANSPKG_ERROR = 7505, ///< TLS SDK TRANS 包格式错误,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_DECRYPT_FAILED = 7506, ///< TLS SDK 解密失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_FAILED = 7507, ///< TLS SDK 请求失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_TIMEOUT = 7508, ///< TLS SDK 请求超时,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_INVALID_CONVERSATION = 6004, ///< 会话无效,getConversation 时检查是否已经登录,如未登录获取会话,会有此错误码返回。
|
||||
ERR_FILE_TRANS_AUTH_FAILED = 6006, ///< 文件传输鉴权失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_NO_SERVER = 6007, ///< 文件传输获取 Server 列表失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_UPLOAD_FAILED = 6008, ///< 文件传输上传失败,请检查网络是否连接
|
||||
ERR_IMAGE_UPLOAD_FAILED_NOTIMAGE = 6031, ///< 文件传输上传失败,请检查上传的图片是否能够正常打开。
|
||||
ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, ///< 文件传输下载失败,请检查网络,或者文件、语音是否已经过期,目前资源文件存储7天。
|
||||
ERR_HTTP_REQ_FAILED = 6010, ///< HTTP 请求失败,请检查 URL 地址是否合法,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_INVALID_MSG_ELEM = 6016, ///< IM SDK 无效消息 elem,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_INVALID_SDK_OBJECT = 6021, ///< 无效的对象,例如用户自己生成 TIMImage 对象,或内部赋值错误导致对象无效。
|
||||
ERR_INVALID_MSG_RECEIVER = 6032, ///< 无效的消息接收方,请在 IM 控制台检查消息的接收方是否存在。
|
||||
ERR_SDK_MSG_BODY_SIZE_LIMIT = 8001, ///< 消息长度超出限制,消息长度不要超过12k,消息长度是各个 elem 长度的总和,elem 长度是所有 elem 字段的长度总和。
|
||||
ERR_SDK_MSG_KEY_REQ_DIFFER_RSP = 8002, ///< 消息 KEY 错误,内部错误,网络请求包的 KEY 和 回复包的不一致。
|
||||
ERR_SDK_IMAGE_CONVERT_ERROR = 8003, ///< 万象优图 HTTP 请求失败。
|
||||
ERR_MERGER_MSG_LAYERS_OVER_LIMIT = 8005, ///< 合并消息嵌套层数超过上限(上限 100 层)。
|
||||
ERR_SDK_MSG_MODIFY_CONFLICT = 8006, ///< 消息修改冲突,您请求修改的消息已经被其他人修改。
|
||||
|
||||
ERR_SDK_SIGNALING_INVALID_INVITE_ID = 8010, ///< 信令请求 ID 无效或已经被处理过。
|
||||
ERR_SDK_SIGNALING_NO_PERMISSION = 8011, ///< 信令请求无权限,比如取消非自己发起的邀请。
|
||||
ERR_SDK_SIGNALING_ALREADY_EXISTS = 8012, ///< 信令邀请已存在。
|
||||
|
||||
// 群组错误码
|
||||
|
||||
ERR_SDK_GROUP_INVALID_ID = 8501, ///< 群组 ID 非法,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长48个字节,且前缀不能为 @TGS#(避免与服务端默认分配的群组 ID 混淆)。
|
||||
ERR_SDK_GROUP_INVALID_NAME = 8502, ///< 群名称非法,群名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_INTRODUCTION = 8503, ///< 群简介非法,群简介最长240字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_NOTIFICATION = 8504, ///< 群公告非法,群公告最长300字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_FACE_URL = 8505, ///< 群头像 URL 非法,群头像 URL 最长100字节,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_SDK_GROUP_INVALID_NAME_CARD = 8506, ///< 群名片非法,群名片最长50字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_MEMBER_COUNT_LIMIT = 8507, ///< 超过群组成员数的限制,在创建群和邀请成员时,指定的成员数超出限制,最大群成员数量:私有群是200人,公开群是2000人,聊天室是10000人,音视频聊天室和在线成员广播大群无限制。
|
||||
ERR_SDK_GROUP_JOIN_PRIVATE_GROUP_DENY = 8508, ///< 不允许申请加入 Private 群组,任意群成员可邀请入群,且无需被邀请人同意。
|
||||
ERR_SDK_GROUP_INVITE_SUPER_DENY = 8509, ///< 不允许邀请角色为群主的成员,请检查角色字段是否填写正确。
|
||||
ERR_SDK_GROUP_INVITE_NO_MEMBER = 8510, ///< 不允许邀请0个成员,请检查成员字段是否填写正确。
|
||||
ERR_SDK_GROUP_ATTR_FREQUENCY_LIMIT = 8511, ///< 群属性接口操作限制:增删改接口后台限制1秒5次,查接口 SDK 限制5秒20次。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SDK_FRIENDSHIP_INVALID_PROFILE_KEY = 9001, ///< 资料字段非法,资料支持标配字段及自定义字段,其中自定义字段的关键字,必须是英文字母,且长度不得超过8字节,自定义字段的值最长不能超过500字节。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_REMARK = 9002, ///< 备注字段非法,最大96字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_WORDING = 9003, ///< 请求添加好友的请求说明字段非法,最大120字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_SOURCE = 9004, ///< 请求添加好友的添加来源字段非法,来源需要添加“AddSource_Type_”前缀。
|
||||
ERR_SDK_FRIENDSHIP_FRIEND_GROUP_EMPTY = 9005, ///< 好友分组字段非法,必须不为空,每个分组的名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
|
||||
// 网络错误码
|
||||
|
||||
ERR_SDK_NET_ENCODE_FAILED = 9501, ///< 网络加密失败,内部错误。
|
||||
ERR_SDK_NET_DECODE_FAILED = 9502, ///< 网络数据解密失败,内部错误。
|
||||
ERR_SDK_NET_AUTH_INVALID = 9503, ///< 未完成鉴权,可能登录未完成,请在登录完成后再操作。
|
||||
ERR_SDK_NET_COMPRESS_FAILED = 9504, ///< 数据包压缩失败,内部错误。
|
||||
ERR_SDK_NET_UNCOMPRESS_FAILED = 9505, ///< 数据包解压失败,内部错误。
|
||||
ERR_SDK_NET_FREQ_LIMIT = 9506, ///< 调用频率限制,最大每秒发起 5 次请求。
|
||||
ERR_SDK_NET_REQ_COUNT_LIMIT = 9507, ///< 请求队列満,超过同时请求的数量限制,最大同时发起1000个请求。
|
||||
ERR_SDK_NET_DISCONNECT = 9508, ///< 网络已断开,未建立连接,或者建立 socket 连接时,检测到无网络。
|
||||
ERR_SDK_NET_ALLREADY_CONN = 9509, ///< 网络连接已建立,重复创建连接,内部错误。
|
||||
ERR_SDK_NET_CONN_TIMEOUT = 9510, ///< 建立网络连接超时,请等网络恢复后重试。
|
||||
ERR_SDK_NET_CONN_REFUSE = 9511, ///< 网络连接已被拒绝,请求过于频繁,服务端拒绝服务。
|
||||
ERR_SDK_NET_NET_UNREACH = 9512, ///< 没有到达网络的可用路由,请等网络恢复后重试。
|
||||
ERR_SDK_NET_SOCKET_NO_BUFF = 9513, ///< 系统中没有足够的缓冲区空间资源可用来完成调用,系统过于繁忙,内部错误。
|
||||
ERR_SDK_NET_RESET_BY_PEER = 9514, ///< 对端重置了连接,可能服务端过载,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_SOCKET_INVALID = 9515, ///< socket 套接字无效,内部错误。
|
||||
ERR_SDK_NET_HOST_GETADDRINFO_FAILED = 9516, ///< IP 地址解析失败,内部错误,可能是本地 imsdk_config 配置文件被损坏,读取到到 IP 地址非法。
|
||||
ERR_SDK_NET_CONNECT_RESET = 9517, ///< 网络连接到中间节点或服务端重置,引起连接失效,内部错误,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_WAIT_INQUEUE_TIMEOUT = 9518, ///< 请求包等待进入待发送队列超时,发送时网络连接建立比较慢 或 频繁断网重连时,会出现该错误,请检查网络连接是否正常。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT = 9519, ///< 请求包已进入 IM SDK 待发送队列,等待进入操作系统的网络层时超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT = 9520, ///< 请求包已由 IM SDK 待发送队列进入操作系统网络层,等待服务端回包超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_SEND_REMAINING_TIMEOUT = 9521, ///< 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误时检测有联网,内部错误。
|
||||
ERR_SDK_NET_PKG_SIZE_LIMIT = 9522, ///< 请求包长度大于限制,最大支持 1MB 。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT_NO_NETWORK = 9523, ///< 请求包已进入待发送队列,等待进入系统的网络 buffer 超时,数据包较多 或 发送线程处理不过来,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT_NO_NETWORK = 9524, ///< 请求包已进入系统的网络 buffer ,等待服务端回包超时,可能请求包没离开终端设备、中间路由丢弃、服务端意外丢包或回包被系统网络层丢弃,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_SEND_REMAINING_TIMEOUT_NO_NETWORK = 9525, ///< 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误码时检测到没有联网。
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (二)服务端的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 网络接入层的错误码
|
||||
|
||||
ERR_SVR_SSO_CONNECT_LIMIT = -302, // Server 的连接数量超出限制,服务端拒绝服务。
|
||||
ERR_SVR_SSO_VCODE = -10000, // 下发验证码标志错误。
|
||||
ERR_SVR_SSO_D2_EXPIRED = -10001, // Key 过期。Key 是根据 UserSig 生成的内部票据,Key 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_A2_UP_INVALID = -10003, // Ticket 过期。Ticket 是根据 UserSig 生成的内部票据,Ticket 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Ticket。
|
||||
ERR_SVR_SSO_A2_DOWN_INVALID = -10004, // 票据验证没通过或者被安全打击。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的票据。
|
||||
ERR_SVR_SSO_EMPTY_KEY = -10005, // 不允许空 Key。
|
||||
ERR_SVR_SSO_UIN_INVALID = -10006, // Key 中的账号和请求包头的账号不匹配。
|
||||
ERR_SVR_SSO_VCODE_TIMEOUT = -10007, // 验证码下发超时。
|
||||
ERR_SVR_SSO_NO_IMEI_AND_A2 = -10008, // 需要带上 Key 和 Ticket。
|
||||
ERR_SVR_SSO_COOKIE_INVALID = -10009, // Cookie 检查不匹配。
|
||||
ERR_SVR_SSO_DOWN_TIP = -10101, // 下发提示语时 Key 过期。Key 是根据 UserSig 生成的内部票据,Key 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_DISCONNECT = -10102, // 网络连接断开。
|
||||
ERR_SVR_SSO_IDENTIFIER_INVALID = -10103, // 失效身份。
|
||||
ERR_SVR_SSO_CLIENT_CLOSE = -10104, // 终端自动退出。
|
||||
ERR_SVR_SSO_MSFSDK_QUIT = -10105, // MSFSDK 自动退出。
|
||||
ERR_SVR_SSO_D2KEY_WRONG = -10106, // 解密失败次数超过阈值,通知终端需要重置,请重新调用 TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_UNSURPPORT = -10107, // 不支持聚合,给终端返回统一的错误码。终端在该 TCP 长连接上停止聚合。
|
||||
ERR_SVR_SSO_PREPAID_ARREARS = -10108, // 预付费欠费。
|
||||
ERR_SVR_SSO_PACKET_WRONG = -10109, // 请求包格式错误。
|
||||
ERR_SVR_SSO_APPID_BLACK_LIST = -10110, // SDKAppID 黑名单。
|
||||
ERR_SVR_SSO_CMD_BLACK_LIST = -10111, // SDKAppID 设置 service cmd 黑名单。
|
||||
ERR_SVR_SSO_APPID_WITHOUT_USING = -10112, // SDKAppID 停用。
|
||||
ERR_SVR_SSO_FREQ_LIMIT = -10113, // 频率限制(用户),频率限制是设置针对某一个协议的每秒请求数的限制。
|
||||
ERR_SVR_SSO_OVERLOAD = -10114, // 过载丢包(系统),连接的服务端处理过多请求,处理不过来,拒绝服务。
|
||||
ERR_SVR_SSO_FREQUENCY_LIMIT = -20009, // 终端访问接口超频。
|
||||
|
||||
// 资源文件错误码
|
||||
|
||||
ERR_SVR_RES_NOT_FOUND = 114000, ///< 要发送的资源文件不存在。
|
||||
ERR_SVR_RES_ACCESS_DENY = 114001, ///< 要发送的资源文件不允许访问。
|
||||
ERR_SVR_RES_SIZE_LIMIT = 114002, ///< 文件大小超过限制。
|
||||
ERR_SVR_RES_SEND_CANCEL = 114003, ///< 用户取消发送,如发送过程中登出等原因。
|
||||
ERR_SVR_RES_READ_FAILED = 114004, ///< 读取文件内容失败。
|
||||
ERR_SVR_RES_TRANSFER_TIMEOUT = 114005, ///< 资源文件(如图片、文件、语音、视频)传输超时,一般是网络问题导致。
|
||||
ERR_SVR_RES_INVALID_PARAMETERS = 114011, ///< 参数非法。
|
||||
ERR_SVR_RES_INVALID_FILE_MD5 = 115066, ///< 文件 MD5 校验失败。
|
||||
ERR_SVR_RES_INVALID_PART_MD5 = 115068, ///< 分片 MD5 校验失败。
|
||||
|
||||
// 后台公共错误码
|
||||
|
||||
ERR_SVR_COMM_INVALID_HTTP_URL = 60002, ///< HTTP 解析错误 ,请检查 HTTP 请求 URL 格式。
|
||||
ERR_SVR_COMM_REQ_JSON_PARSE_FAILED = 60003, ///< HTTP 请求 JSON 解析错误,请检查 JSON 格式。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT = 60004, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT_EX = 60005, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_SDKAPPID = 60006, ///< SDKAppID 失效,请核对 SDKAppID 有效性。
|
||||
ERR_SVR_COMM_REST_FREQ_LIMIT = 60007, ///< REST 接口调用频率超过限制,请降低请求频率。
|
||||
ERR_SVR_COMM_REQUEST_TIMEOUT = 60008, ///< 服务请求超时或 HTTP 请求格式错误,请检查并重试。
|
||||
ERR_SVR_COMM_INVALID_RES = 60009, ///< 请求资源错误,请检查请求 URL。
|
||||
ERR_SVR_COMM_ID_NOT_ADMIN = 60010, ///< REST API 请求的 Identifier 字段请填写 App 管理员账号。
|
||||
ERR_SVR_COMM_SDKAPPID_FREQ_LIMIT = 60011, ///< SDKAppID 请求频率超限,请降低请求频率。
|
||||
ERR_SVR_COMM_SDKAPPID_MISS = 60012, ///< REST 接口需要带 SDKAppID,请检查请求 URL 中的 SDKAppID。
|
||||
ERR_SVR_COMM_RSP_JSON_PARSE_FAILED = 60013, ///< HTTP 响应包 JSON 解析错误。
|
||||
ERR_SVR_COMM_EXCHANGE_ACCOUNT_TIMEUT = 60014, ///< 置换账号超时。
|
||||
ERR_SVR_COMM_INVALID_ID_FORMAT = 60015, ///< 请求包体 Identifier 类型错误,请确认 Identifier 为字符串格式。
|
||||
ERR_SVR_COMM_SDKAPPID_FORBIDDEN = 60016, ///< SDKAppID 被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FORBIDDEN = 60017, ///< 请求被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT = 60018, ///< 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT_EX = 60019, ///< 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_INVALID_SERVICE = 60020, ///< 未购买套餐包或购买的套餐包正在配置中暂未生效,请五分钟后再次尝试。
|
||||
ERR_SVR_COMM_SENSITIVE_TEXT = 80001, ///< 文本安全打击,文本中可能包含敏感词汇。
|
||||
ERR_SVR_COMM_BODY_SIZE_LIMIT = 80002, ///< 发消息包体过长,目前支持最大12k消息包体长度,请减少包体大小重试。
|
||||
ERR_SVR_COMM_SENSITIVE_IMAGE = 80004, ///< 图片安全打击,图片中可能包含敏感内容。
|
||||
|
||||
// 账号错误码
|
||||
|
||||
ERR_SVR_ACCOUNT_USERSIG_EXPIRED = 70001, ///< UserSig 已过期,请重新生成 UserSig,建议 UserSig 有效期不小于24小时。
|
||||
ERR_SVR_ACCOUNT_USERSIG_EMPTY = 70002, ///< UserSig 长度为0,请检查传入的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED = 70003, ///< UserSig 校验失败,请确认下 UserSig 内容是否被截断,如缓冲区长度不够导致的内容截断。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED_EX = 70005, ///< UserSig 校验失败,可用工具自行验证生成的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_PUBLICKEY = 70009, ///< 用公钥验证 UserSig 失败,请确认生成的 UserSig 使用的私钥和 SDKAppID 是否对应。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_ID = 70013, ///< 请求的 Identifier 与生成 UserSig 的 Identifier 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_SDKAPPID = 70014, ///< 请求的 SDKAppID 与生成 UserSig 的 SDKAppID 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_PUBLICKEY_NOT_FOUND = 70016, ///< 验证 UserSig 时公钥不存在。请先登录控制台下载私钥,下载私钥的具体方法可参考 [下载签名用的私钥](https://cloud.tencent.com/document/product/269/32688#.E4.B8.8B.E8.BD.BD.E7.AD.BE.E5.90.8D.E7.94.A8.E7.9A.84.E7.A7.81.E9.92.A5) 。
|
||||
ERR_SVR_ACCOUNT_SDKAPPID_NOT_FOUND = 70020, ///< SDKAppID 未找到,请在云通信 IM 控制台确认应用信息。
|
||||
ERR_SVR_ACCOUNT_INVALID_USERSIG = 70052, ///< UserSig 已经失效,请重新生成,再次尝试。
|
||||
ERR_SVR_ACCOUNT_NOT_FOUND = 70107, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_ACCOUNT_SEC_RSTR = 70114, ///< 安全原因被限制。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_TIMEOUT = 70169, ///< 服务端内部超时,请重试。
|
||||
ERR_SVR_ACCOUNT_INVALID_COUNT = 70206, ///< 请求中批量数量不合法。
|
||||
ERR_SVR_ACCOUNT_INVALID_PARAMETERS = 70402, ///< 参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。
|
||||
ERR_SVR_ACCOUNT_ADMIN_REQUIRED = 70403, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_ACCOUNT_LOW_SDK_VERSION = 70404, ///< 您的SDK版本过低,请升级到最新版本.
|
||||
ERR_SVR_ACCOUNT_FREQ_LIMIT = 70050, ///< 因失败且重试次数过多导致被限制,请检查 UserSig 是否正确,一分钟之后再试。
|
||||
ERR_SVR_ACCOUNT_BLACKLIST = 70051, ///< 账号被拉入黑名单。
|
||||
ERR_SVR_ACCOUNT_COUNT_LIMIT = 70398, ///< 创建账号数量超过免费体验版数量限制,请升级为专业版。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_ERROR = 70500, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_ACCOUNT_USER_STATUS_DISABLED = 72001, ///< 用户状态能力需要登录 IM 控制台开启
|
||||
|
||||
// 资料错误码
|
||||
|
||||
ERR_SVR_PROFILE_INVALID_PARAMETERS = 40001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_PROFILE_ACCOUNT_MISS = 40002, ///< 请求参数错误,没有指定需要拉取资料的用户账号。
|
||||
ERR_SVR_PROFILE_ACCOUNT_NOT_FOUND = 40003, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_PROFILE_ADMIN_REQUIRED = 40004, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_PROFILE_SENSITIVE_TEXT = 40005, ///< 资料字段中包含敏感词。
|
||||
ERR_SVR_PROFILE_INTERNAL_ERROR = 40006, ///< 服务端内部错误,请稍后重试。
|
||||
ERR_SVR_PROFILE_READ_PERMISSION_REQUIRED = 40007, ///< 没有资料字段的读权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_WRITE_PERMISSION_REQUIRED = 40008, ///< 没有资料字段的写权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_TAG_NOT_FOUND = 40009, ///< 资料字段的 Tag 不存在。
|
||||
ERR_SVR_PROFILE_SIZE_LIMIT = 40601, ///< 资料字段的 Value 长度超过500字节。
|
||||
ERR_SVR_PROFILE_VALUE_ERROR = 40605, ///< 标配资料字段的 Value 错误,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_INVALID_VALUE_FORMAT = 40610, ///< 资料字段的 Value 类型不匹配,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_SUBSCRIPTION_DISABLED = 72012, ///< 用户资料变更订阅能力未开启,请参见 [订阅非好友用户资料](https://cloud.tencent.com/document/product/269/75416#53edea52-35ef-4d82-aae9-941ba690f051),登录 [IM 控制台](https://console.tencentcloud.com/im) 开启该功能。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SVR_FRIENDSHIP_INVALID_PARAMETERS = 30001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID = 30002, ///< SDKAppID 不匹配。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND = 30003, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_FRIENDSHIP_ADMIN_REQUIRED = 30004, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_FRIENDSHIP_SENSITIVE_TEXT = 30005, ///< 关系链字段中包含敏感词。
|
||||
ERR_SVR_FRIENDSHIP_INTERNAL_ERROR = 30006, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_FRIENDSHIP_NET_TIMEOUT = 30007, ///< 网络超时,请稍后重试。
|
||||
ERR_SVR_FRIENDSHIP_WRITE_CONFLICT = 30008, ///< 并发写导致写冲突,建议使用批量方式。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_DENY = 30009, ///< 后台禁止该用户发起加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_COUNT_LIMIT = 30010, ///< 自己的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_GROUP_COUNT_LIMIT = 30011, ///< 分组已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_LIMIT = 30012, ///< 未决数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_BLACKLIST_LIMIT = 30013, ///< 黑名单数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_FRIEND_LIMIT = 30014, ///< 对方的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_ALREADY_FRIENDS = 30015, ///< 已经存在好友关系。
|
||||
ERR_SVR_FRIENDSHIP_IN_SELF_BLACKLIST = 30515, ///< 请求添加好友时,对方在自己的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_DENY_ANY = 30516, ///< 请求添加好友时,对方的加好友验证方式是不允许任何人添加自己为好友。
|
||||
ERR_SVR_FRIENDSHIP_IN_PEER_BLACKLIST = 30525, ///< 请求添加好友时,自己在对方的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_NEED_CONFIRM = 30539, ///< A 请求加 B 为好友,B 的加好友验证方式被设置为“AllowType_Type_NeedConfirm”,这时 A 与 B 之间只能形成未决关系,该返回码用于标识加未决成功,以便与加好友成功的返回码区分开,调用方可以捕捉该错误给用户一个合理的提示。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_SEC_RSTR = 30540, ///< 添加好友请求被安全策略打击,请勿频繁发起添加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_NOT_FOUND = 30614, ///< 请求的未决不存在。
|
||||
ERR_SVR_FRIENDSHIP_DEL_NONFRIEND = 31704, ///< 与请求删除的账号之间不存在好友关系。
|
||||
ERR_SVR_FRIENDSHIP_DEL_FRIEND_SEC_RSTR = 31707, ///< 删除好友请求被安全策略打击,请勿频繁发起删除好友请求。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND_EX = 31804, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_FRIENDSHIP_SELF_FOLLOWING_COUNT_EXCEEDS_LIMIT = 32100, ///< 自己的关注数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32101, ///< 对方的粉丝数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_SELF_MUTUAL_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32102, ///< 自己的互关数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_MUTUAL_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32103, ///< 对方的互关数量到达上限。
|
||||
|
||||
// 最近联系人错误码
|
||||
|
||||
ERR_SVR_CONV_ACCOUNT_NOT_FOUND = 50001, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_CONV_INVALID_PARAMETERS = 50002, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_CONV_ADMIN_REQUIRED = 50003, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_CONV_INTERNAL_ERROR = 50004, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_CONV_NET_TIMEOUT = 50005, ///< 网络超时,请稍后重试。
|
||||
|
||||
ERR_SVR_CONV_CONV_MARK_REQ_COUNT_EXCEED_LIMIT = 51006, ///< 一次标记、分组、设置自定义数据的会话数超过了上限(最大支持 100 个)
|
||||
ERR_SVR_CONV_CONV_MARK_OPERATE_FAILED = 51007, ///< Group 会话操作异常,Server 内部错误或 Group 已经解散
|
||||
ERR_SVR_CONV_CONV_MARK_TOTAL_COUNT_EXCEED_LIMIT = 51008, ///< 标记、分组、设置自定义数据的总会话数超过了上限(最大支持 1000 个)
|
||||
ERR_SVR_CONV_CONV_GROUP_NOT_EXIST = 51009, ///< 会话分组不存在
|
||||
ERR_SVR_CONV_CONV_GROUP_TOTAL_COUNT_EXCEED_LIMIT = 51010, ///< 会话分组数超过了上限(最大支持 20 个)
|
||||
ERR_SVR_CONV_CONV_GROUP_NAME_EXCEED_LENGTH = 51011, ///< 会话分组名字节数超过了上限(最大支持 32 字节)
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_SVR_MSG_PKG_PARSE_FAILED = 20001, ///< 请求包非法,请检查发送方和接收方账号是否存在。
|
||||
ERR_SVR_MSG_INTERNAL_AUTH_FAILED = 20002, ///< 内部鉴权失败。
|
||||
ERR_SVR_MSG_INVALID_ID = 20003, ///< Identifier 无效或者 Identifier 未导入云通信 IM。
|
||||
ERR_SVR_MSG_NET_ERROR = 20004, ///< 网络异常,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR1 = 20005, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_MSG_PUSH_DENY = 20006, ///< 触发发送单聊消息之前回调,App 后台返回禁止下发该消息。
|
||||
ERR_SVR_MSG_IN_PEER_BLACKLIST = 20007, ///< 发送单聊消息,被对方拉黑,禁止发送。
|
||||
ERR_SVR_MSG_BOTH_NOT_FRIEND = 20009, ///< 消息发送双方互相不是好友,禁止发送(配置单聊消息校验好友关系才会出现)。
|
||||
ERR_SVR_MSG_NOT_PEER_FRIEND = 20010, ///< 发送单聊消息,自己不是对方的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_NOT_SELF_FRIEND = 20011, ///< 发送单聊消息,对方不是自己的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_SHUTUP_DENY = 20012, ///< 因禁言,禁止发送消息。
|
||||
ERR_SVR_MSG_REVOKE_TIME_LIMIT = 20016, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_MSG_DEL_RAMBLE_INTERNAL_ERROR = 20018, ///< 删除漫游内部错误。
|
||||
ERR_SVR_MSG_EXTENSION_CONFLICT = 23001, ///< 消息扩展操作冲突。
|
||||
ERR_SVR_MSG_EXTENSION_NOT_EXIST = 23004, ///< 删除的消息扩展不存在。
|
||||
ERR_SVR_MSG_REACTION_COUNT_LIMIT = 23005, ///< 单条消息 Reaction 数量超过最大限制。
|
||||
ERR_SVR_MSG_REACTION_USER_COUNT_LIMIT = 23006, ///< 单个 Reaction 用户数量超过最大限制。
|
||||
ERR_SVR_MSG_REACTION_ALREADY_CONTAIN_USER = 23007, ///< Reaction 已经包含当前操作用户。
|
||||
ERR_SVR_MSG_REACTION_NOT_EXISTS = 23008, ///< Reaction 不存在。
|
||||
ERR_SVR_MSG_REACTION_NOT_CONTAIN_USER = 23009, ///< Reaction 不包含当前操作用户。
|
||||
ERR_SVR_MSG_JSON_PARSE_FAILED = 90001, ///< JSON 格式解析失败,请检查请求包是否符合 JSON 规范。
|
||||
ERR_SVR_MSG_INVALID_JSON_BODY_FORMAT = 90002, ///< JSON 格式请求包中 MsgBody 不符合消息格式描述,或者 MsgBody 不是 Array 类型,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_INVALID_TO_ACCOUNT = 90003, ///< JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_RAND = 90005, ///< JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_TIMESTAMP = 90006, ///< JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_BODY_NOT_ARRAY = 90007, ///< JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型
|
||||
ERR_SVR_MSG_ADMIN_REQUIRED = 90009, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_MSG_INVALID_JSON_FORMAT = 90010, ///< JSON 格式请求包不符合消息格式描述,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_COUNT_LIMIT = 90011, ///< 批量发消息目标账号超过500,请减少 To_Account 中目标账号数量。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_NOT_FOUND = 90012, ///< To_Account 没有注册或不存在,请确认 To_Account 是否导入云通信 IM 或者是否拼写错误。
|
||||
ERR_SVR_MSG_TIME_LIMIT = 90026, ///< 消息离线存储时间错误(最多不能超过7天)。
|
||||
ERR_SVR_MSG_INVALID_SYNCOTHERMACHINE = 90031, ///< JSON 格式请求包体中 SyncOtherMachine 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_MSGLIFETIME = 90044, ///< JSON 格式请求包体中 MsgLifeTime 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_ACCOUNT_NOT_FOUND = 90048, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR2 = 90994, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR3 = 90995, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR4 = 91000, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR5 = 90992, ///< 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务端是否正常向云通信 IM 后台服务端返回回调结果。
|
||||
ERR_SVR_MSG_BODY_SIZE_LIMIT = 93000, ///< JSON 数据包超长,消息包体请不要超过12k。
|
||||
ERR_SVR_MSG_LONGPOLLING_COUNT_LIMIT = 91101, ///< Web 端长轮询被踢(Web 端同时在线实例个数超出限制)。
|
||||
// 120001 - 130000, ///< 单聊第三方回调返回的自定义错误码。
|
||||
|
||||
// 群组错误码
|
||||
|
||||
ERR_SVR_GROUP_INTERNAL_ERROR = 10002, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_GROUP_API_NAME_ERROR = 10003, ///< 请求中的接口名称错误,请核对接口名称并重试。
|
||||
ERR_SVR_GROUP_INVALID_PARAMETERS = 10004, ///< 参数非法,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_GROUP_ACOUNT_COUNT_LIMIT = 10005, ///< 请求包体中携带的账号数量过多。
|
||||
ERR_SVR_GROUP_FREQ_LIMIT = 10006, ///< 操作频率限制,请尝试降低调用的频率。
|
||||
ERR_SVR_GROUP_PERMISSION_DENY = 10007, ///< 操作权限不足,比如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限。
|
||||
ERR_SVR_GROUP_INVALID_REQ = 10008, ///< 请求非法,可能是请求中携带的签名信息验证不正确,请再次尝试或 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系技术客服。
|
||||
ERR_SVR_GROUP_SUPER_NOT_ALLOW_QUIT = 10009, ///< 该群不允许群主主动退出。
|
||||
ERR_SVR_GROUP_NOT_FOUND = 10010, ///< 群组不存在,或者曾经存在过,但是目前已经被解散。
|
||||
ERR_SVR_GROUP_JSON_PARSE_FAILED = 10011, ///< 解析 JSON 包体失败,请检查包体的格式是否符合 JSON 格式。
|
||||
ERR_SVR_GROUP_INVALID_ID = 10012, ///< 发起操作的 Identifier 非法,请检查发起操作的用户 Identifier 是否填写正确。
|
||||
ERR_SVR_GROUP_ALLREADY_MEMBER = 10013, ///< 被邀请加入的用户已经是群成员。
|
||||
ERR_SVR_GROUP_FULL_MEMBER_COUNT = 10014, ///< 群已满员,无法将请求中的用户加入群组,如果是批量加人,可以尝试减少加入用户的数量。
|
||||
ERR_SVR_GROUP_INVALID_GROUPID = 10015, ///< 群组 ID 非法,请检查群组 ID 是否填写正确。
|
||||
ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY = 10016, ///< App 后台通过第三方回调拒绝本次操作。
|
||||
ERR_SVR_GROUP_SHUTUP_DENY = 10017, ///< 因被禁言而不能发送消息,请检查发送者是否被设置禁言。
|
||||
ERR_SVR_GROUP_RSP_SIZE_LIMIT = 10018, ///< 应答包长度超过最大包长(1MB),请求的内容过多,请尝试减少单次请求的数据量。
|
||||
ERR_SVR_GROUP_ACCOUNT_NOT_FOUND = 10019, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED = 10021, ///< 群组 ID 已被使用,请选择其他的群组 ID。
|
||||
ERR_SVR_GROUP_SEND_MSG_FREQ_LIMIT = 10023, ///< 发消息的频率超限,请延长两次发消息时间的间隔。
|
||||
ERR_SVR_GROUP_REQ_ALLREADY_BEEN_PROCESSED = 10024, ///< 此邀请或者申请请求已经被处理。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED_FOR_SUPER = 10025, ///< 群组 ID 已被使用,并且操作者为群主,可以直接使用。
|
||||
ERR_SVR_GROUP_SDKAPPID_DENY = 10026, ///< 该 SDKAppID 请求的命令字已被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_NOT_FOUND = 10030, ///< 请求撤回的消息不存在。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_TIME_LIMIT = 10031, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_DENY = 10032, ///< 请求撤回的消息不支持撤回操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REVOKE_MSG = 10033, ///< 群组类型不支持消息撤回操作。
|
||||
ERR_SVR_GROUP_REMOVE_MSG_DENY = 10034, ///< 该消息类型不支持删除操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REMOVE_MSG = 10035, ///< 音视频聊天室和在线成员广播大群不支持删除消息。
|
||||
ERR_SVR_GROUP_AVCHATROOM_COUNT_LIMIT = 10036, ///< 音视频聊天室创建数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买预付费套餐“IM音视频聊天室”。
|
||||
ERR_SVR_GROUP_COUNT_LIMIT = 10037, ///< 单个用户可创建和加入的群组数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“单人可创建与加入群组数”。
|
||||
ERR_SVR_GROUP_MEMBER_COUNT_LIMIT = 10038, ///< 群成员数量超过限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“扩展群人数上限”。
|
||||
ERR_SVR_GROUP_ATTRIBUTE_WRITE_CONFILCT = 10056, ///< 群属性写冲突,请先拉取最新的群属性后再尝试写操作,IMSDK 5.6 及其以上版本支持。
|
||||
ERR_SVR_GROUP_PINNED_MESSAGE_COUNT_LIMIT = 10070, ///< 置顶消息超出数量限制。
|
||||
ERR_SVR_GROUP_MESSAGE_ALREADY_PINNED = 10071, ///< 消息已经被置顶。
|
||||
ERR_SVR_COMMUNITY_GROUP_NOT_OPEN = 11000, ///< 社群功能未开通。
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (三)IM SDK V3 版本的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ERR_NO_SUCC_RESULT = 6003, ///< 批量操作无成功结果。
|
||||
ERR_TO_USER_INVALID = 6011, ///< 无效接收方。
|
||||
ERR_REQUEST_TIME_OUT = 6012, ///< 请求超时。
|
||||
ERR_INIT_CORE_FAIL = 6018, ///< INIT CORE 模块失败。
|
||||
ERR_EXPIRED_SESSION_NODE = 6020, ///< SessionNode 为 null 。
|
||||
ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, ///< 在登录完成前进行了登出(在登录时返回)。
|
||||
ERR_TLSSDK_NOT_INITIALIZED = 6024, ///< TLS SDK 未初始化。
|
||||
ERR_TLSSDK_USER_NOT_FOUND = 6025, ///< TLS SDK 没有找到相应的用户信息。
|
||||
ERR_BIND_FAIL_UNKNOWN = 6100, ///< QALSDK 未知原因BIND失败。
|
||||
ERR_BIND_FAIL_NO_SSOTICKET = 6101, ///< 缺少 SSO 票据。
|
||||
ERR_BIND_FAIL_REPEATD_BIND = 6102, ///< 重复 BIND。
|
||||
ERR_BIND_FAIL_TINYID_NULL = 6103, ///< TinyId 为空。
|
||||
ERR_BIND_FAIL_GUID_NULL = 6104, ///< GUID 为空。
|
||||
ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, ///< 解注册包失败。
|
||||
ERR_BIND_FAIL_REG_TIMEOUT = 6106, ///< 注册超时。
|
||||
ERR_BIND_FAIL_ISBINDING = 6107, ///< 正在 BIND 操作中。
|
||||
ERR_PACKET_FAIL_UNKNOWN = 6120, ///< 发包未知错误。
|
||||
ERR_PACKET_FAIL_REQ_NO_NET = 6121, ///< 发送请求包时没有网络。
|
||||
ERR_PACKET_FAIL_RESP_NO_NET = 6122, ///< 发送回复包时没有网络。
|
||||
ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, ///< 发送请求包时没有权限。
|
||||
ERR_PACKET_FAIL_SSO_ERR = 6124, ///< SSO 错误。
|
||||
ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, ///< 请求超时。
|
||||
ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, ///< 回复超时。
|
||||
ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, ///< 重发失败。
|
||||
ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, ///< 重发时没有真正发送。
|
||||
ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, ///< 保存被过滤。
|
||||
ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, ///< 发送过载。
|
||||
ERR_PACKET_FAIL_LOGIC_ERR = 6131, ///< 数据逻辑错误。
|
||||
ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, ///< proxy_manager 没有完成服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCING = 6151, ///< proxy_manager 正在进行服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, ///< proxy_manager 同步失败。
|
||||
ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, ///< proxy_manager 请求参数,在本地检查不合法。
|
||||
ERR_GROUP_INVALID_FIELD = 6160, ///< Group assistant 请求字段中包含非预设字段。
|
||||
ERR_GROUP_STORAGE_DISABLED = 6161, ///< Group assistant 群资料本地存储没有开启。
|
||||
ERR_LOADGRPINFO_FAILED = 6162, ///< 加载群资料失败。
|
||||
ERR_REQ_NO_NET_ON_REQ = 6200, ///< 请求的时候没有网络。
|
||||
ERR_REQ_NO_NET_ON_RSP = 6201, ///< 响应的时候没有网络。
|
||||
ERR_SERIVCE_NOT_READY = 6205, ///< QALSDK 服务未就绪。
|
||||
ERR_LOGIN_AUTH_FAILED = 6207, ///< 账号认证失败( TinyId 转换失败)。
|
||||
ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, ///< 在应用启动后没有尝试联网。
|
||||
ERR_REQ_FAILED = 6210, ///< QALSDK 执行失败。
|
||||
ERR_REQ_INVALID_REQ = 6211, ///< 请求非法,toMsgService 非法。
|
||||
ERR_REQ_OVERLOADED = 6212, ///< 请求队列满。
|
||||
ERR_REQ_KICK_OFF = 6213, ///< 已经被其他终端踢了。
|
||||
ERR_REQ_SERVICE_SUSPEND = 6214, ///< 服务被暂停。
|
||||
ERR_REQ_INVALID_SIGN = 6215, ///< SSO 签名错误。
|
||||
ERR_REQ_INVALID_COOKIE = 6216, ///< SSO cookie 无效。
|
||||
ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, ///< 登录时 TLS SDK 回包校验,包体长度错误。
|
||||
ERR_LOGIN_OPENMSG_TIMEOUT = 6218, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态超时。
|
||||
ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态时解析回包失败。
|
||||
ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, ///< 登录时 TLS SDK 解密失败。
|
||||
ERR_WIFI_NEED_AUTH = 6221, ///< WIFI 需要认证。
|
||||
ERR_USER_CANCELED = 6222, ///< 用户已取消。
|
||||
ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_LACK_UGC_EXT = 6224, ///< 缺少 UGC 扩展包。
|
||||
ERR_AUTOLOGIN_NEED_USERSIG = 6226, ///< 自动登录,本地票据过期,需要 UserSig 手动登录。
|
||||
ERR_QAL_NO_SHORT_CONN_AVAILABLE = 6300, ///< 没有可用的短连接 SSO 。
|
||||
ERR_REQ_CONTENT_ATTACK = 80101, ///< 消息内容安全打击。
|
||||
ERR_LOGIN_SIG_EXPIRE = 70101, ///< 登录返回,票据过期。
|
||||
ERR_SDK_HAD_INITIALIZED = 90101, ///< IM SDK 已经初始化无需重复初始化。
|
||||
ERR_OPENBDH_BASE = 115000, ///< OpenBDH 错误码基。
|
||||
ERR_REQUEST_NO_NET_ONREQ = 6250, ///< 请求时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_NO_NET_ONRSP = 6251, ///< 响应时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_FAILED = 6252, ///< QALSDK 执行失败。
|
||||
ERR_REQUEST_INVALID_REQ = 6253, ///< 请求非法,toMsgService 非法。
|
||||
ERR_REQUEST_OVERLOADED = 6254, ///< 请求队列満。
|
||||
ERR_REQUEST_KICK_OFF = 6255, ///< 已经被其他终端踢了。
|
||||
ERR_REQUEST_SERVICE_SUSPEND = 6256, ///< 服务被暂停。
|
||||
ERR_REQUEST_INVALID_SIGN = 6257, ///< SSO 签名错误。
|
||||
ERR_REQUEST_INVALID_COOKIE = 6258, ///< SSO cookie 无效。
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,111 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+APNS
|
||||
//
|
||||
// 消息推送接口,里面包含了消息的推送的开启逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
@class V2TIMAPNSConfig;
|
||||
V2TIM_EXPORT @protocol V2TIMAPNSListener;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (APNS)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 设置 APNS 推送
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 1.1 设置 APNS 监听
|
||||
*/
|
||||
- (void)setAPNSListener:(_Nullable id<V2TIMAPNSListener>)apnsListener NS_SWIFT_NAME(setAPNSListener(apnsListener:));
|
||||
|
||||
/**
|
||||
* 1.2 设置 APNS 推送
|
||||
*
|
||||
* config -> token:苹果后台对客户端的唯一标识,需要主动调用系统 API 获取,获取方法如下:
|
||||
*
|
||||
* <pre>
|
||||
* //获取 token 代码示例
|
||||
* if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
|
||||
* [[UIApplication sharedApplication] registerUserNotificationSettings:
|
||||
* [UIUserNotificationSettings settingsForTypes:
|
||||
* (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
|
||||
* [[UIApplication sharedApplication] registerForRemoteNotifications];
|
||||
* }
|
||||
* else{
|
||||
* [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
|
||||
* (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
|
||||
* }
|
||||
*
|
||||
* //收到 token 代码示例
|
||||
* -(void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
|
||||
* //回调的 deviceToken 就是需要的 token 信息
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* config -> busiId:推送证书 ID,上传推送证书(p.12)到 IM 控制台后生成。
|
||||
* 具体步骤请参考 [离线推送](https://cloud.tencent.com/document/product/269/9154)。
|
||||
*
|
||||
* @note
|
||||
* - 接口成功设置后会开启离线推送功能,如果您需要自定义推送的格式信息,请参考 V2TIMManager+Message.h 里面的 sendMessage 接口。
|
||||
* - 如果成功开启了离线推送,APP 进后台后,如果收到消息,会弹系统推送通知,APP 进前台后,如果收到消息,则不会弹系统推送通知。
|
||||
* - APP 进后台后 SDK 会默认设置应用角标为所有会话未读数之和,如果您需要自定义 APP 的未读数,请监听 V2TIMAPNSListener 回调设置。
|
||||
* - APP 在未初始化或未登录成功状态下 SDK 不会设置应用角标,这种情况下如需设置应用角标,请自行调用系统函数设置。
|
||||
* - 如果您想关闭离线推送,请把 config 设置为 nil。
|
||||
*/
|
||||
- (void)setAPNS:(V2TIMAPNSConfig* _Nullable)config succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setAPNS(config:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// APNS 监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMAPNSListener <NSObject>
|
||||
@optional
|
||||
/** 程序进后台后,自定义 APP 的未读数,如果不处理,APP 未读数默认为所有会话未读数之和
|
||||
* <pre>
|
||||
*
|
||||
* - (uint32_t)onSetAPPUnreadCount {
|
||||
* return 100; // 自定义未读数
|
||||
* }
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
- (uint32_t)onSetAPPUnreadCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// APNS 配置
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMAPNSConfig : NSObject
|
||||
|
||||
/**
|
||||
* APNS token
|
||||
*/
|
||||
@property(nonatomic,strong) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台证书 ID,接入 TPNS 时不需要填写
|
||||
*/
|
||||
@property(nonatomic,assign) int businessID;
|
||||
|
||||
/**
|
||||
* 是否接入配置 TPNS, token 是否是从 TPNS 获取
|
||||
* @note 该字段已废弃
|
||||
* - 如果您之前通过 TPNS 接入离线推送,并且在 TPNS 控制台配置推送信息,可以继续按照该方式接入推送功能;
|
||||
* - 如果您从未接入 TPNS,从未在 TPNS 控制台配置推送信息,IM 将不在支持 TPNS 方式接入离线推送功能, 推荐参照如下方式接入:
|
||||
* https://cloud.tencent.com/document/product/269/74284
|
||||
*/
|
||||
@property(nonatomic,assign) BOOL isTPNSToken __attribute__((deprecated("not supported anymore, please use APNs")));
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,482 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Community
|
||||
//
|
||||
// 社群接口,里面包含了创建话题、删除话题、修改话题、获取话题列表等逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMCommunityListener;
|
||||
@class V2TIMTopicInfo;
|
||||
@class V2TIMTopicInfoResult;
|
||||
@class V2TIMTopicOperationResult;
|
||||
@class V2TIMPermissionGroupInfo;
|
||||
@class V2TIMPermissionGroupOperationResult;
|
||||
@class V2TIMPermissionGroupInfoResult;
|
||||
@class V2TIMPermissionGroupMemberOperationResult;
|
||||
@class V2TIMPermissionGroupMemberInfoResult;
|
||||
@class V2TIMTopicPermissionOperationResult;
|
||||
@class V2TIMTopicPermissionResult;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Community)
|
||||
|
||||
/// 操作话题列表结果
|
||||
typedef void(^V2TIMTopicOperationResultSucc)(NSMutableArray<V2TIMTopicOperationResult *> *resultList);
|
||||
/// 获取话题列表结果
|
||||
typedef void(^V2TIMTopicInfoResultListSucc)(NSMutableArray<V2TIMTopicInfoResult *> *resultList);
|
||||
/// 创建话题成功回调
|
||||
typedef void (^V2TIMCreateTopicSucc)(NSString * _Nullable topicID);
|
||||
/// 创建权限组成功回调
|
||||
typedef void (^V2TIMCreatePermissionGroupSucc)(NSString * _Nullable permissionGroupID);
|
||||
/// 操作权限组结果
|
||||
typedef void (^V2TIMPermissionGroupOperationResultSucc)(NSMutableArray<V2TIMPermissionGroupOperationResult *> *resultList);
|
||||
/// 获取权限组列表结果
|
||||
typedef void (^V2TIMPermissionGroupInfoResultListSucc)(NSMutableArray<V2TIMPermissionGroupInfoResult *> *resultList);
|
||||
/// 操作权限组成员结果
|
||||
typedef void (^V2TIMPermissionGroupMemberOperationResultListSucc)(NSMutableArray<V2TIMPermissionGroupMemberOperationResult *> *resultList);
|
||||
/// 获取权限组成员结果
|
||||
typedef void (^V2TIMPermissionGroupMemberInfoResultListSucc)(NSString * _Nullable nextCursor, NSMutableArray<V2TIMGroupMemberFullInfo *> *resultList);
|
||||
/// 获取话题权限结果
|
||||
typedef void (^V2TIMTopicPermissionResultSucc)(NSMutableArray<V2TIMTopicPermissionResult *> *resultList);
|
||||
|
||||
/// 社群权限值
|
||||
typedef NS_ENUM(NSInteger, V2TIMCommunityPermissionValue) {
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO = 0x1, ///< 修改群资料权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER = 0x1 << 1, ///< 群成员管理权限,包含踢人,进群审核、修改成员资料等。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_INFO = 0x1 << 2, ///< 管理权限组资料权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。权限包含创建、修改、删除权限组;在权限组中添加、修改、删除话题权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_MEMBER = 0x1 << 3, ///< 权限组成员管理权限,包含邀请成员进权限组和把成员从权限组踢出等。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_TOPIC_IN_COMMUNITY = 0x1 << 4, ///< 话题管理权限,包含创建、修改、删除话题等。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MUTE_MEMBER = 0x1 << 5, ///< 对某群成员在社群下所有话题的禁言权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_SEND_MESSAGE = 0x1 << 6, ///< 群成员在社群下所有话题的发消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_AT_ALL = 0x1 << 7, ///< 在社群下所有话题发 at all 消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_GET_HISTORY_MESSAGE = 0x1 << 8, ///< 在社群下所有话题拉取入群前的历史消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE = 0x1 << 9, ///< 在社群下所有话题撤回他人消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_BAN_MEMBER = 0x1 << 10, ///< 封禁社群成员权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
};
|
||||
|
||||
/// 话题权限值
|
||||
typedef NS_ENUM(NSInteger, V2TIMTopicPermissionValue) {
|
||||
V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC = 0x1, ///< 管理当前话题的权限,包括修改当前话题的资料、删除当前话题。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC_PERMISSION = 0x1 << 1, ///< 在当前话题中管理话题权限,包括添加、修改、移除话题权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_MUTE_MEMBER = 0x1 << 2, ///< 在当前话题中禁言成员权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_SEND_MESSAGE = 0x1 << 3, ///< 在当前话题中发消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_GET_HISTORY_MESSAGE = 0x1 << 4, ///< 在当前话题中拉取入群前的历史消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE = 0x1 << 5, ///< 在当前话题中撤回他人消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_AT_ALL = 0x1 << 6, ///< 在当前话题中发消息时有 at all 权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 社群监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 添加社群监听器
|
||||
*/
|
||||
- (void)addCommunityListener:(id<V2TIMCommunityListener>)listener NS_SWIFT_NAME(addCommunityListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除社群监听器
|
||||
*/
|
||||
- (void)removeCommunityListener:(id<V2TIMCommunityListener>)listener NS_SWIFT_NAME(removeCommunityListener(listener:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 社群接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 2.1 创建支持话题的社群
|
||||
*/
|
||||
- (void)createCommunity:(V2TIMGroupInfo*)info memberList:(NSArray<V2TIMCreateGroupMemberInfo *>* _Nullable)memberList succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createCommunity(info:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.1 获取当前用户已经加入的支持话题的社群列表
|
||||
*/
|
||||
- (void)getJoinedCommunityList:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getJoinedCommunityList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 创建话题
|
||||
*
|
||||
* @param groupID 社群 ID,必须以 @TGS#_ 开头。
|
||||
*/
|
||||
- (void)createTopicInCommunity:(NSString *)groupID topicInfo:(V2TIMTopicInfo *)topicInfo succ:(V2TIMCreateTopicSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createTopicInCommunity(groupID:topicInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 删除话题
|
||||
*/
|
||||
- (void)deleteTopicFromCommunity:(NSString *)groupID topicIDList:(NSArray<NSString *>*)topicIDList succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteTopicFromCommunity(groupID:topicIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.4 修改话题信息
|
||||
*/
|
||||
- (void)setTopicInfo:(V2TIMTopicInfo *)topicInfo succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setTopicInfo(topicInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 获取话题列表。
|
||||
* @note: topicIDList 传空时,获取此社群下的所有话题列表
|
||||
*/
|
||||
- (void)getTopicInfoList:(NSString *)groupID topicIDList:(NSArray<NSString *>* _Nullable)topicIDList succ:(V2TIMTopicInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getTopicInfoList(groupID:topicIDList:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 3.1 创建社群权限组(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)createPermissionGroupInCommunity:(V2TIMPermissionGroupInfo *)permissionGroupInfo succ:(V2TIMCreatePermissionGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createPermissionGroupInCommunity(permissionGroupInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.2 删除社群权限组(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)deletePermissionGroupFromCommunity:(NSString *)groupID permissionGroupIDList:(NSArray<NSString *>*)permissionGroupIDList succ:(V2TIMPermissionGroupOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deletePermissionGroupFromCommunity(groupID:permissionGroupIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.3 修改社群权限组(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)modifyPermissionGroupInfoInCommunity:(V2TIMPermissionGroupInfo *)permissionGroupInfo succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(modifyPermissionGroupInfoInCommunity(permissionGroupInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 获取已加入的社群权限组列表(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)getJoinedPermissionGroupListInCommunity:(NSString *)groupID succ:(V2TIMPermissionGroupInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getJoinedPermissionGroupListInCommunity(groupID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 获取社群权限组列表(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
* - permissionGroupIDList 为空时,获取所有的权限组列表;不为空时,获取指定的权限组列表
|
||||
*/
|
||||
- (void)getPermissionGroupListInCommunity:(NSString *)groupID permissionGroupIDList:(NSArray<NSString *>* _Nullable)permissionGroupIDList succ:(V2TIMPermissionGroupInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getPermissionGroupListInCommunity(groupID:permissionGroupIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 向社群权限组添加成员(7.7 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)addCommunityMembersToPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID memberList:(NSArray<NSString *>*)memberList succ:(V2TIMPermissionGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addCommunityMembersToPermissionGroup(groupID:permissionGroupID:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.7 从社群权限组删除成员(7.8 及其以上版本支持)
|
||||
*/
|
||||
- (void)removeCommunityMembersFromPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID memberList:(NSArray<NSString *>*)memberList succ:(V2TIMPermissionGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(removeCommunityMembersFromPermissionGroup(groupID:permissionGroupID:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.8 获取社群权限组成员列表(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)getCommunityMemberListInPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID nextCursor:(NSString * _Nullable)nextCursor succ:(V2TIMPermissionGroupMemberInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getCommunityMemberListInPermissionGroup(groupID:permissionGroupID:nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.9 向权限组添加话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)addTopicPermissionToPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addTopicPermissionToPermissionGroup(groupID:permissionGroupID:topicPermissionMap:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.10 从权限组中删除话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)deleteTopicPermissionFromPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicIDList:(NSArray<NSString *>*)topicIDList succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteTopicPermissionFromPermissionGroup(groupID:permissionGroupID:topicIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.11 修改权限组中的话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)modifyTopicPermissionInPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(modifyTopicPermissionInPermissionGroup(groupID:permissionGroupID:topicPermissionMap:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.12 获取权限组中的话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)getTopicPermissionInPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicIDList:(NSArray<NSString *>*)topicIDList succ:(V2TIMTopicPermissionResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getTopicPermissionInPermissionGroup(groupID:permissionGroupID:topicIDList:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 社群回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 资料关系链回调
|
||||
V2TIM_EXPORT @protocol V2TIMCommunityListener <NSObject>
|
||||
@optional
|
||||
|
||||
/// 话题创建回调
|
||||
- (void)onCreateTopic:(NSString * _Nullable)groupID topicID:(NSString * _Nullable)topicID NS_SWIFT_NAME(onCreateTopic(groupID:topicID:));
|
||||
|
||||
/// 话题被删除回调
|
||||
- (void)onDeleteTopic:(NSString * _Nullable)groupID topicIDList:(NSArray<NSString *> *)topicIDList NS_SWIFT_NAME(onDeleteTopic(groupID:topicIDList:));
|
||||
|
||||
/// 话题更新回调
|
||||
- (void)onChangeTopicInfo:(NSString * _Nullable)groupID topicInfo:(V2TIMTopicInfo *)topicInfo NS_SWIFT_NAME(onChangeTopicInfo(groupID:topicInfo:));
|
||||
|
||||
/// 收到 RESTAPI 下发的话题自定义系统消息
|
||||
- (void)onReceiveTopicRESTCustomData:(NSString * _Nullable)topicID data:(NSData * _Nullable)data NS_SWIFT_NAME(onReceiveTopicRESTCustomData(topicID:data:));
|
||||
|
||||
/// 权限组创建通知
|
||||
- (void)onCreatePermissionGroup:(NSString * _Nullable)groupID permissionGroupInfo:(V2TIMPermissionGroupInfo *)permissionGroupInfo NS_SWIFT_NAME(onCreatePermissionGroup(groupID:permissionGroupInfo:));
|
||||
|
||||
/// 权限组删除通知
|
||||
- (void)onDeletePermissionGroup:(NSString * _Nullable)groupID permissionGroupIDList:(NSArray<NSString *> *)permissionGroupIDList NS_SWIFT_NAME(onDeletePermissionGroup(groupID:permissionGroupIDList:));
|
||||
|
||||
/// 权限组更新通知
|
||||
- (void)onChangePermissionGroupInfo:(NSString * _Nullable)groupID permissionGroupInfo:(V2TIMPermissionGroupInfo *)permissionGroupInfo NS_SWIFT_NAME(onChangePermissionGroupInfo(groupID:permissionGroupInfo:));
|
||||
|
||||
/// 添加成员到权限组通知
|
||||
- (void)onAddMembersToPermissionGroup:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID memberIDList:(NSArray<NSString *> *)memberIDList NS_SWIFT_NAME(onAddMembersToPermissionGroup(groupID:permissionGroupID:memberIDList:));
|
||||
|
||||
/// 从权限组中删除成员通知
|
||||
- (void)onRemoveMembersFromPermissionGroup:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID memberIDList:(NSArray<NSString *> *)memberIDList NS_SWIFT_NAME(onRemoveMembersFromPermissionGroup(groupID:permissionGroupID:memberIDList:));
|
||||
|
||||
/// 话题权限添加通知
|
||||
- (void)onAddTopicPermission:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap NS_SWIFT_NAME(onAddTopicPermission(groupID:permissionGroupID:topicPermissionMap:));
|
||||
|
||||
/// 话题权限删除通知
|
||||
- (void)onDeleteTopicPermission:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID topicIDList:(NSArray<NSString *>*)topicIDList NS_SWIFT_NAME(onDeleteTopicPermission(groupID:permissionGroupID:topicIDList:));
|
||||
|
||||
/// 话题权限修改通知
|
||||
- (void)onModifyTopicPermission:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap NS_SWIFT_NAME(onModifyTopicPermission(groupID:permissionGroupID:topicPermissionMap:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题基本资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicInfo : NSObject
|
||||
|
||||
/// 话题 ID,只能在创建话题或者修改话题信息的时候设置。组成方式为:社群 ID + @TOPIC#_xxx,例如社群 ID 为 @TGS#_123,则话题 ID 为 @TGS#_123@TOPIC#_xxx
|
||||
@property(nonatomic, strong, nullable) NSString *topicID;
|
||||
|
||||
/// 话题类型(默认为 Public 话题)(从 8.4 版本开始支持)
|
||||
/// "Public" :公开话题,社群内成员可以自由进出发言。
|
||||
/// "Private" :私密话题,有自己的成员列表(成员上限 10000 人),社群成员需要加入话题才能发言(私密话题需要购买企业版套餐包)。
|
||||
@property(nonatomic, strong, nullable) NSString *topicType;
|
||||
|
||||
/// 话题名称,最长 150 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *topicName;
|
||||
|
||||
/// 话题头像,最长 500 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *topicFaceURL;
|
||||
|
||||
/// 话题介绍,最长 400 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *introduction;
|
||||
|
||||
/// 话题公告,最长 400 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *notification;
|
||||
|
||||
/// 话题全员禁言
|
||||
@property(nonatomic, assign) BOOL isAllMuted;
|
||||
|
||||
/// 当前用户在话题中的禁言时间,单位:秒
|
||||
@property(nonatomic, assign, readonly) uint32_t selfMuteTime;
|
||||
|
||||
/// 话题自定义字段
|
||||
@property(nonatomic, strong, nullable) NSString *customString;
|
||||
|
||||
/// 话题消息接收选项,修改话题消息接收选项请调用 setGroupReceiveMessageOpt 接口
|
||||
@property(nonatomic, assign, readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/// 话题草稿
|
||||
@property(nonatomic, strong, nullable) NSString *draftText;
|
||||
|
||||
/// 话题消息未读数量
|
||||
@property(nonatomic, assign, readonly) uint64_t unreadCount;
|
||||
|
||||
/// 话题 lastMessage
|
||||
@property(nonatomic,strong,readonly, nullable) V2TIMMessage *lastMessage;
|
||||
|
||||
/// 话题已读消息的 sequence,从 7.8 版本开始支持
|
||||
@property(nonatomic, assign, readonly) uint64_t readSequence;
|
||||
|
||||
/// 话题 at 信息列表
|
||||
@property(nonatomic, strong, readonly, nullable) NSArray<V2TIMGroupAtInfo *> *groupAtInfolist;
|
||||
|
||||
/// 话题创建时间,单位:秒
|
||||
@property(nonatomic, assign, readonly) uint32_t createTime;
|
||||
|
||||
/// 申请加入话题是否需要管理员审批(私密话题有效,默认不需要审批,可以自由加入)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, assign) V2TIMGroupAddOpt topicAddOpt;
|
||||
|
||||
/// 邀请加入话题是否需要管理员审批(私密话题有效,默认不需要审批,可以自由加入)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, assign) V2TIMGroupAddOpt topicApproveOpt;
|
||||
|
||||
/// 话题默认群成员(私密话题有效,最大支持 100 个群成员,只能在创建话题的时候设置)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, strong, nullable) NSArray<V2TIMCreateGroupMemberInfo *> *memberList;
|
||||
|
||||
/// 话题成员的最大个数(私密话题有效,最大支持 10000,默认 10000,只能在创建话题的时候设置)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, assign) uint32_t memberMaxCount;
|
||||
|
||||
/// 话题默认权限,7.8 版本开始支持
|
||||
/// 群成员在没有加入任何权限组时的默认权限,仅在社群资料 V2TIMGroupInfo 中 enablePermissionGroup = true 打开权限组之后生效
|
||||
@property(nonatomic, assign) uint64_t defaultPermissions;
|
||||
|
||||
/// 登录用户在话题中的消息接收选项是否继承社群。该功能仅增强版 SDK 8.1 及以上版本支持。
|
||||
- (BOOL)isInheritMessageReceiveOptionFromCommunity;
|
||||
|
||||
/**
|
||||
* 设置登录用户在话题中的消息接收选项是否继承社群。该功能仅增强版 SDK 8.1 及以上版本支持。
|
||||
*/
|
||||
- (void)setInheritMessageReceiveOptionFromCommunity:(BOOL)isInherit succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题处理结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicOperationResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic, assign) int errorCode;
|
||||
|
||||
/// 错误信息
|
||||
@property(nonatomic, strong, nullable) NSString *errorMsg;
|
||||
|
||||
/// 话题 ID
|
||||
@property(nonatomic, strong, nullable) NSString *topicID;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic, assign) int errorCode;
|
||||
|
||||
/// 错误信息
|
||||
@property(nonatomic, strong, nullable) NSString *errorMsg;
|
||||
|
||||
/// 话题资料
|
||||
@property(nonatomic, strong) V2TIMTopicInfo *topicInfo;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组信息
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupInfo : NSObject
|
||||
|
||||
/// 群 ID
|
||||
@property(nonatomic, strong, nullable) NSString *groupID;
|
||||
|
||||
/// 权限组 ID
|
||||
@property(nonatomic, strong, nullable) NSString *permissionGroupID;
|
||||
|
||||
/// 权限组名称
|
||||
@property(nonatomic, strong, nullable) NSString *permissionGroupName;
|
||||
|
||||
/// 群权限
|
||||
@property(nonatomic, assign) uint64_t groupPermission;
|
||||
|
||||
/// 自定义数据
|
||||
@property(nonatomic, strong, nullable) NSString *customData;
|
||||
|
||||
/// 成员人数
|
||||
@property(nonatomic, assign, readonly) uint64_t memberCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组信息获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong) V2TIMPermissionGroupInfo *info;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组处理结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupOperationResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong,nullable) NSString *permissionGroupID;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组成员处理结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupMemberOperationResult : NSObject
|
||||
|
||||
/// 成员 userID
|
||||
@property(nonatomic,strong,nullable) NSString *memberID;
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题权限获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicPermissionResult : NSObject
|
||||
|
||||
/// 话题
|
||||
@property(nonatomic,strong,nullable) NSString *topicID;
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 话题权限
|
||||
@property(nonatomic,assign) uint64_t topicPermission;
|
||||
|
||||
/// 社群 ID
|
||||
@property(nonatomic,strong,nullable) NSString *groupID;
|
||||
|
||||
/// 权限组 ID
|
||||
@property(nonatomic,strong,nullable) NSString *permissionGroupID;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,505 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Conversation
|
||||
//
|
||||
// 会话接口,里面包含了会话的获取,删除,更新的逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMConversationListener;
|
||||
@class V2TIMConversation;
|
||||
@class V2TIMConversationListFilter;
|
||||
@class V2TIMConversationOperationResult;
|
||||
@class V2TIMGroupAtInfo;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 消息会话相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Conversation)
|
||||
|
||||
/// 获取会话列表成功的回调,nextSeq:下一次分页拉取的游标 isFinished:会话列表是否已经拉取完毕
|
||||
typedef void(^V2TIMConversationResultSucc)(NSArray<V2TIMConversation *>* list, uint64_t nextSeq, BOOL isFinished);
|
||||
/// 获取单个会话成功回调
|
||||
typedef void(^V2TIMConversationSucc)(V2TIMConversation *conv);
|
||||
/// 搜索会话列表成功回调
|
||||
typedef void(^V2TIMConversationListSucc)(NSArray<V2TIMConversation *>*list);
|
||||
/// 获取会话总未读数回调
|
||||
typedef void(^V2TIMTotalUnreadMessageCountSucc)(UInt64 totalUnreadCount);
|
||||
/// 获取会话分组列表成功回调
|
||||
typedef void (^V2TIMConversationGroupListSucc)(NSArray<NSString *> * groupList);
|
||||
/// 会话操作成功回调
|
||||
typedef void (^V2TIMConversationOperationResultSucc)(NSArray<V2TIMConversationOperationResult *> *result);
|
||||
|
||||
/// 会话类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMConversationType) {
|
||||
V2TIM_UNKNOWN = 0, ///< 未知
|
||||
V2TIM_C2C = 1, ///< 单聊
|
||||
V2TIM_GROUP = 2, ///< 群聊
|
||||
};
|
||||
|
||||
/// @ 类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupAtType) {
|
||||
V2TIM_AT_ME = 1, ///< @ 我
|
||||
V2TIM_AT_ALL = 2, ///< @ 群里所有人
|
||||
V2TIM_AT_ALL_AT_ME = 3, ///< @ 群里所有人并且单独 @ 我
|
||||
};
|
||||
|
||||
/// 会话标记类型
|
||||
typedef NS_ENUM(NSUInteger, V2TIMConversationMarkType) {
|
||||
V2TIM_CONVERSATION_MARK_TYPE_STAR = 0x1, ///< 会话标星
|
||||
V2TIM_CONVERSATION_MARK_TYPE_UNREAD = 0x1 << 1, ///< 会话标记未读(重要会话)
|
||||
V2TIM_CONVERSATION_MARK_TYPE_FOLD = 0x1 << 2, ///< 会话折叠
|
||||
V2TIM_CONVERSATION_MARK_TYPE_HIDE = 0x1 << 3, ///< 会话隐藏
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话基础接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 1.1 添加会话监听器
|
||||
*/
|
||||
- (void)addConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(addConversationListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除会话监听器
|
||||
*/
|
||||
- (void)removeConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(removeConversationListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.3 获取会话列表
|
||||
*
|
||||
* - 一个会话对应一个聊天窗口,比如跟一个好友的 1v1 聊天,或者一个聊天群,都是一个会话。
|
||||
* - 由于历史的会话数量可能很多,所以该接口希望您采用分页查询的方式进行调用,每次分页拉取的个数建议为 100 个。
|
||||
* - 该接口拉取的是本地缓存的会话,如果服务器会话有更新,SDK 内部会自动同步,然后在 @ref V2TIMConversationListener 回调告知客户。
|
||||
* - 如果会话全部拉取完毕,成功回调里面 V2TIMConversationResult 中的 isFinished 获取字段值为 YES。
|
||||
*
|
||||
* @note 会话排序规则
|
||||
* - 5.5.892 及以后版本, 该接口获取的会话列表默认已经按照会话 orderKey 做了排序,orderKey 值越大,代表该会话排序越靠前。
|
||||
* - 5.5.892 以前版本,该接口获取的会话列表默认已经按照会话 lastMessage -> timestamp 做了排序,timestamp 越大,会话越靠前。
|
||||
*
|
||||
* @param nextSeq 分页拉取的游标,第一次默认取传 0,后续分页拉传上一次分页拉取成功回调里的 nextSeq
|
||||
* @param count 分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话
|
||||
*/
|
||||
- (void)getConversationList:(uint64_t)nextSeq count:(int)count succ:(V2TIMConversationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationList(nextSeq:count:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.4 获取单个会话
|
||||
*
|
||||
* @param conversationID 会话唯一 ID, C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)getConversation:(NSString *)conversationID succ:(V2TIMConversationSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversation(conversationID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.5 获取指定会话列表
|
||||
*
|
||||
* @param conversationIDList 会话唯一 ID 列表,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)getConversationList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationList(conversationIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.6 获取会话列表高级接口(从 6.5 版本开始支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
* @param nextSeq 分页拉取的游标
|
||||
* @param count 分页拉取的个数
|
||||
*
|
||||
*/
|
||||
- (void)getConversationListByFilter:(V2TIMConversationListFilter *)filter nextSeq:(uint64_t)seq count:(uint32_t)count succ:(V2TIMConversationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationListByFilter(filter:nextSeq:count:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.7 删除会话以及该会话中的历史消息
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*
|
||||
* @note
|
||||
* - 该会话以及会话中的历史消息,会被 SDK 从本地和服务端一同删除掉,并且不可恢复。
|
||||
*/
|
||||
- (void)deleteConversation:(NSString *)conversationID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteConversation(conversation:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.8 删除会话列表(7.1 及以上版本支持)
|
||||
*
|
||||
* @param conversationIDList 会话唯一 ID 列表,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param clearMessage 是否删除会话中的消息;设置为 NO 时,保留会话消息;设置为 YES 时,本地和服务器的消息会一起删除,并且不可恢复
|
||||
*
|
||||
* @note 每次最多支持删除 100 个会话
|
||||
*/
|
||||
- (void)deleteConversationList:(NSArray<NSString *> *)conversationIDList clearMessage:(BOOL)clearMessage succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteConversationList(conversationIDList:clearMessage:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.9 设置会话草稿
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*
|
||||
* 只在本地保存,不会存储 Server,不能多端同步,程序卸载重装会失效。
|
||||
*/
|
||||
- (void)setConversationDraft:(NSString *)conversationID draftText:(NSString * _Nullable)draftText succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setConversationDraft(conversationID:draftText:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.10 设置会话自定义数据(从 6.5 版本开始支持)
|
||||
*
|
||||
* @param customData 自定义数据,最大支持 256 bytes
|
||||
*/
|
||||
- (void)setConversationCustomData:(NSArray<NSString *> *)conversationIDList customData:(NSData * _Nullable)customData succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(setConversationCustomData(conversationIDList:customData:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.11 设置会话置顶(5.3.425 及以上版本支持)
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param isPinned 是否置顶
|
||||
*/
|
||||
- (void)pinConversation:(NSString *)conversationID isPinned:(BOOL)isPinned succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(pinConversation(conversationID:isPinned:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.12 标记会话(从 6.5 版本开始支持,需要您购买旗舰版套餐)
|
||||
*
|
||||
* @param conversationIDList 会话列表
|
||||
* @param markType 会话标记类型,取值详见 @V2TIMConversationMarkType。
|
||||
* @param enableMark YES:设置标记 NO:取消标记
|
||||
*
|
||||
* 如果已有标记不能满足您的需求,您可以自定义扩展标记,扩展标记需要满足以下两个条件:
|
||||
* 1、扩展标记值不能和 V2TIMConversationMarkType 已有的标记值冲突
|
||||
* 2、扩展标记值必须是 0x1LL << n 的位移值(32 <= n < 64,即 n 必须大于等于 32 并且小于 64),比如扩展标记值 0x1LL << 32 表示 "iPhone 在线"
|
||||
*
|
||||
* @note: 扩展标记值不能设置为 0x1 << 32,要设置为 0x1LL << 32,明确告诉编译器是 64 位的整型常量。
|
||||
*
|
||||
*/
|
||||
- (void)markConversation:(NSArray<NSString *> *)conversationIDList markType:(NSNumber *)markType enableMark:(BOOL)enableMark succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(markConversation(conversationIDList:markType:enableMark:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.13 获取所有会话的未读消息总数(5.3.425 及以上版本支持)
|
||||
* @note
|
||||
* - 调用该接口以后,任意会话的未读数发生变化时,SDK 都会给您抛 onTotalUnreadMessageCountChanged 回调。
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)getTotalUnreadMessageCount:(V2TIMTotalUnreadMessageCountSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getTotalUnreadMessageCount(succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.14 获取根据 filter 过滤的会话未读总数(7.0 及以上版本支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
*
|
||||
* @note
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)getUnreadMessageCountByFilter:(V2TIMConversationListFilter *)filter succ:(V2TIMTotalUnreadMessageCountSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getUnreadMessageCountByFilter(filter:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.15 注册监听指定 filter 的会话未读总数变化(7.0 及以上版本支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
*
|
||||
* @note
|
||||
* - 当您调用这个接口以后,该 filter 下的未读数发生变化时,SDK 会给您抛 onUnreadMessageCountChangedByFilter 回调。
|
||||
*/
|
||||
- (void)subscribeUnreadMessageCountByFilter:(V2TIMConversationListFilter *)filter NS_SWIFT_NAME(subscribeUnreadMessageCountByFilter(filter:));
|
||||
|
||||
/**
|
||||
* 1.16 取消监听指定 filter 的会话未读总数变化(7.0 及以上版本支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
*
|
||||
*/
|
||||
- (void)unsubscribeUnreadMessageCountByFilter:(V2TIMConversationListFilter *)filter NS_SWIFT_NAME(unsubscribeUnreadMessageCountByFilter(filter:));
|
||||
|
||||
/**
|
||||
* 1.17 清理会话的未读消息计数(7.1 及以上版本支持)
|
||||
*
|
||||
* @param conversationID 会话唯一 ID, C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param cleanTimestamp 清理时间戳,单位为秒,仅对单聊会话生效,指定清理哪一个 timestamp 之前的未读消息计数;当传入为 0 时,对应会话所有的未读消息将被清理,会话的未读数会清 0
|
||||
* @param cleanSequence 清理 sequence,仅对群聊会话生效,指定清理哪一个 sequence 之前的未读消息计数;当传入为 0 时,对应会话所有的未读消息将被清理,会话的未读数会清 0
|
||||
*
|
||||
* @note
|
||||
* - 当您想清理所有单聊会话的未读消息计数,conversationID 请传入 @"c2c",即不指定具体的 userID;
|
||||
* - 当您想清理所有群聊会话的未读消息计数,conversationID 请传入 @"group",即不指定具体的 groupID;
|
||||
* - 当您想清理所有会话的未读消息计数,conversationID 请传入 @“” 或者 nil;
|
||||
* - 该接口调用成功后,SDK 会通过 onConversationChanged 回调将对应会话的最新未读数通知给您。
|
||||
*/
|
||||
- (void)cleanConversationUnreadMessageCount:(NSString * _Nullable)conversationID cleanTimestamp:(uint64_t)cleanTimestamp cleanSequence:(uint64_t)cleanSequence succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(cleanConversationUnreadMessageCount(conversationID:cleanTimestamp:cleanSequence:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.18 设置会话监听器(待废弃接口,请使用 addConversationListener 和 removeConversationListener 接口)
|
||||
*/
|
||||
- (void)setConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(setConversationListener(listener:)) __attribute__((deprecated("use addConversationListener: instead")));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话分组相关接口 (从 6.5 版本开始支持,需要您购买旗舰版套餐)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 2.1 创建会话分组
|
||||
*
|
||||
* @param groupName 分组名(必填参数,长度要 > 0,最大支持 32 bytes)
|
||||
* @param conversationIDList 会话 ID 列表(必填参数,不能为空)
|
||||
*
|
||||
* @note 会话分组最大支持 20 个,不再使用的分组请及时删除。
|
||||
*/
|
||||
- (void)createConversationGroup:(NSString *)groupName conversationIDList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createConversationGroup(groupName:conversationIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 获取会话分组列表
|
||||
*
|
||||
* @note 该接口获取的是本地缓存的会话分组,建议在 onSyncServerFinish 之后调用。
|
||||
*/
|
||||
- (void)getConversationGroupList:(V2TIMConversationGroupListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationGroupList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 删除会话分组
|
||||
*/
|
||||
- (void)deleteConversationGroup:(NSString *)groupName succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteConversationGroup(groupName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.4 重命名会话分组
|
||||
*/
|
||||
- (void)renameConversationGroup:(NSString*)oldName newName:(NSString*)newName succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(renameConversationGroup(oldName:newName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 添加会话到一个会话分组
|
||||
*/
|
||||
- (void)addConversationsToGroup:(NSString *)groupName conversationIDList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addConversationsToGroup(groupName:conversationIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.6 从一个会话分组中删除会话
|
||||
*/
|
||||
- (void)deleteConversationsFromGroup:(NSString *)groupName conversationIDList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteConversationsFromGroup(groupName:conversationIDList:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话变更监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMConversationListener <NSObject>
|
||||
@optional
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 会话基础通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 同步服务器会话开始,SDK 会在登录成功或者断网重连后自动同步服务器会话,您可以监听这个事件做一些 UI 进度展示操作。
|
||||
*/
|
||||
- (void)onSyncServerStart;
|
||||
|
||||
/**
|
||||
* 同步服务器会话完成,如果会话有变更,会通过 onNewConversation | onConversationChanged 回调告知客户
|
||||
*/
|
||||
- (void)onSyncServerFinish;
|
||||
|
||||
/**
|
||||
* 同步服务器会话失败
|
||||
*/
|
||||
- (void)onSyncServerFailed;
|
||||
|
||||
/**
|
||||
* 有新的会话(比如收到一个新同事发来的单聊消息、或者被拉入了一个新的群组中),可以根据会话的 orderKey 重新对会话列表做排序。
|
||||
*/
|
||||
- (void)onNewConversation:(NSArray<V2TIMConversation*> *) conversationList NS_SWIFT_NAME(onNewConversation(conversationList:));
|
||||
|
||||
/**
|
||||
* 某些会话的关键信息发生变化(未读计数发生变化、最后一条消息被更新等等),可以根据会话的 orderKey 重新对会话列表做排序。
|
||||
*/
|
||||
- (void)onConversationChanged:(NSArray<V2TIMConversation*> *) conversationList NS_SWIFT_NAME(onConversationChanged(conversationList:));
|
||||
|
||||
/**
|
||||
* 会话被删除的通知(7.2 及以上版本支持)
|
||||
*
|
||||
* @note
|
||||
* conversationIDList 表示被删除的会话唯一 ID 列表。C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)onConversationDeleted:(NSArray<NSString *> *)conversationIDList NS_SWIFT_NAME(onConversationDeleted(conversationIDList:));
|
||||
|
||||
/**
|
||||
* 全部会话未读总数变更的通知(5.3.425 及以上版本支持)
|
||||
* @note
|
||||
* - 当您调用 getTotalUnreadMessageCount 获取全部会话未读总数以后,任意会话的未读数发生变化时,SDK 都会通过该回调把最新的未读总数通知给您。
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)onTotalUnreadMessageCountChanged:(UInt64)totalUnreadCount NS_SWIFT_NAME(onTotalUnreadMessageCountChanged(totalUnreadCount:));
|
||||
|
||||
/**
|
||||
* 根据 filter 过滤的未读消息总数变更通知(7.0 及以上版本支持)
|
||||
* @note
|
||||
* - 您可以调用 subscribeUnreadMessageCountByFilter 注册监听指定 filter 下的未读总数变化,SDK 通过这个回调把最新的未读总数通知给您。
|
||||
* - 您可以注册监听多个不同 filter 下的未读总数变化,这个回调的 filter 参数就是注册监听时指定的 filter,该 filter 携带了 conversationType、conversationGroup 和 markType 三个字段,通过判断这三字段是不是都相同,来区分出不同的 filter。
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)onUnreadMessageCountChangedByFilter:(V2TIMConversationListFilter *)filter totalUnreadCount:(UInt64)totalUnreadCount NS_SWIFT_NAME(onUnreadMessageCountChangedByFilter(filter:totalUnreadCount:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 会话分组相关通知(从 6.5 版本开始支持)
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 会话分组被创建
|
||||
*/
|
||||
- (void)onConversationGroupCreated:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList NS_SWIFT_NAME(onConversationGroupCreated(groupName:conversationList:));
|
||||
|
||||
/**
|
||||
* 会话分组被删除
|
||||
*/
|
||||
- (void)onConversationGroupDeleted:(NSString * _Nullable)groupName NS_SWIFT_NAME(onConversationGroupDeleted(groupName:));
|
||||
|
||||
/**
|
||||
* 会话分组名变更
|
||||
*/
|
||||
- (void)onConversationGroupNameChanged:(NSString * _Nullable)oldName newName:(NSString * _Nullable)newName NS_SWIFT_NAME(onConversationGroupNameChanged(oldName:newName:));
|
||||
|
||||
/**
|
||||
* 会话分组新增会话
|
||||
*/
|
||||
- (void)onConversationsAddedToGroup:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList NS_SWIFT_NAME(onConversationsAddedToGroup(groupName:conversationList:));
|
||||
|
||||
/**
|
||||
* 会话分组删除会话
|
||||
* @note
|
||||
* - reason 表示会话从所在分组删除的原因,其取值有:
|
||||
* - 当 reason 为 0 时,表示由用户主动调用 deleteConversationsFromGroup 触发
|
||||
* - 当 reason 为 1 时,表示添加到分组的会话数量超过 1000,最早添加进分组的会话被淘汰
|
||||
*/
|
||||
- (void)onConversationsDeletedFromGroup:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList reason:(uint32_t)reason NS_SWIFT_NAME(onConversationsDeletedFromGroup(groupName:conversationList:reason:));
|
||||
|
||||
/**
|
||||
* 会话分组删除会话(待废弃接口,请使用 onConversationsDeletedFromGroup:conversationList:reason: 接口)
|
||||
*/
|
||||
- (void)onConversationsDeletedFromGroup:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList NS_SWIFT_NAME(onConversationsDeletedFromGroup(groupName:conversationList:)) __attribute__((deprecated("use onConversationsDeletedFromGroup:conversationList:reason: instead")));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话对象 V2TIMConversation
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 会话对象
|
||||
V2TIM_EXPORT @interface V2TIMConversation : NSObject
|
||||
|
||||
/// 会话类型
|
||||
@property(nonatomic,assign,readonly) V2TIMConversationType type;
|
||||
|
||||
/// 会话唯一 ID,如果是 C2C 单聊,组成方式为 c2c_userID,如果是群聊,组成方式为 group_groupID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *conversationID;
|
||||
|
||||
/// 如果会话类型为 C2C 单聊,userID 会存储对方的用户ID,否则为 nil
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *userID;
|
||||
|
||||
/// 如果会话类型为群聊,groupID 会存储当前群的群 ID,否则为 nil
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *groupID;
|
||||
|
||||
/// 如果会话类型为群聊,groupType 为当前群类型,否则为 nil
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *groupType;
|
||||
|
||||
/// 会话展示名称(群组:群名称 >> 群 ID;C2C:对方好友备注 >> 对方昵称 >> 对方的 userID)
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *showName;
|
||||
|
||||
/// 会话展示头像(群组:群头像;C2C:对方头像)
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *faceUrl;
|
||||
|
||||
/// 会话未读消息数量,直播群(AVChatRoom)不支持未读计数,默认为 0
|
||||
@property(nonatomic,assign,readonly) int unreadCount;
|
||||
|
||||
/// 消息接收选项(接收 | 接收但不提醒 | 不接收)
|
||||
@property(nonatomic,assign,readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/**
|
||||
* 会话最后一条消息
|
||||
* @note 5.5.892 以前版本,请您使用 lastMessage -> timestamp 对会话做排序,timestamp 越大,会话越靠前
|
||||
*/
|
||||
@property(nonatomic,strong,readonly,nullable) V2TIMMessage *lastMessage;
|
||||
|
||||
/// 群会话 @ 信息列表,用于展示 "有人@我" 或 "@所有人" 这两种提醒状态
|
||||
@property(nonatomic,strong,readonly,nullable) NSArray<V2TIMGroupAtInfo *> *groupAtInfolist;
|
||||
|
||||
/// 草稿信息,设置草稿信息请调用 setConversationDraft() 接口
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *draftText;
|
||||
|
||||
/// 上次设置草稿时的 UTC 时间戳
|
||||
@property(nonatomic,strong,readonly,nullable) NSDate *draftTimestamp;
|
||||
|
||||
/// 是否置顶
|
||||
@property(nonatomic,assign,readonly) BOOL isPinned;
|
||||
|
||||
/**
|
||||
* 排序字段(5.5.892 及以后版本支持)
|
||||
* @note
|
||||
* - 排序字段 orderKey 是按照会话的激活时间线性递增的一个数字(注意:不是时间戳,因为同一时刻可能会有多个会话被同时激活)
|
||||
* - 5.5.892 及其以后版本,推荐您使用该字段对所有会话进行排序,orderKey 值越大,代表该会话排序越靠前
|
||||
* - 当您 “清空会话所有消息” 或者 “逐个删除会话的所有消息” 之后,会话的 lastMessage 变为空,但会话的 orderKey 不会改变;如果想保持会话的排序位置不变,可以使用该字段对所有会话进行排序
|
||||
*/
|
||||
@property(nonatomic,assign,readonly) NSUInteger orderKey;
|
||||
|
||||
/// 会话标记列表,取值详见 @V2TIMConversationMarkType(从 6.5 版本开始支持)
|
||||
@property(nonatomic,strong,readonly,nullable) NSArray<NSNumber *> * markList;
|
||||
|
||||
/// 会话自定义数据(从 6.5 版本开始支持)
|
||||
@property(nonatomic,strong,readonly,nullable) NSData *customData;
|
||||
|
||||
/// 会话所属分组列表(从 6.5 版本开始支持)
|
||||
@property(nonatomic,strong,readonly,nullable) NSArray<NSString *> *conversationGroupList;
|
||||
|
||||
/// 最新已读消息的 UTC 时间戳,仅对单聊会话生效(从 7.1 版本开始支持)
|
||||
@property(nonatomic,assign,readonly) NSUInteger c2cReadTimestamp;
|
||||
|
||||
/// 已读消息的 sequence,仅对群聊会话生效(从 7.1 版本开始支持)
|
||||
@property(nonatomic,assign,readonly) NSUInteger groupReadSequence;
|
||||
|
||||
@end
|
||||
|
||||
/// 会话 filter
|
||||
V2TIM_EXPORT @interface V2TIMConversationListFilter : NSObject
|
||||
|
||||
/// C2C 或群会话(填 0 代表不过滤此项)
|
||||
@property(nonatomic,assign) V2TIMConversationType type;
|
||||
|
||||
/// 会话分组名称
|
||||
/// 不设置表示不过滤此项,设置为 @"" 代表过滤不属于任何分组的会话
|
||||
@property(nonatomic,strong,nullable) NSString *conversationGroup;
|
||||
|
||||
/// 标记类型,取值详见 @V2TIMConversationMarkType
|
||||
/// 不设置表示不过滤此项,设置为 0 代表过滤不含任何标记的会话
|
||||
@property(nonatomic,assign) NSUInteger markType;
|
||||
|
||||
/// 会话未读数
|
||||
/// 不设置表示不过滤此项,设置为 YES 代表过滤含未读数的会话;设置为 NO 代表过滤不含未读数的会话
|
||||
@property(nonatomic,assign) BOOL hasUnreadCount;
|
||||
|
||||
/// 会话 @ 信息
|
||||
/// 不设置表示不过滤此项,设置为 YES 代表过滤含群 @ 消息的会话;设置为 NO 代表过滤不含群 @ 消息的会话
|
||||
@property(nonatomic,assign) BOOL hasGroupAtInfo;
|
||||
@end
|
||||
|
||||
/// @ 信息
|
||||
V2TIM_EXPORT @interface V2TIMGroupAtInfo : NSObject
|
||||
/// @ 消息序列号,即带有 “@我” 或者 “@所有人” 标记的消息的序列号
|
||||
@property(nonatomic,assign,readonly) uint64_t seq;
|
||||
|
||||
/// @ 提醒类型,分成 “@我” 、“@所有人” 以及 “@我并@所有人” 三类
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupAtType atType;
|
||||
|
||||
@end
|
||||
|
||||
/// 会话操作结果
|
||||
V2TIM_EXPORT @interface V2TIMConversationOperationResult : NSObject
|
||||
|
||||
/// 会话 ID
|
||||
@property(nonatomic,strong,nullable) NSString* conversationID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,838 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Friendship
|
||||
//
|
||||
// 关系链接口,里面包含了好友的添加、删除,黑名单的添加、删除等逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMFriendshipListener;
|
||||
@class V2TIMFriendOperationResult;
|
||||
@class V2TIMFriendInfoResult;
|
||||
@class V2TIMFriendInfo;
|
||||
@class V2TIMFriendCheckResult;
|
||||
@class V2TIMFriendApplicationResult;
|
||||
@class V2TIMFriendAddApplication;
|
||||
@class V2TIMFriendApplication;
|
||||
@class V2TIMFriendGroup;
|
||||
@class V2TIMFriendSearchParam;
|
||||
@class V2TIMOfficialAccountInfo;
|
||||
@class V2TIMOfficialAccountInfoResult;
|
||||
@class V2TIMFollowOperationResult;
|
||||
@class V2TIMFollowInfo;
|
||||
@class V2TIMFollowTypeCheckResult;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Friendship)
|
||||
|
||||
/// 获取好友列表成功回调
|
||||
typedef void (^V2TIMFriendInfoListSucc)(NSArray<V2TIMFriendInfo *> *infoList);
|
||||
/// 获取指定好友信息成功回调
|
||||
typedef void (^V2TIMFriendInfoResultListSucc)(NSArray<V2TIMFriendInfoResult *> *resultList);
|
||||
/// 好友操作成功回调
|
||||
typedef void (^V2TIMFriendOperationResultSucc)(V2TIMFriendOperationResult *result);
|
||||
/// 好友列表操作成功回调
|
||||
typedef void (^V2TIMFriendOperationResultListSucc)(NSArray<V2TIMFriendOperationResult *> *resultList);
|
||||
/// 好友检查成功回调
|
||||
typedef void (^V2TIMFriendCheckResultListSucc)(NSArray<V2TIMFriendCheckResult *> *resultList);
|
||||
/// 获取群分组列表成功回调
|
||||
typedef void (^V2TIMFriendGroupListSucc)(NSArray<V2TIMFriendGroup *> *groups);
|
||||
/// 获取好友申请列表成功回调
|
||||
typedef void (^V2TIMFriendApplicationResultSucc)(V2TIMFriendApplicationResult *result);
|
||||
/// 获取公众号列表成功回调
|
||||
typedef void (^V2TIMOfficialAccountInfoResultListSucc)(NSArray<V2TIMOfficialAccountInfoResult *> *resultList);
|
||||
/// 关注/取关用户操作成功的回调
|
||||
typedef void (^V2TIMFollowOperationResultListSucc)(NSArray<V2TIMFollowOperationResult *> *resultList);
|
||||
/// 获取自己 关注/粉丝/互关 列表成功的回调
|
||||
typedef void (^V2TIMUserInfoResultSucc)(NSString * _Nullable nextCursor, NSArray<V2TIMUserFullInfo *> *userInfoList);
|
||||
/// 获取用户关注数量信息成功的回调
|
||||
typedef void (^V2TIMFollowInfoResultListSucc)(NSArray<V2TIMFollowInfo *> *resultList);
|
||||
/// 用户关注类型检查成功回调
|
||||
typedef void (^V2TIMFollowTypeCheckResultListSucc)(NSArray<V2TIMFollowTypeCheckResult *> *resultList);
|
||||
|
||||
/// 好友申请类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendApplicationType) {
|
||||
V2TIM_FRIEND_APPLICATION_COME_IN = 1, ///< 别人发给我的
|
||||
V2TIM_FRIEND_APPLICATION_SEND_OUT = 2, ///< 我发给别人的
|
||||
V2TIM_FRIEND_APPLICATION_BOTH = 3, ///< 别人发给我的 和 我发给别人的。仅拉取时有效
|
||||
};
|
||||
|
||||
/// 好友类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendType) {
|
||||
V2TIM_FRIEND_TYPE_SINGLE = 1, ///< 单向好友
|
||||
V2TIM_FRIEND_TYPE_BOTH = 2, ///< 双向好友
|
||||
};
|
||||
|
||||
/// 好友关系类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendRelationType) {
|
||||
V2TIM_FRIEND_RELATION_TYPE_NONE = 0x0, ///< 不是好友
|
||||
V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST = 0x1, ///< 对方在我的好友列表中
|
||||
V2TIM_FRIEND_RELATION_TYPE_IN_OTHER_FRIEND_LIST = 0x2, ///< 我在对方的好友列表中
|
||||
V2TIM_FRIEND_RELATION_TYPE_BOTH_WAY = 0x3, ///< 互为好友
|
||||
};
|
||||
|
||||
/// 好友申请接受类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendAcceptType) {
|
||||
V2TIM_FRIEND_ACCEPT_AGREE = 0, ///< 接受加好友(建立单向好友)
|
||||
V2TIM_FRIEND_ACCEPT_AGREE_AND_ADD = 1, ///< 接受加好友并加对方为好友(建立双向好友)
|
||||
};
|
||||
|
||||
/// 关注类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFollowType) {
|
||||
V2TIM_FOLLOW_TYPE_NONE = 0x0, ///< 无任何关注关系
|
||||
V2TIM_FOLLOW_TYPE_IN_MY_FOLLOWING_LIST = 0x1, ///< 对方在我的关注列表中
|
||||
V2TIM_FOLLOW_TYPE_IN_MY_FOLLOWERS_LIST = 0x2, ///< 对方在我的粉丝列表中
|
||||
V2TIM_FOLLOW_TYPE_IN_BOTH_FOLLOWERS_LIST = 0x3, ///< 对方与我互相关注
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关系链和用户资料监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 添加关系链监听器
|
||||
*/
|
||||
- (void)addFriendListener:(id<V2TIMFriendshipListener>)listener NS_SWIFT_NAME(addFriendListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除关系链监听器
|
||||
*/
|
||||
- (void)removeFriendListener:(id<V2TIMFriendshipListener>)listener NS_SWIFT_NAME(removeFriendListener(listener:));
|
||||
|
||||
/**
|
||||
* 设置关系链监听器(待废弃接口,请使用 addFriendListener 和 removeFriendListener 接口)
|
||||
*/
|
||||
- (void)setFriendListener:(id<V2TIMFriendshipListener>)listener __attribute__((deprecated("use addFriendListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友添加、删除、列表获取、资料设置相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 获取好友列表
|
||||
*/
|
||||
- (void)getFriendList:(V2TIMFriendInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getFriendList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 获取指定好友资料
|
||||
* @param userIDList 好友 userID 列表
|
||||
* - ID 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
*/
|
||||
- (void)getFriendsInfo:(NSArray<NSString *> *)userIDList succ:(V2TIMFriendInfoResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.3 设置指定好友资料
|
||||
*/
|
||||
- (void)setFriendInfo:(V2TIMFriendInfo *)info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setFriendInfo(info:succ:fail:));
|
||||
|
||||
|
||||
/**
|
||||
* 2.4 搜索好友(5.4.666 及以上版本支持)
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17474)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
* - 该接口返回的是本地存储的用户资料,包含好友和非好友资料,您可以根据 V2TIMFriendInfoResult 中的 getRelation 来判断是否为好友。
|
||||
*/
|
||||
- (void)searchFriends:(V2TIMFriendSearchParam *)searchParam succ:(V2TIMFriendInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchFriends(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 添加好友
|
||||
*/
|
||||
- (void)addFriend:(V2TIMFriendAddApplication *)application succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addFriend(application:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.6 删除好友
|
||||
* @param userIDList 要删除的好友 userID 列表
|
||||
* - ID 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
* @param deleteType 删除类型(单向好友、双向好友)
|
||||
*/
|
||||
- (void)deleteFromFriendList:(NSArray *)userIDList deleteType:(V2TIMFriendType)deleteType succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteFromFriendList(userIDList:deleteType:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.7 检查指定用户的好友关系
|
||||
* @param userIDList 要检查的 userID 列表
|
||||
* @param checkType 检查类型 (单向好友检查、双向好友检查)
|
||||
* @param succ 成功后的回调
|
||||
* @param fail 失败后的回调
|
||||
*
|
||||
* @note checkType 的使用需要注意:
|
||||
* - checkType 如果传入 V2TIM_FRIEND_TYPE_SINGLE,结果返回:V2TIM_FRIEND_RELATION_TYPE_NONE、V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST 两种情况
|
||||
* - checkType 如果传入 V2TIM_FRIEND_TYPE_BOTH,结果返回:V2TIM_FRIEND_RELATION_TYPE_NONE、V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST、
|
||||
* V2TIM_FRIEND_RELATION_TYPE_IN_OTHER_FRIEND_LIST、V2TIM_FRIEND_RELATION_TYPE_BOTH_WAY 四种情况
|
||||
*/
|
||||
- (void)checkFriend:(NSArray<NSString *> *)userIDList checkType:(V2TIMFriendType)checkType succ:(V2TIMFriendCheckResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(checkFriend(userIDList:checkType:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友申请、删除相关逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 3.1 获取好友申请列表
|
||||
*
|
||||
* @note
|
||||
* - 好友申请列表包括发起的好友申请和收到的好友申请。
|
||||
* - 最多支持100个。
|
||||
*/
|
||||
- (void)getFriendApplicationList:(V2TIMFriendApplicationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getFriendApplicationList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.2 同意好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
* @param acceptType 建立单向/双向好友关系
|
||||
*/
|
||||
- (void)acceptFriendApplication:(V2TIMFriendApplication *)application type:(V2TIMFriendAcceptType)acceptType succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(acceptFriendApplication(application:acceptType:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.3 同意好友申请,并设置备注
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
* @param acceptType 建立单向/双向好友关系
|
||||
* - @ref V2TIMFriendApplication.V2TIM_FRIEND_ACCEPT_AGREE:同意添加单向好友
|
||||
* - @ref V2TIMFriendApplication.V2TIM_FRIEND_ACCEPT_AGREE_AND_ADD:同意并添加为双向好友
|
||||
* @param remark 好友备注
|
||||
*/
|
||||
- (void)acceptFriendApplication:(V2TIMFriendApplication *)application type:(V2TIMFriendAcceptType)acceptType remark:(NSString* _Nullable)remark succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(acceptFriendApplication(application:acceptType:remark:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 拒绝好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
*/
|
||||
- (void)refuseFriendApplication:(V2TIMFriendApplication *)application succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(refuseFriendApplication(application:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 删除好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
*/
|
||||
- (void)deleteFriendApplication:(V2TIMFriendApplication *)application succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteFriendApplication(application:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 设置好友申请已读
|
||||
*/
|
||||
- (void)setFriendApplicationRead:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setFriendApplicationRead(succ:fail:));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 黑名单
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 添加用户到黑名单
|
||||
*/
|
||||
- (void)addToBlackList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addToBlackList(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.2 把用户从黑名单中删除
|
||||
*/
|
||||
- (void)deleteFromBlackList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteFromBlackList(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.3 获取黑名单列表
|
||||
*/
|
||||
- (void)getBlackList:(V2TIMFriendInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getBlackList(succ:fail:));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友分组
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 5.1 新建好友分组
|
||||
*
|
||||
* @param groupName 分组名称
|
||||
* @param userIDList 要添加到分组中的好友
|
||||
*/
|
||||
- (void)createFriendGroup:(NSString *)groupName userIDList:(NSArray * _Nullable)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createFriendGroup(groupName:userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.2 获取分组信息
|
||||
*
|
||||
* @param groupNameList 要获取信息的好友分组名称列表,传入 nil 获得所有分组信息
|
||||
*/
|
||||
- (void)getFriendGroupList:(NSArray * _Nullable)groupNameList succ:(V2TIMFriendGroupListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getFriendGroupList(groupNameList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.3 删除好友分组
|
||||
*/
|
||||
- (void)deleteFriendGroup:(NSArray *)groupNameList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteFriendGroup(groupNameList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.4 修改好友分组的名称
|
||||
*/
|
||||
- (void)renameFriendGroup:(NSString*)oldName newName:(NSString*)newName succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(renameFriendGroup(oldName:newName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.5 添加好友到一个好友分组
|
||||
*/
|
||||
- (void)addFriendsToFriendGroup:(NSString *)groupName userIDList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addFriendsToFriendGroup(groupName:userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.6 从好友分组中删除好友
|
||||
*/
|
||||
- (void)deleteFriendsFromFriendGroup:(NSString *)groupName userIDList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteFriendsFromFriendGroup(groupName:userIDList:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 公众号订阅、取消订阅、获取公众号列表接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 6.1 订阅公众号(7.6 及其以上版本支持)
|
||||
*/
|
||||
- (void)subscribeOfficialAccount:(NSString *)officialAccountID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(subscribeOfficialAccount(officialAccountID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 6.2 取消订阅公众号(7.6 及其以上版本支持)
|
||||
*/
|
||||
- (void)unsubscribeOfficialAccount:(NSString *)officialAccountID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(unsubscribeOfficialAccount(officialAccountID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 6.3 获取公众号列表(7.6 及其以上版本支持)
|
||||
* @note officialAccountIDList 传空时,获取订阅的公众号列表
|
||||
*/
|
||||
- (void)getOfficialAccountsInfo:(NSArray<NSString *> * _Nullable)officialAccountIDList succ:(V2TIMOfficialAccountInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getOfficialAccountsInfo(officialAccountIDList:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关注/粉丝 相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 7.1 关注用户(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 一次最多支持关注 20 个用户。
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)followUser:(NSArray<NSString *> *)userIDList succ:(V2TIMFollowOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(followUser(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.2 取消关注用户(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 一次最多支持取消关注 20 个用户。
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)unfollowUser:(NSArray<NSString *> *)userIDList succ:(V2TIMFollowOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(unfollowUser(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.3 获取我的关注列表(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*
|
||||
* @param nextCursor 分页拉取标志,第一次拉取填 nil 或 @"",回调成功如果 nextCursor 不为 @"",需要分页,可以传入该值再次拉取,直至 nextCursor 返回为 @""
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getMyFollowingList:(NSString * _Nullable)nextCursor succ:(V2TIMUserInfoResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getMyFollowingList(nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.4 获取我的粉丝列表(从 7.8 版本开始支持)
|
||||
*
|
||||
* @param nextCursor 分页拉取标志,第一次拉取填 nil 或 @"",回调成功如果 nextCursor 不为 @"",需要分页,可以传入该值再次拉取,直至 nextCursor 返回为 @""
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getMyFollowersList:(NSString * _Nullable)nextCursor succ:(V2TIMUserInfoResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getMyFollowersList(nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.5 获取我的互关列表(从 7.8 版本开始支持)
|
||||
*
|
||||
* @param nextCursor 分页拉取标志,第一次拉取填 nil 或 @"",回调成功如果 nextCursor 不为 @"",需要分页,可以传入该值再次拉取,直至 nextCursor 返回为 @""
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getMutualFollowersList:(NSString * _Nullable)nextCursor succ:(V2TIMUserInfoResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getMutualFollowersList(nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.6 获取指定用户的 关注/粉丝/互关 数量信息(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getUserFollowInfo:(NSArray *)userIDList succ:(V2TIMFollowInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getUserFollowInfo(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.7 检查指定用户的关注类型(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)checkFollowType:(NSArray<NSString *> *)userIDList succ:(V2TIMFollowTypeCheckResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(checkFollowType(userIDList:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 资料关系链回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 资料关系链回调
|
||||
V2TIM_EXPORT @protocol V2TIMFriendshipListener <NSObject>
|
||||
@optional
|
||||
/**
|
||||
* 好友申请新增通知,两种情况会收到这个回调:
|
||||
* 1. 自己申请加别人好友
|
||||
* 2. 别人申请加自己好友
|
||||
*/
|
||||
- (void)onFriendApplicationListAdded:(NSArray<V2TIMFriendApplication *> *)applicationList NS_SWIFT_NAME(onFriendApplicationListAdded(applicationList:));
|
||||
|
||||
/**
|
||||
* 好友申请删除通知,四种情况会收到这个回调:
|
||||
* 1. 调用 deleteFriendApplication 主动删除好友申请
|
||||
* 2. 调用 refuseFriendApplication 拒绝好友申请
|
||||
* 3. 调用 acceptFriendApplication 同意好友申请
|
||||
* 4. 申请加别人好友被拒绝
|
||||
*/
|
||||
- (void)onFriendApplicationListDeleted:(NSArray *)userIDList NS_SWIFT_NAME(onFriendApplicationListDeleted(userIDList:));
|
||||
|
||||
/**
|
||||
* 好友申请已读通知,如果调用 setFriendApplicationRead 设置好友申请列表已读,会收到这个回调(主要用于多端同步)
|
||||
*/
|
||||
- (void)onFriendApplicationListRead NS_SWIFT_NAME(onFriendApplicationListRead());
|
||||
|
||||
/**
|
||||
* 好友新增通知
|
||||
*/
|
||||
- (void)onFriendListAdded:(NSArray<V2TIMFriendInfo *>*)infoList NS_SWIFT_NAME(onFriendListAdded(infoList:));
|
||||
|
||||
/**
|
||||
* 好友删除通知,两种情况会收到这个回调:
|
||||
* 1. 自己删除好友(单向和双向删除都会收到回调)
|
||||
* 2. 好友把自己删除(双向删除会收到)
|
||||
*/
|
||||
- (void)onFriendListDeleted:(NSArray*)userIDList NS_SWIFT_NAME(onFriendListDeleted(userIDList:));
|
||||
|
||||
/**
|
||||
* 黑名单新增通知
|
||||
*/
|
||||
- (void)onBlackListAdded:(NSArray<V2TIMFriendInfo *>*)infoList NS_SWIFT_NAME(onBlackListAdded(infoList:));
|
||||
|
||||
/**
|
||||
* 黑名单删除通知
|
||||
*/
|
||||
- (void)onBlackListDeleted:(NSArray*)userIDList NS_SWIFT_NAME(onBlackListDeleted(userIDList:));
|
||||
|
||||
/**
|
||||
* 好友资料变更通知
|
||||
*/
|
||||
- (void)onFriendProfileChanged:(NSArray<V2TIMFriendInfo *> *)infoList NS_SWIFT_NAME(onFriendProfileChanged(infoList:));
|
||||
|
||||
/**
|
||||
* 好友分组被创建
|
||||
*/
|
||||
- (void)onFriendGroupCreated:(NSString * _Nullable)groupName friendInfoList:(NSArray<V2TIMFriendInfo *> *)friendInfoList NS_SWIFT_NAME(onFriendGroupCreated(groupName:friendInfoList:));
|
||||
|
||||
/**
|
||||
* 好友分组被删除
|
||||
*/
|
||||
- (void)onFriendGroupDeleted:(NSArray<NSString *> *)groupNameList NS_SWIFT_NAME(onFriendGroupDeleted(groupNameList:));
|
||||
|
||||
/**
|
||||
* 好友分组名变更
|
||||
*/
|
||||
- (void)onFriendGroupNameChanged:(NSString * _Nullable)oldGroupName newGroupName:(NSString * _Nullable)newGroupName NS_SWIFT_NAME(onFriendGroupNameChanged(oldGroupName:newGroupName:));
|
||||
|
||||
/**
|
||||
* 好友分组新增好友
|
||||
*/
|
||||
- (void)onFriendsAddedToGroup:(NSString * _Nullable)groupName friendInfoList:(NSArray<V2TIMFriendInfo *> *)friendInfoList NS_SWIFT_NAME(onFriendsAddedToGroup(groupName:friendInfoList:));
|
||||
|
||||
/**
|
||||
* 好友分组删除好友
|
||||
*/
|
||||
- (void)onFriendsDeletedFromGroup:(NSString * _Nullable)groupName friendIDList:(NSArray<NSString *> *)friendIDList NS_SWIFT_NAME(onFriendsDeletedFromGroup(groupName:friendIDList:));
|
||||
|
||||
/**
|
||||
* 订阅公众号通知
|
||||
*/
|
||||
- (void)onOfficialAccountSubscribed:(V2TIMOfficialAccountInfo *)officialAccountInfo NS_SWIFT_NAME(onOfficialAccountSubscribed(officialAccountInfo:));
|
||||
|
||||
/**
|
||||
* 取消订阅公众号通知
|
||||
*/
|
||||
- (void)onOfficialAccountUnsubscribed:(NSString * _Nullable)officialAccountID NS_SWIFT_NAME(onOfficialAccountUnsubscribed(officialAccountID:));
|
||||
|
||||
/**
|
||||
* 订阅的公众号被删除通知
|
||||
*/
|
||||
- (void)onOfficialAccountDeleted:(NSString * _Nullable)officialAccountID NS_SWIFT_NAME(onOfficialAccountDeleted(officialAccountID:));
|
||||
|
||||
/**
|
||||
* 订阅的公众号资料更新通知
|
||||
*/
|
||||
- (void)onOfficialAccountInfoChanged:(V2TIMOfficialAccountInfo *)officialAccountInfo NS_SWIFT_NAME(onOfficialAccountInfoChanged(officialAccountInfo:));
|
||||
|
||||
/**
|
||||
* 关注列表变更通知
|
||||
*/
|
||||
- (void)onMyFollowingListChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList isAdd:(BOOL)isAdd NS_SWIFT_NAME(onMyFollowingListChanged(userInfoList:isAdd:));
|
||||
|
||||
/**
|
||||
* 粉丝列表变更通知
|
||||
*/
|
||||
- (void)onMyFollowersListChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList isAdd:(BOOL)isAdd NS_SWIFT_NAME(onMyFollowersListChanged(userInfoList:isAdd:));
|
||||
|
||||
/**
|
||||
* 互关列表变更通知
|
||||
*/
|
||||
- (void)onMutualFollowersListChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList isAdd:(BOOL)isAdd NS_SWIFT_NAME(onMutualFollowersListChanged(userInfoList:isAdd:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友资料获取结果
|
||||
V2TIM_EXPORT @interface V2TIMFriendInfoResult : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 返结果表述
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 好友类型
|
||||
@property(nonatomic,assign) V2TIMFriendRelationType relation;
|
||||
|
||||
/// 好友个人资料,如果不是好友,除了 userID 字段,其他字段都为空
|
||||
@property(nonatomic,strong) V2TIMFriendInfo *friendInfo;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友资料
|
||||
V2TIM_EXPORT @interface V2TIMFriendInfo : NSObject
|
||||
|
||||
/// 好友 ID
|
||||
@property(nonatomic,strong,nullable) NSString *userID;
|
||||
|
||||
/**
|
||||
* 好友备注
|
||||
*
|
||||
* @note
|
||||
* - 备注长度最长不得超过 96 个字节;
|
||||
* - 字段描述详见 [控制台](https://cloud.tencent.com/document/product/269/1501#.E6.A0.87.E9.85.8D.E5.A5.BD.E5.8F.8B.E5.AD.97.E6.AE.B5)。
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString *friendRemark;
|
||||
|
||||
/// 添加好友的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint64_t friendAddTime;
|
||||
|
||||
/// 好友自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 好友自定义字段) 配置好友自定义字段,然后再调用该接口进行设置,key 值不需要加 Tag_SNS_Custom_ 前缀。
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *> *friendCustomInfo;
|
||||
|
||||
/**
|
||||
* 好友所在分组列表
|
||||
*
|
||||
* @note
|
||||
* - 最多支持 32 个分组;
|
||||
* - 不允许分组名为空;
|
||||
* - 分组名长度不得超过 30 个字节;
|
||||
* - 同一个好友可以有多个不同的分组。
|
||||
* - 字段描述详见 [控制台](https://cloud.tencent.com/document/product/269/1501#.E6.A0.87.E9.85.8D.E5.A5.BD.E5.8F.8B.E5.AD.97.E6.AE.B5)。
|
||||
*/
|
||||
@property(nonatomic,strong,readonly) NSArray *friendGroups;
|
||||
|
||||
/// 好友个人资料
|
||||
@property(nonatomic,strong,readonly) V2TIMUserFullInfo *userFullInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友申请相关对象
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 加好友
|
||||
V2TIM_EXPORT @interface V2TIMFriendAddApplication : NSObject
|
||||
|
||||
/// 用户 userID(必填)
|
||||
@property (nonatomic,strong) NSString* userID;
|
||||
|
||||
/// 备注(备注最大96字节)
|
||||
@property (nonatomic,strong,nullable) NSString* friendRemark;
|
||||
|
||||
/// 预分组名(最大96字节)
|
||||
@property (nonatomic,strong,nullable) NSString* friendGroup;
|
||||
|
||||
/// 请求说明(最大120字节)
|
||||
@property (nonatomic,strong,nullable) NSString* addWording;
|
||||
|
||||
/// 添加来源
|
||||
@property (nonatomic,strong,nullable) NSString* addSource;
|
||||
|
||||
/// 加好友方式
|
||||
@property (nonatomic,assign) V2TIMFriendType addType;
|
||||
|
||||
@end
|
||||
|
||||
/// 好友申请列表
|
||||
V2TIM_EXPORT @interface V2TIMFriendApplicationResult : NSObject
|
||||
|
||||
/// 好友申请未读数量
|
||||
@property(nonatomic,assign) uint64_t unreadCount;
|
||||
|
||||
/// 好友申请列表
|
||||
@property(nonatomic,strong) NSMutableArray<V2TIMFriendApplication *> * applicationList;
|
||||
|
||||
@end
|
||||
|
||||
/// 好友申请
|
||||
V2TIM_EXPORT @interface V2TIMFriendApplication : NSObject
|
||||
|
||||
/// 用户标识
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* nickName;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* faceUrl;
|
||||
|
||||
/// 添加好友的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint64_t addTime;
|
||||
|
||||
/// 来源
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* addSource;
|
||||
|
||||
/// 加好友附言
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* addWording;
|
||||
|
||||
/// 好友申请类型
|
||||
@property(nonatomic,assign,readonly) V2TIMFriendApplicationType type;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友关系链检查结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友关系链检查结果
|
||||
V2TIM_EXPORT @interface V2TIMFriendCheckResult : NSObject
|
||||
|
||||
/// 用户id
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 检查结果
|
||||
@property(nonatomic,assign) V2TIMFriendRelationType relationType;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友操作结果(添加、删除、加黑名单、添加分组等)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友操作结果(添加、删除、加黑名单、添加分组等)
|
||||
V2TIM_EXPORT @interface V2TIMFriendOperationResult : NSObject
|
||||
|
||||
/// 用户Id
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友分组
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友分组
|
||||
V2TIM_EXPORT @interface V2TIMFriendGroup : NSObject
|
||||
/// 好友分组名称
|
||||
@property(nonatomic,strong,nullable) NSString* groupName;
|
||||
|
||||
/// 分组成员数量
|
||||
@property(nonatomic,assign) uint64_t userCount;
|
||||
|
||||
/// 分组成员列表
|
||||
@property(nonatomic,strong) NSMutableArray* friendList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMFriendSearchParam : NSObject
|
||||
|
||||
/// 搜索的关键字列表,关键字列表最多支持 5 个
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 设置是否搜索 userID
|
||||
@property(nonatomic, assign) BOOL isSearchUserID;
|
||||
|
||||
/// 是否设置搜索昵称
|
||||
@property(nonatomic, assign) BOOL isSearchNickName;
|
||||
|
||||
/// 是否设置搜索备注
|
||||
@property(nonatomic, assign) BOOL isSearchRemark;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 公众号资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMOfficialAccountInfo : NSObject
|
||||
|
||||
/// 公众号 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* officialAccountID;
|
||||
|
||||
/// 公众号名称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* officialAccountName;
|
||||
|
||||
/// 公众号头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* faceUrl;
|
||||
|
||||
/// 公众号所有者
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* ownerUserID;
|
||||
|
||||
/// 公众号组织
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* organization;
|
||||
|
||||
/// 公众号简介
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* introduction;
|
||||
|
||||
/// 公众号自定义数据
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* customData;
|
||||
|
||||
/// 公众号创建时间,单位:秒
|
||||
@property(nonatomic,assign,readonly) uint64_t createTime;
|
||||
|
||||
/// 公众号订阅者数量
|
||||
@property(nonatomic,assign,readonly) uint64_t subscriberCount;
|
||||
|
||||
/// 订阅公众号的时间,单位:秒
|
||||
@property(nonatomic,assign,readonly) uint64_t subscribeTime;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 公众号资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 公众号资料获取结果
|
||||
V2TIM_EXPORT @interface V2TIMOfficialAccountInfoResult : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 返回结果表述
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 公众号资料
|
||||
@property(nonatomic,strong) V2TIMOfficialAccountInfo *officialAccountInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关注/取关用户的操作结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 关注/取关用户的操作结果
|
||||
V2TIM_EXPORT @interface V2TIMFollowOperationResult : NSObject
|
||||
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户关注数量信息获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 用户关注数量信息获取结果
|
||||
V2TIM_EXPORT @interface V2TIMFollowInfo : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回结果表述
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString *userID;
|
||||
|
||||
/// 用户的关注数量
|
||||
@property(nonatomic,assign) uint64_t followingCount;
|
||||
|
||||
/// 用户的粉丝数量
|
||||
@property(nonatomic,assign) uint64_t followersCount;
|
||||
|
||||
/// 用户的互关数量
|
||||
@property(nonatomic,assign) uint64_t mutualFollowersCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 指定用户的关注类型检查结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 指定用户的关注类型检查结果
|
||||
V2TIM_EXPORT @interface V2TIMFollowTypeCheckResult : NSObject
|
||||
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 关注类型
|
||||
@property(nonatomic,assign) V2TIMFollowType followType;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,752 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Group
|
||||
//
|
||||
// 群组高级接口,里面包含了群组的高级功能,比如群成员邀请、非群成员申请进群等操作接口。
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
@class V2TIMGroupMemberOperationResult;
|
||||
@class V2TIMGroupApplicationResult;
|
||||
@class V2TIMCreateGroupMemberInfo;
|
||||
@class V2TIMGroupInfo;
|
||||
@class V2TIMGroupInfoResult;
|
||||
@class V2TIMGroupApplication;
|
||||
@class V2TIMGroupSearchParam;
|
||||
@class V2TIMGroupSearchResult;
|
||||
@class V2TIMGroupMemberSearchParam;
|
||||
@class V2TIMGroupMemberSearchResult;
|
||||
@class V2TIMGroupAtInfo;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群相关的高级接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Group)
|
||||
|
||||
/// 获取已加入群列表成功回调
|
||||
typedef void (^V2TIMGroupInfoListSucc)(NSArray<V2TIMGroupInfo *> *groupList);
|
||||
/// 获取指定群列表成功回调
|
||||
typedef void (^V2TIMGroupInfoResultListSucc)(NSArray<V2TIMGroupInfoResult *> *groupResultList);
|
||||
/// 云端搜索群组的结果回调
|
||||
typedef void (^V2TIMGroupSearchResultSucc)(V2TIMGroupSearchResult *searchResult);
|
||||
/// 获取群属性列表成功回调
|
||||
typedef void (^V2TIMGroupAttributeListSucc)(NSMutableDictionary<NSString *,NSString *> *groupAttributeList);
|
||||
/// 获取群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoListSucc)(NSArray<V2TIMGroupMemberFullInfo *> *memberList);
|
||||
/// 获取指定群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoResultSucc)(uint64_t nextSeq, NSArray<V2TIMGroupMemberFullInfo *> *memberList);
|
||||
/// 搜索本地群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoListSearchSucc)(NSDictionary<NSString *, NSArray<V2TIMGroupMemberFullInfo *> *> *memberList);
|
||||
/// 搜索云端群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberSearchResultSucc)(V2TIMGroupMemberSearchResult *searchResult);
|
||||
/// 群成员操作成功回调
|
||||
typedef void (^V2TIMGroupMemberOperationResultListSucc)(NSArray<V2TIMGroupMemberOperationResult*> * resultList);
|
||||
/// 获取好友申请列表成功回调
|
||||
typedef void (^V2TIMGroupApplicationResultSucc)(V2TIMGroupApplicationResult *result);
|
||||
/// 获取群在线人数成功回调
|
||||
typedef void (^V2TIMGroupOnlineMemberCountSucc)(NSInteger count);
|
||||
/// 群计数器操作成功的回调
|
||||
typedef void (^V2TIMGroupCounterResultSucc)(NSDictionary<NSString *, NSNumber *> *groupCounters);
|
||||
|
||||
/// 加群选项
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupAddOpt) {
|
||||
V2TIM_GROUP_ADD_FORBID = 0, ///< 禁止加群
|
||||
V2TIM_GROUP_ADD_AUTH = 1, ///< 需要管理员审批
|
||||
V2TIM_GROUP_ADD_ANY = 2, ///< 任何人可以加入
|
||||
};
|
||||
|
||||
/// 群组操作结果
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberResult) {
|
||||
V2TIM_GROUP_MEMBER_RESULT_FAIL = 0, ///< 操作失败
|
||||
V2TIM_GROUP_MEMBER_RESULT_SUCC = 1, ///< 操作成功
|
||||
V2TIM_GROUP_MEMBER_RESULT_INVALID = 2, ///< 无效操作,加群时已经是群成员,移除群组时不在群内
|
||||
V2TIM_GROUP_MEMBER_RESULT_PENDING = 3, ///< 等待处理,邀请入群时等待审批
|
||||
V2TIM_GROUP_MEMBER_RESULT_OVERLIMIT = 4, ///< 操作失败,创建群指定初始群成员列表或邀请入群时,被邀请者加入的群总数超限
|
||||
};
|
||||
|
||||
/// 群成员角色过滤方式
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberFilter) {
|
||||
V2TIM_GROUP_MEMBER_FILTER_ALL = 0x00, ///< 全部成员
|
||||
V2TIM_GROUP_MEMBER_FILTER_OWNER = 0x01, ///< 群主
|
||||
V2TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02, ///< 管理员
|
||||
V2TIM_GROUP_MEMBER_FILTER_COMMON = 0x04, ///< 普通成员
|
||||
};
|
||||
|
||||
/// 群组未决请求类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationType) {
|
||||
V2TIM_GROUP_JOIN_APPLICATION_NEED_APPROVED_BY_ADMIN = 0x0, ///< 需要群主或管理员审批的申请加群请求
|
||||
V2TIM_GROUP_INVITE_APPLICATION_NEED_APPROVED_BY_INVITEE = 0x1, ///< 需要被邀请者同意的邀请入群请求
|
||||
V2TIM_GROUP_INVITE_APPLICATION_NEED_APPROVED_BY_ADMIN = 0x2, ///< 需要群主或管理员审批的邀请入群请求
|
||||
};
|
||||
|
||||
/// 群组已决标志
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationHandleStatus) {
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_UNHANDLED = 0, ///< 未处理
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_HANDLED_BY_OTHER = 1, ///< 被他人处理
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_HANDLED_BY_SELF = 2, ///< 自己已处理
|
||||
};
|
||||
|
||||
/// 群组已决结果
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationHandleResult) {
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_RESULT_REFUSE = 0, ///< 拒绝申请
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_RESULT_AGREE = 1, ///< 同意申请
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 创建自定义群组(高级版本:可以指定初始的群成员)
|
||||
*
|
||||
* @param info 自定义群组信息,可以设置 groupID | groupType | groupName | notification | introduction | faceURL 字段
|
||||
* @param memberList 指定初始的群成员(直播群 AVChatRoom 不支持指定初始群成员,memberList 请传 nil)
|
||||
*
|
||||
* @note
|
||||
* - 后台限制邀请的群成员个数不能超过 20
|
||||
* - 其他限制请参考 V2TIMManager.h -> createGroup 注释
|
||||
*/
|
||||
- (void)createGroup:(V2TIMGroupInfo*)info memberList:(NSArray<V2TIMCreateGroupMemberInfo *>* _Nullable )memberList succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createGroup(info:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.2 获取当前用户已经加入的群列表
|
||||
*
|
||||
* @note
|
||||
* - 直播群(AVChatRoom)不支持该 API
|
||||
* - 该接口有频限检测,SDK 限制调用频率为 1 秒 10 次,超过限制后会报 ERR_SDK_COMM_API_CALL_FREQUENCY_LIMIT (7008)错误
|
||||
*/
|
||||
- (void)getJoinedGroupList:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getJoinedGroupList(succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群资料管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 拉取群资料
|
||||
*
|
||||
* @param groupIDList 群组 ID 列表
|
||||
*/
|
||||
- (void)getGroupsInfo:(NSArray<NSString *> *)groupIDList succ:(V2TIMGroupInfoResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.2 搜索本地群资料(5.4.666 及以上版本支持)
|
||||
* @note 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17474)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchGroups:(V2TIMGroupSearchParam *)searchParam succ:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchGroups(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 搜索云端群资料(8.4 及以上版本支持)
|
||||
* @note 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchCloudGroups:(V2TIMGroupSearchParam *)searchParam succ:(V2TIMGroupSearchResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchCloudGroups(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.4 修改群资料
|
||||
*/
|
||||
- (void)setGroupInfo:(V2TIMGroupInfo *)info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupInfo(info:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 初始化群属性,会清空原有的群属性列表
|
||||
*
|
||||
* @note
|
||||
* attributes 的使用限制如下:
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型;
|
||||
* - key 最多支持 16 个,长度限制为 32 字节;
|
||||
* - value 长度限制为 4k;
|
||||
* - 总的 attributes(包括 key 和 value)限制为 16k;
|
||||
* - initGroupAttributes、setGroupAttributes、deleteGroupAttributes 接口合并计算, SDK 限制为 5 秒 10 次,超过后回调 8511 错误码;后台限制 1 秒 5 次,超过后返回 10049 错误码;
|
||||
* - getGroupAttributes 接口 SDK 限制 5 秒 20 次;
|
||||
* - 从 5.6 版本开始,当每次APP启动后初次修改群属性时,请您先调用 getGroupAttributes 拉取到最新的群属性之后,再发起修改操作;
|
||||
* - 从 5.6 版本开始,当多个用户同时修改同一个群属性时,只有第一个用户可以执行成功,其它用户会收到 10056 错误码;收到这个错误码之后,请您调用 getGroupAttributes 把本地保存的群属性更新到最新之后,再发起修改操作。
|
||||
*/
|
||||
- (void)initGroupAttributes:(NSString*)groupID attributes:(NSDictionary<NSString *,NSString *> *)attributes succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(initGroupAttributes(groupID:attributes:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.6 设置群属性,已有该群属性则更新其 value 值,没有该群属性则添加该群属性。
|
||||
* @note
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型。
|
||||
*/
|
||||
- (void)setGroupAttributes:(NSString*)groupID attributes:(NSDictionary<NSString *,NSString *> *)attributes succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupAttributes(groupID:attributes:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.7 删除群指定属性,keys 传 nil 则清空所有群属性。
|
||||
* @note
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型。
|
||||
*/
|
||||
- (void)deleteGroupAttributes:(NSString*)groupID keys:(NSArray<NSString *> * _Nullable)keys succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteGroupAttributes(groupID:keys:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.8 获取群指定属性,keys 传 nil 则获取所有群属性。
|
||||
* @note
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型。
|
||||
*/
|
||||
- (void)getGroupAttributes:(NSString*)groupID keys:(NSArray<NSString *> * _Nullable)keys succ:(V2TIMGroupAttributeListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.9 获取指定群在线人数
|
||||
*
|
||||
* @param groupID 群id
|
||||
* @param succ 成功回调
|
||||
* @param fail 失败回调
|
||||
*
|
||||
* @note
|
||||
* - IMSDK 7.3 以前的版本仅支持直播群( AVChatRoom);
|
||||
* - IMSDK 7.3 及其以后的版本支持所有群类型。
|
||||
*/
|
||||
- (void)getGroupOnlineMemberCount:(NSString*)groupID succ:(V2TIMGroupOnlineMemberCountSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupOnlineMemberCount(groupID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.10 设置群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @note
|
||||
* - 该计数器的 key 如果存在,则直接更新计数器的 value 值;如果不存在,则添加该计数器的 key-value;
|
||||
* - 当群计数器设置成功后,在 succ 回调中会返回最终成功设置的群计数器信息;
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)setGroupCounters:(NSString *)groupID counters:(NSDictionary<NSString *, NSNumber *> *)counters succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(setGroupCounters(groupID:counters:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.11 获取群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @note
|
||||
* - 如果 keys 为空,则表示获取群内的所有计数器;
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)getGroupCounters:(NSString *)groupID keys:(NSArray<NSString *> * _Nullable)keys succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupCounters(groupID:keys:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.12 递增群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @param groupID 群 ID
|
||||
* @param key 群计数器的 key
|
||||
* @param value 群计数器的递增的变化量,计数器 key 对应的 value 变更方式为: new_value = old_value + value
|
||||
* @param succ 成功后的回调,会返回当前计数器做完递增操作后的 value
|
||||
* @param fail 失败的回调
|
||||
*
|
||||
* @note
|
||||
* - 该计数器的 key 如果存在,则直接在当前值的基础上根据传入的 value 作递增操作;反之,添加 key,并在默认值为 0 的基础上根据传入的 value 作递增操作;
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)increaseGroupCounter:(NSString *)groupID key:(NSString *)key value:(NSInteger)value succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(increaseGroupCounter(groupID:key:value:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.13 递减群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @param groupID 群 ID
|
||||
* @param key 群计数器的 key
|
||||
* @param value 群计数器的递减的变化量,计数器 key 对应的 value 变更方式为: new_value = old_value - value
|
||||
* @param succ 成功后的回调,会返回当前计数器做完递减操作后的 value
|
||||
* @param fail 失败的回调
|
||||
*
|
||||
* @note
|
||||
* - 该计数器的 key 如果存在,则直接在当前值的基础上根据传入的 value 作递减操作;反之,添加 key,并在默认值为 0 的基础上根据传入的 value 作递减操作
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)decreaseGroupCounter:(NSString *)groupID key:(NSString *)key value:(NSInteger)value succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(decreaseGroupCounter(groupID:key:value:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群成员管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 3.1 获取群成员列表
|
||||
*
|
||||
* @param filter 指定群成员类型。
|
||||
* @param nextSeq 分页拉取标志,第一次拉取填 0,回调成功如果 nextSeq 不为零,需要分页,传入再次拉取,直至为 0。
|
||||
*
|
||||
* @note
|
||||
* - 普通群(工作群、会议群、公开群)的限制:
|
||||
* 1. filter 只能设置为 V2TIMGroupMemberFilter 定义的数值,SDK 会返回指定角色的成员。
|
||||
*
|
||||
* - 直播群(AVChatRoom)的限制:
|
||||
* 1. 如果设置 filter 为 V2TIMGroupMemberFilter 定义的数值,SDK 返回全部成员。返回的人数规则为:拉取最近入群群成员最多 1000 人,新进来的成员排在前面,需要升级旗舰版,并且在 [控制台](https://console.cloud.tencent.com/im) 开启“直播群在线成员列表”开关(6.3 及以上版本支持)。
|
||||
* 2. 如果设置 filter 为群成员自定义标记,旗舰版支持拉取指定标记的成员列表。标记群成员的设置请参考 markGroupMemberList:memberList:markType:enableMark:succ:fail: API。
|
||||
* 3. 程序重启后,请重新加入群组,否则拉取群成员会报 10007 错误码。
|
||||
* 4. 群成员资料信息仅支持 userID | nickName | faceURL | role 字段。
|
||||
*
|
||||
* - 社群(Community)的限制:
|
||||
* 1. 如果设置 filter 为 V2TIMGroupMemberFilter 定义的数值,SDK 返回指定角色的成员。
|
||||
* 2. 如果设置 filter 为群成员自定义标记,旗舰版支持拉取指定标记的成员列表(7.5 及以上版本支持)。标记群成员的设置请参考 markGroupMemberList:memberList:markType:enableMark:succ:fail: API。
|
||||
*/
|
||||
- (void)getGroupMemberList:(NSString*)groupID filter:(uint32_t)filter nextSeq:(uint64_t)nextSeq succ:(V2TIMGroupMemberInfoResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.2 指定的群成员资料
|
||||
*/
|
||||
- (void)getGroupMembersInfo:(NSString*)groupID memberList:(NSArray<NSString*>*)memberList succ:(V2TIMGroupMemberInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupMembersInfo(groupID:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.3 搜索本地群成员资料(5.4.666 及以上版本支持)
|
||||
*
|
||||
* @param searchParam 搜索参数
|
||||
* @note 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17474)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchGroupMembers:(V2TIMGroupMemberSearchParam *)searchParam succ:(V2TIMGroupMemberInfoListSearchSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchGroupMembers(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 搜索云端群成员资料(8.4 及以上版本支持)
|
||||
*
|
||||
* @param searchParam 搜索参数
|
||||
* @note 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchCloudGroupMembers:(V2TIMGroupMemberSearchParam *)searchParam succ:(V2TIMGroupMemberSearchResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchCloudGroupMembers(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 修改指定的群成员资料
|
||||
*/
|
||||
- (void)setGroupMemberInfo:(NSString*)groupID info:(V2TIMGroupMemberFullInfo *)info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupMemberInfo(groupID:info:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 禁言群成员(只有管理员或群主能够调用)
|
||||
*
|
||||
* @param seconds 禁言时间长度,单位秒,表示调用该接口成功后多少秒内不允许被禁言用户再发言。
|
||||
*/
|
||||
- (void)muteGroupMember:(NSString*)groupID member:(NSString*)userID muteTime:(uint32_t)seconds succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(muteGroupMember(groupID:memberUserID:muteTimeSeconds:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.7 禁言全体群成员,只有管理员或群主能够调用(7.5 及以上版本支持)
|
||||
*
|
||||
* @param groupID 群组 ID
|
||||
* @param isMute YES 表示禁言,NO 表示解除禁言
|
||||
*
|
||||
* @note
|
||||
* - 禁言全体群成员没有时间限制,设置 isMute 为 NO 则解除禁言。
|
||||
* - 禁言或解除禁言后,会触发 V2TIMGroupListener 中的 onAllGroupMembersMuted:isMute: 回调。
|
||||
* - 群主和管理员可以禁言普通成员。普通成员不能操作禁言/解除禁言。
|
||||
*/
|
||||
- (void)muteAllGroupMembers:(NSString*)groupID isMute:(BOOL)isMute succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(muteAllGroupMembers(groupID:isMute:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.8 邀请他人入群
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 工作群(Work):群里的任何人都可以邀请其他人进群。
|
||||
* - 会议群(Meeting)和公开群(Public):默认不允许邀请加入群,您可以修改群资料 V2TIMGroupInfo 的 groupApproveOpt 字段打开邀请入群方式。打开该选项之后,群里的任何人都可以邀请其他人进群。
|
||||
* - 直播群(AVChatRoom):不支持此功能。
|
||||
* - 后台限制单次邀请的群成员个数不能超过 20。
|
||||
*/
|
||||
- (void)inviteUserToGroup:(NSString*)groupID userList:(NSArray<NSString *>*)userList succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(inviteUserToGroup(groupID:userList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.9 踢人
|
||||
*
|
||||
* @param groupID 群 id
|
||||
* @param memberList 被踢用户的 userID 列表
|
||||
* @param reason 被踢的原因
|
||||
* @param duration 指定自被踢出群组开始算起,禁止被踢用户重新申请加群的时长,单位:秒
|
||||
* @param succ 成功后的回调
|
||||
* @param fail 失败后的回调
|
||||
*
|
||||
* @note
|
||||
* - 从 7.2 版本开始,支持设置一个时长参数,用于指定用户从被踢出群组开始算起,禁止重新申请加群的时长;
|
||||
* - 工作群(Work):只有群主或 APP 管理员可以踢人;
|
||||
* - 公开群(Public)、会议群(Meeting):群主、管理员和 APP 管理员可以踢人;
|
||||
* - 直播群(AVChatRoom):6.6 之前版本只支持禁言(muteGroupMember),不支持踢人。6.6 及以上版本支持禁言和踢人。需要您购买旗舰版套餐;
|
||||
* - 该接口其他使用限制请查阅:https://cloud.tencent.com/document/product/269/75400#.E8.B8.A2.E4.BA.BA。
|
||||
*/
|
||||
- (void)kickGroupMember:(NSString *)groupID memberList:(NSArray<NSString *> *)memberList reason:(NSString * _Nullable)reason duration:(uint32_t)duration succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(kickGroupMember(groupID:memberList:reason:duration:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.10 切换群成员的角色
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 工作群(Work)不支持设置群成员角色。
|
||||
* - 只有群主才能对群成员进行普通成员和管理员之间的角色切换。
|
||||
* - 转让群组请调用 @ref transferGroupOwner 接口。
|
||||
* - 会议群(Meeting)切换群成员角色之后,不会有 onGrantAdministrator 和 onRevokeAdministrator 通知回调。
|
||||
* - 切换的角色支持普通群成员( V2TIM_GROUP_MEMBER_ROLE_MEMBER) 和管理员(V2TIM_GROUP_MEMBER_ROLE_ADMIN)。
|
||||
*/
|
||||
- (void)setGroupMemberRole:(NSString*)groupID member:(NSString *)userID newRole:(uint32_t)role succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupMemberRole(groupID:memberUserID:newRole:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.11 标记群成员(需要您购买旗舰版套餐)
|
||||
*
|
||||
* @param groupID 群 ID。
|
||||
* @param memberList 群成员 ID 列表。
|
||||
* @param markType 标记类型。数字类型,大于等于 1000,您可以自定义,一个群组里最多允许定义 10 个标记。
|
||||
* @param enableMark YES 表示添加标记,NO 表示移除标记。
|
||||
* @note
|
||||
* - 直播群从 6.6 版本开始支持。
|
||||
* - 社群从 7.5 版本开始支持。
|
||||
* - 只有群主才有权限标记群组中其他人。
|
||||
*/
|
||||
- (void)markGroupMemberList:(NSString *)groupID memberList:(NSArray<NSString *> *)memberList markType:(uint32_t)markType enableMark:(BOOL)enableMark succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(markGroupMemberList(groupID:memberList:markType:enableMark:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.12 转让群主
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 普通类型的群(Work、Public、Meeting):只有群主才有权限进行群转让操作。
|
||||
* - 直播群(AVChatRoom):不支持转让群主。
|
||||
*/
|
||||
- (void)transferGroupOwner:(NSString*)groupID member:(NSString*)userID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(transferGroupOwner(groupID:memberUserID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.13 踢人(直播群踢人从 6.6 版本开始支持,需要您购买旗舰版套餐)
|
||||
*
|
||||
* @note 使用限制如下:
|
||||
* - 待废弃接口,请使用 kickGroupMember:memberList:reason:duration:succ:fail: 接口;
|
||||
* - 工作群(Work):只有群主或 APP 管理员可以踢人;
|
||||
* - 公开群(Public)、会议群(Meeting):群主、管理员和 APP 管理员可以踢人;
|
||||
* - 直播群(AVChatRoom):6.6 之前版本只支持禁言(muteGroupMember),不支持踢人。6.6 及以上版本支持禁言和踢人;
|
||||
* - 该接口其他使用限制请查阅:https://cloud.tencent.com/document/product/269/75400#.E8.B8.A2.E4.BA.BA。
|
||||
*/
|
||||
- (void)kickGroupMember:(NSString *)groupID memberList:(NSArray<NSString *> *)memberList reason:(NSString * _Nullable)reason succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail __attribute__((deprecated("use kickGroupMember:memberList:reason:succ:fail:")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 加群申请
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 获取加群申请列表
|
||||
* @note 最多支持50个
|
||||
*/
|
||||
- (void)getGroupApplicationList:(V2TIMGroupApplicationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupApplicationList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.2 同意某一条加群申请
|
||||
*/
|
||||
- (void)acceptGroupApplication:(V2TIMGroupApplication *)application reason:(NSString* _Nullable)reason succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(acceptGroupApplication(application:reason:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.3 拒绝某一条加群申请
|
||||
*/
|
||||
- (void)refuseGroupApplication:(V2TIMGroupApplication *)application reason:(NSString* _Nullable)reason succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(refuseGroupApplication(application:reason:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.4 标记申请列表为已读
|
||||
*/
|
||||
- (void)setGroupApplicationRead:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupApplicationRead(succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群基本资料(可以通过 getGroupInfo 获取,不支持由客户自行创建)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群资料
|
||||
V2TIM_EXPORT @interface V2TIMGroupInfo : NSObject
|
||||
|
||||
/**
|
||||
* 群组 ID
|
||||
*
|
||||
* @note 自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长 48 个字节,且前缀不能为 @TGS#(避免与默认分配的群组 ID 混淆)
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* groupID;
|
||||
|
||||
/// 群类型
|
||||
@property(nonatomic,strong,nullable) NSString* groupType;
|
||||
|
||||
/**
|
||||
* 社群是否支持创建话题
|
||||
* @note 只在群类型为 Community 时有效
|
||||
*/
|
||||
@property(nonatomic,assign) BOOL isSupportTopic;
|
||||
|
||||
/**
|
||||
* 群名称
|
||||
*
|
||||
* @note 群名称最长 100 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* groupName;
|
||||
|
||||
/**
|
||||
* 群公告
|
||||
*
|
||||
* @note 群公告最长 400 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* notification;
|
||||
|
||||
/**
|
||||
* 群简介
|
||||
*
|
||||
* @note 群简介最长 400 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* introduction;
|
||||
|
||||
/**
|
||||
* 群头像
|
||||
*
|
||||
* @note 群头像 URL 最长 500 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* faceURL;
|
||||
|
||||
/// 是否全员禁言
|
||||
@property(nonatomic,assign) BOOL allMuted;
|
||||
|
||||
///设置群自定义字段需要两个步骤:
|
||||
///1.在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群自定义字段) 配置群自定义字段的 key 值,Key 为 String 类型,长度不超过 16 字节。
|
||||
///2.调用 setGroupInfo 接口设置该字段,value 为 NSData 数据,长度不超过 512 字节。
|
||||
///@note 该字段主要用于 V1 和 V2 版本的兼容,如果您直接使用的是 V2 版本的 API ,建议使用 initGroupAttributes 接口设置群属性,其设置更灵活(无需控制台配置),支持的存储也更大(最大支持 16K)
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *>* customInfo;
|
||||
|
||||
/// 群创建人/管理员
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *owner;
|
||||
|
||||
/// 创建群组的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint32_t createTime;
|
||||
|
||||
/// 申请进群是否需要管理员审批:工作群(Work)默认值为 V2TIM_GROUP_ADD_FORBID,即默认不允许申请入群,您可以修改该字段打开申请入群方式。
|
||||
@property(nonatomic,assign) V2TIMGroupAddOpt groupAddOpt;
|
||||
|
||||
/// 邀请进群是否需要管理员审批 (从 7.1 版本开始支持)
|
||||
/// - 除工作群(Work)之外的其他群类型默认值都为 V2TIM_GROUP_ADD_FORBID,即默认不允许邀请入群,您可以修改该字段打开邀请入群方式。
|
||||
/// - 直播群、社群和话题默认不允许邀请入群,也不支持修改。
|
||||
@property(nonatomic,assign) V2TIMGroupAddOpt groupApproveOpt;
|
||||
|
||||
/// 上次修改群信息的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint32_t lastInfoTime;
|
||||
|
||||
/// 群最近一次发消息时间
|
||||
@property(nonatomic,assign,readonly) uint32_t lastMessageTime;
|
||||
|
||||
/// 已加入的群成员数量
|
||||
@property(nonatomic,assign,readonly) uint32_t memberCount;
|
||||
|
||||
/// 在线的群成员数量(待废弃字段,请使用 getGroupOnlineMemberCount:succ:fail: 接口获取群在线人数)
|
||||
@property(nonatomic,assign,readonly) uint32_t onlineCount __attribute__((deprecated("use getGroupOnlineMemberCount:succ:fail: instead")));
|
||||
|
||||
/// 最多允许加入的群成员数量
|
||||
/// @note 各类群成员人数限制详见: https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E9.99.90.E5.88.B6.E5.B7.AE.E5.BC.82
|
||||
@property(nonatomic,assign,readonly) uint32_t memberMaxCount;
|
||||
|
||||
/// 当前用户在此群组中的角色(V2TIMGroupMemberRole),切换角色请调用 setGroupMemberRole 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t role;
|
||||
|
||||
/// 当前用户在此群组中的消息接收选项,修改群消息接收选项请调用 setGroupReceiveMessageOpt 接口
|
||||
@property(nonatomic,assign,readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/// 当前用户加入此群的 UTC 时间戳,不支持设置,系统自动生成
|
||||
@property(nonatomic,assign,readonly) uint32_t joinTime;
|
||||
|
||||
/// 是否开启权限组能力,仅支持社群,7.8 版本开始支持
|
||||
/// 开启后,管理员角色的权限失效,用群权限、话题权限和权限组能力来对社群、话题进行管理。
|
||||
@property(nonatomic,assign) BOOL enablePermissionGroup;
|
||||
|
||||
/// 群权限,仅支持社群,7.8 版本开始支持
|
||||
/// 群成员在没有加入任何权限组时的默认权限,仅在 enablePermissionGroup = true 打开权限组之后生效
|
||||
@property(nonatomic,assign) uint64_t defaultPermissions;
|
||||
|
||||
@end
|
||||
|
||||
/// 获取群组资料结果
|
||||
V2TIM_EXPORT @interface V2TIMGroupInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong) V2TIMGroupInfo *info;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群申请信息(可以通过 getGroupApplicationList 获取,不支持由客户自行创建)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群申请信息
|
||||
V2TIM_EXPORT @interface V2TIMGroupApplication : NSObject
|
||||
|
||||
/// 群组 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* groupID;
|
||||
|
||||
/// 请求者 userID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* fromUser;
|
||||
|
||||
/// 请求者昵称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* fromUserNickName;
|
||||
|
||||
/// 请求者头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* fromUserFaceUrl;
|
||||
|
||||
/// 判决者id,有人请求加群:0,邀请其他人加群:被邀请人用户 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* toUser;
|
||||
|
||||
/// 申请时间
|
||||
@property(nonatomic,assign,readonly) uint64_t addTime;
|
||||
|
||||
/// 申请或邀请附加信息
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* requestMsg;
|
||||
|
||||
/// 审批信息:同意或拒绝信息
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* handledMsg;
|
||||
|
||||
/// 请求类型
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationType applicationType;
|
||||
|
||||
/// 处理标志
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationHandleStatus handleStatus;
|
||||
|
||||
/// 处理结果
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationHandleResult handleResult;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 邀请其他人入群的操作结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 邀请其他人入群的操作结果
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberOperationResult : NSObject
|
||||
|
||||
/// 被操作成员
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回状态
|
||||
@property(nonatomic,assign) V2TIMGroupMemberResult result;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 创建群时指定群成员
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 创建群时指定群成员
|
||||
V2TIM_EXPORT @interface V2TIMCreateGroupMemberInfo : NSObject
|
||||
|
||||
/// 被操作成员
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/** 群成员类型,需要注意一下事项:
|
||||
* 1. role 不设置或则设置为 V2TIM_GROUP_MEMBER_UNDEFINED,进群后默认为群成员。
|
||||
* 2. 工作群(Work)不支持设置 role 为管理员。
|
||||
* 3. 所有的群都不支持设置 role 为群主。
|
||||
*/
|
||||
@property(nonatomic,assign) uint32_t role;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 加群申请列表(包含已处理和待处理的)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 加群申请列表
|
||||
V2TIM_EXPORT @interface V2TIMGroupApplicationResult : NSObject
|
||||
|
||||
/// 未读的申请数量
|
||||
@property(nonatomic,assign) uint64_t unreadCount;
|
||||
|
||||
/// 加群申请的列表
|
||||
@property(nonatomic,strong) NSMutableArray<V2TIMGroupApplication *> * applicationList;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMGroupSearchParam : NSObject
|
||||
/// 搜索关键字列表,最多支持5个。
|
||||
/// 如果是本地搜索,您需主动设置 keyword 是否匹配群 ID、群名称。
|
||||
/// 如果是云端搜索,keyword 会自动匹配群 ID、群名称。
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 设置是否搜索群 ID(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchGroupID;
|
||||
|
||||
/// 设置是否搜索群名称(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchGroupName;
|
||||
|
||||
/// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索(仅云端搜索有效)
|
||||
/// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
|
||||
@property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
|
||||
|
||||
/// 设置每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20,仅云端搜索有效)
|
||||
@property(nonatomic,assign) NSUInteger searchCount;
|
||||
|
||||
/// 设置每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMGroupSearchResult 中的返回值(仅云端搜索有效)
|
||||
@property(nonatomic,strong) NSString *searchCursor;
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMGroupSearchResult : NSObject
|
||||
/// 满足搜索条件的群列表是否已经全部返回
|
||||
@property(nonatomic,assign) BOOL isFinished;
|
||||
|
||||
/// 满足搜索条件的群总数量
|
||||
@property(nonatomic,assign) NSUInteger totalCount;
|
||||
|
||||
/// 下一次云端搜索的起始位置
|
||||
@property(nonatomic,strong,nullable) NSString *nextCursor;
|
||||
|
||||
/// 当前一次云端搜索返回的群列表
|
||||
@property(nonatomic,strong) NSArray<V2TIMGroupInfo *> *groupList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群成员搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberSearchParam : NSObject
|
||||
/// 搜索关键字列表,最多支持 5 个
|
||||
/// 如果是本地搜索,您需主动设置 keyword 是否匹配群成员 ID、昵称、备注、群名片。
|
||||
/// 如果是云端搜索,keyword 会自动匹配群成员 ID、昵称、群名片。
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 指定群 ID 列表,若为 null 则搜索全部群中的群成员
|
||||
@property(nonatomic, strong,nullable) NSArray<NSString *> *groupIDList;
|
||||
|
||||
/// 设置是否搜索群成员 userID(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberUserID;
|
||||
|
||||
/// 设置是否搜索群成员昵称(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberNickName;
|
||||
|
||||
/// 设置是否搜索群成员备注(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberRemark;
|
||||
|
||||
/// 设置是否搜索群成员名片(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberNameCard;
|
||||
|
||||
/// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索(仅云端搜索有效)
|
||||
/// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
|
||||
@property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
|
||||
|
||||
/// 设置每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20,仅云端搜索有效)
|
||||
@property(nonatomic,assign) NSUInteger searchCount;
|
||||
|
||||
/// 设置每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMGroupMemberSearchResult 中的返回值(仅云端搜索有效)
|
||||
@property(nonatomic,strong) NSString *searchCursor;
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberSearchResult : NSObject
|
||||
/// 满足搜索条件的群成员列表是否已经全部返回
|
||||
@property(nonatomic,assign) BOOL isFinished;
|
||||
|
||||
/// 满足搜索条件的群成员总数量
|
||||
@property(nonatomic,assign) NSUInteger totalCount;
|
||||
|
||||
/// 下一次云端搜索的起始位置
|
||||
@property(nonatomic,strong,nullable) NSString *nextCursor;
|
||||
|
||||
/// 当前一次云端搜索返回的群成员列表
|
||||
@property(nonatomic,strong) NSDictionary<NSString *, NSArray<V2TIMGroupMemberFullInfo *> *> *memberList;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,43 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+LiveActivity
|
||||
//
|
||||
// 消息 LiveActivity 推送接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
@class V2TIMLiveActivityConfig;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (LiveActivity)
|
||||
|
||||
/**
|
||||
* 1.1 设置 LiveActivity 远端推送配置;当 config 为 nil 时,清除所有的远端推送配置
|
||||
*/
|
||||
- (void)setLiveActivity:(V2TIMLiveActivityConfig * _Nullable)config succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setLiveActivity(config:succ:fail:));
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMLiveActivityConfig : NSObject
|
||||
|
||||
/**
|
||||
* 创建 LiveActivity 时自定义的 activityID,用来标识该 LiveActivity
|
||||
*/
|
||||
@property(nonatomic,strong) NSString *activityID;
|
||||
|
||||
/**
|
||||
* LiveActivity token
|
||||
*/
|
||||
@property (nonatomic, strong, nullable) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台上传的 P8 证书 ID
|
||||
*/
|
||||
@property (nonatomic, assign) int businessID;
|
||||
|
||||
@end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,168 @@
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 信令
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 信令信息
|
||||
@class V2TIMSignalingInfo;
|
||||
/// 信令监听
|
||||
V2TIM_EXPORT @protocol V2TIMSignalingListener;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Signaling)
|
||||
|
||||
/**
|
||||
* 获取信令信息成功回调
|
||||
*/
|
||||
typedef void (^V2TIMSignalingInfoSucc)(V2TIMSignalingInfo * signalInfo);
|
||||
|
||||
/**
|
||||
* 添加信令监听
|
||||
*/
|
||||
- (void)addSignalingListener:(id<V2TIMSignalingListener>)listener NS_SWIFT_NAME(addSignalingListener(listener:));
|
||||
|
||||
/**
|
||||
* 移除信令监听
|
||||
*/
|
||||
- (void)removeSignalingListener:(id<V2TIMSignalingListener>)listener NS_SWIFT_NAME(removeSignalingListener(listener:));
|
||||
|
||||
/**
|
||||
* 邀请某个人
|
||||
*
|
||||
* @param invitee 被邀请人用户 ID
|
||||
* @param data 自定义数据
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
|
||||
* @param onlineUserOnly 是否只有在线用户才能收到邀请,如果设置为 YES,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)。
|
||||
* @param offlinePushInfo 苹果 APNS 离线推送时携带的标题和声音,其中 desc 为必填字段,推送的时候会默认展示 desc 信息。
|
||||
* @return inviteID 邀请 ID,如果邀请失败,返回 nil
|
||||
*
|
||||
*/
|
||||
- (NSString* _Nullable)invite:(NSString *)invitee
|
||||
data:(NSString * _Nullable)data
|
||||
onlineUserOnly:(BOOL)onlineUserOnly
|
||||
offlinePushInfo:(V2TIMOfflinePushInfo * _Nullable)offlinePushInfo
|
||||
timeout:(int)timeout
|
||||
succ:(_Nullable V2TIMSucc)succ
|
||||
fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(invite(invitee:data:onlineUserOnly:offlinePushInfo:timeout:succ:fail:));
|
||||
/**
|
||||
* 邀请群内的某些人
|
||||
*
|
||||
* @param groupID 发起邀请所在群组
|
||||
* @param inviteeList 被邀请人列表,inviteeList 必须已经在 groupID 群里,否则邀请无效
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
|
||||
* @param onlineUserOnly 是否只有在线用户才能收到邀请,如果设置为 YES,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)。
|
||||
* @return inviteID 邀请 ID,如果邀请失败,返回 nil
|
||||
*
|
||||
* @note 群邀请暂不支持离线推送,如果您需要离线推送,可以针对被邀请的用户单独发离线推送自定义消息。
|
||||
*/
|
||||
- (NSString* _Nullable)inviteInGroup:(NSString *)groupID
|
||||
inviteeList:(NSArray *)inviteeList
|
||||
data:(NSString * _Nullable)data
|
||||
onlineUserOnly:(BOOL)onlineUserOnly
|
||||
timeout:(int)timeout
|
||||
succ:(_Nullable V2TIMSucc)succ
|
||||
fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(inviteInGroup(groupID:inviteeList:data:onlineUserOnly:timeout:succ:fail:));
|
||||
|
||||
/**
|
||||
* 邀请方取消邀请
|
||||
*
|
||||
* @param inviteID 邀请 ID
|
||||
*
|
||||
* @note 如果所有被邀请人都已经处理了当前邀请(包含超时),不能再取消当前邀请。
|
||||
*/
|
||||
- (void)cancel:(NSString *)inviteID data:(NSString * _Nullable)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(cancel(inviteID:data:succ:fail:));
|
||||
|
||||
/**
|
||||
* 接收方接受邀请
|
||||
*
|
||||
* @note 不能接受不是针对自己的邀请,请在收到 onReceiveNewInvitation 回调的时候先判断 inviteeList 有没有自己,如果没有自己,不能 accept 邀请。
|
||||
*/
|
||||
- (void)accept:(NSString *)inviteID data:(NSString * _Nullable)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(accept(inviteID:data:succ:fail:));
|
||||
|
||||
/**
|
||||
* 接收方拒绝邀请
|
||||
*
|
||||
* @note 不能拒绝不是针对自己的邀请,请在收到 onReceiveNewInvitation 回调的时候先判断 inviteeList 有没有自己,如果没有自己,不能 reject 邀请。
|
||||
*/
|
||||
- (void)reject:(NSString *)inviteID data:(NSString * _Nullable)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(reject(inviteID:data:succ:fail:));
|
||||
|
||||
/**
|
||||
* 获取信令信息
|
||||
*
|
||||
* 如果 invite 设置 onlineUserOnly 为 NO,每次信令操作(包括 invite、cancel、accept、reject、timeout)都会产生一条自定义消息,该消息会通过 V2TIMAdvancedMsgListener -> onRecvNewMessage 抛给用户,用户也可以通过历史消息拉取,如果需要根据信令信息做自定义化文本展示,可以调用下面接口获取信令信息。
|
||||
*
|
||||
* @param msg 消息对象
|
||||
* @return V2TIMSignalingInfo 信令信息,如果为 nil,则 msg 不是一条信令消息。
|
||||
*/
|
||||
- (V2TIMSignalingInfo * _Nullable)getSignallingInfo:(V2TIMMessage *)msg NS_SWIFT_NAME(getSignallingInfo(msg:));
|
||||
|
||||
/**
|
||||
* 添加邀请信令
|
||||
*
|
||||
* 主要用于邀请者在被邀请者离线期间,发送了群聊邀请,被邀请者上线后将该信令同步给 SDK,从而正常使用信令功能。
|
||||
*
|
||||
* 当被邀请者点击离线推送提示,拉起 App 时:
|
||||
* 1. 如果被邀请者离线期间,邀请者发送的是 1V1 信令,SDK 可以自动同步邀请信令。邀请未超时,回调 onReceiveNewInvitation。
|
||||
* 2. 如果被邀请者离线期间,邀请者发送的是群聊信令,不同 SDK 版本表现如下:
|
||||
* - 6.7 以前的版本:
|
||||
* SDK 无法自动同步邀请信令(信令本质上就是一条自定义消息,群离线消息在程序启动后无法自动同步)。
|
||||
* 如果被邀请者需要处理该邀请信令,可以让邀请者在发起信令时,向每个被邀请者额外发送一条 C2C 离线推送消息,消息携带 V2TIMSignalingInfo 信息。
|
||||
* 被邀请者收到离线推送时通过 addInvitedSignaling 将 V2TIMSignalingInfo 信息告知 SDK。
|
||||
* - 6.7 及以后的版本:
|
||||
* SDK 会自动同步最近 30 秒的消息。如果其中包含了未超时的邀请信令,回调 onReceiveNewInvitation。您无需再调用本接口同步邀请信令。
|
||||
*
|
||||
* @note 如果添加的信令信息已存在,fail callback 会抛 ERR_SDK_SIGNALING_ALREADY_EXISTS 错误码。
|
||||
*/
|
||||
- (void)addInvitedSignaling:(V2TIMSignalingInfo *)signallingInfo succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(addInvitedSignaling(signallingInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 修改邀请信令(6.7 及其以上版本支持)
|
||||
*
|
||||
* @note 仅支持修改邀请信令的自定义字段 data。只有在线用户才能收到的邀请信令不能被修改。
|
||||
*/
|
||||
- (void)modifyInvitation:(NSString *)inviteID data:(NSString *)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(modifyInvitation(inviteID:data:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMSignalingListener <NSObject>
|
||||
@optional
|
||||
/// 收到邀请的回调
|
||||
-(void)onReceiveNewInvitation:(NSString *)inviteID inviter:(NSString * _Nullable)inviter groupID:(NSString * _Nullable)groupID inviteeList:(NSArray<NSString *> *)inviteeList data:(NSString * _Nullable)data NS_SWIFT_NAME(onReceiveNewInvitation(inviteID:inviter:groupID:inviteeList:data:));
|
||||
|
||||
/// 被邀请者接受邀请
|
||||
-(void)onInviteeAccepted:(NSString *)inviteID invitee:(NSString * _Nullable)invitee data:(NSString * _Nullable)data NS_SWIFT_NAME(onInviteeAccepted(inviteID:invitee:data:));
|
||||
|
||||
/// 被邀请者拒绝邀请
|
||||
-(void)onInviteeRejected:(NSString *)inviteID invitee:(NSString * _Nullable)invitee data:(NSString * _Nullable)data NS_SWIFT_NAME(onInviteeRejected(inviteID:invitee:data:));
|
||||
|
||||
/// 邀请被取消
|
||||
-(void)onInvitationCancelled:(NSString *)inviteID inviter:(NSString * _Nullable)inviter data:(NSString * _Nullable)data NS_SWIFT_NAME(onInvitationCancelled(inviteID:inviter:data:));
|
||||
|
||||
/// 邀请超时
|
||||
-(void)onInvitationTimeout:(NSString *)inviteID inviteeList:(NSArray<NSString *> *)inviteeList NS_SWIFT_NAME(onInvitationTimeout(inviteID:inviteeList:));
|
||||
|
||||
/// 邀请被修改(6.7 及其以上版本支持)
|
||||
-(void)onInvitationModified:(NSString *)inviteID data:(NSString * _Nullable)data NS_SWIFT_NAME(onInvitationModified(inviteID:data:));
|
||||
|
||||
@end
|
||||
|
||||
|
||||
// 操作类型
|
||||
typedef NS_ENUM(NSInteger,SignalingActionType) {
|
||||
SignalingActionType_Invite = 1, // 邀请方发起邀请
|
||||
SignalingActionType_Cancel_Invite = 2, // 邀请方取消邀请
|
||||
SignalingActionType_Accept_Invite = 3, // 被邀请方接受邀请
|
||||
SignalingActionType_Reject_Invite = 4, // 被邀请方拒绝邀请
|
||||
SignalingActionType_Invite_Timeout = 5, // 邀请超时
|
||||
};
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMSignalingInfo : NSObject
|
||||
@property(nonatomic,strong,nullable) NSString *inviteID;
|
||||
@property(nonatomic,strong,nullable) NSString *groupID;
|
||||
@property(nonatomic,strong,nullable) NSString *inviter;
|
||||
@property(nonatomic,strong) NSMutableArray *inviteeList;
|
||||
@property(nonatomic,strong,nullable) NSString *data;
|
||||
@property(nonatomic,assign) uint32_t timeout;
|
||||
@property(nonatomic,assign) SignalingActionType actionType;
|
||||
@end
|
||||
@@ -0,0 +1,37 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+VOIP
|
||||
//
|
||||
// 消息 VoIP 推送接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
@class V2TIMVOIPConfig;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (VOIP)
|
||||
|
||||
/**
|
||||
* 1.1 设置 VoIP 推送
|
||||
*/
|
||||
- (void)setVOIP:(V2TIMVOIPConfig * _Nullable)config succ:(V2TIMSucc _Nullable)succ fail:(V2TIMFail _Nullable)fail NS_SWIFT_NAME(setVOIP(config:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMVOIPConfig : NSObject
|
||||
|
||||
/**
|
||||
* VoIP device token
|
||||
*/
|
||||
@property (nonatomic, strong, nullable) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台上传的 VoIP 证书 ID
|
||||
*/
|
||||
@property (nonatomic, assign) NSInteger certificateID;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,843 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager
|
||||
//
|
||||
// TIM SDK 2.0 版的接口,相比于 1.0 版本更加简洁易用,接入速度更快,高级特性接口详见:
|
||||
// - V2TIMManager+Message.h 消息相关的高级功能接口,比如图片消息,视频消息,消息撤回,消息已读等功能。
|
||||
// - V2TIMManager+APNS.h 推送相关的高级功能接口,主要用于开启消息推送功能。
|
||||
// - V2TIMManager+Conversation.h 会话相关的高级功能接口,一个会话对应一个聊天窗口。
|
||||
// - V2TIMManager+Group.h 群组相关的高级功能接口,比如邀请人进群,处理加群请求等功能。
|
||||
// - V2TIMManager+Friendship.h 关系链相关的高级功能接口,比如黑名单,好友列表等功能。
|
||||
// - V2TIMManager+Community.h 社群相关的高级功能接口,比如创建话题,话题列表等功能。
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef ImSDK_V2TIMManager_h
|
||||
#define ImSDK_V2TIMManager_h
|
||||
|
||||
#if defined(BUILD_V2TIM_SDK)
|
||||
#define V2TIM_EXPORT __attribute__((visibility("default")))
|
||||
#else
|
||||
#define V2TIM_EXPORT
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#define V2TIM_EXTERN extern "C" V2TIM_EXPORT
|
||||
#else
|
||||
#define V2TIM_EXTERN extern V2TIM_EXPORT
|
||||
#endif
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@class V2TIMSDKConfig;
|
||||
@class V2TIMUserInfo;
|
||||
@class V2TIMUserFullInfo;
|
||||
@class V2TIMUserSearchParam;
|
||||
@class V2TIMUserSearchResult;
|
||||
@class V2TIMGroupMemberInfo;
|
||||
@class V2TIMGroupMemberFullInfo;
|
||||
@class V2TIMGroupChangeInfo;
|
||||
@class V2TIMGroupMemberChangeInfo;
|
||||
@class V2TIMUserReceiveMessageOptInfo;
|
||||
@class V2TIMTopicInfo;
|
||||
@class V2TIMUserStatus;
|
||||
@class V2TIMReceiveMessageOptInfo;
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMSDKListener;
|
||||
V2TIM_EXPORT @protocol V2TIMSimpleMsgListener;
|
||||
V2TIM_EXPORT @protocol V2TIMGroupListener;
|
||||
|
||||
V2TIM_EXTERN NSString *const GroupType_Work;
|
||||
V2TIM_EXTERN NSString *const GroupType_Public;
|
||||
V2TIM_EXTERN NSString *const GroupType_Meeting;
|
||||
V2TIM_EXTERN NSString *const GroupType_AVChatRoom;
|
||||
V2TIM_EXTERN NSString *const GroupType_Community;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// V2TIMManager
|
||||
//
|
||||
// IMSDK 主核心类,负责 IMSDK 的初始化、登录、消息收发,建群退群等功能
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager : NSObject
|
||||
|
||||
/// 成功通用回调
|
||||
typedef void (^V2TIMSucc)(void);
|
||||
/// 失败通用回调
|
||||
typedef void (^V2TIMFail)(int code, NSString * _Nullable desc);
|
||||
/// 创建群组成功回调
|
||||
typedef void (^V2TIMCreateGroupSucc)(NSString * _Nullable groupID);
|
||||
/// 获取用户资料成功回调
|
||||
typedef void (^V2TIMUserFullInfoListSucc)(NSArray <V2TIMUserFullInfo *> *infoList);
|
||||
/// 搜索云端用户的结果回调
|
||||
typedef void (^V2TIMUserSearchResultSucc)(V2TIMUserSearchResult *searchResult);
|
||||
/// 实验性 API 接口成功回调
|
||||
typedef void (^V2TIMCallExperimentalAPISucc)(NSObject * _Nullable result);
|
||||
/// 获取用户状态列表成功回调
|
||||
typedef void (^V2TIMUserStatusListSucc)(NSArray<V2TIMUserStatus *> *result);
|
||||
|
||||
/// 登录状态
|
||||
typedef NS_ENUM(NSInteger, V2TIMLoginStatus) {
|
||||
V2TIM_STATUS_LOGINED = 1, ///< 已登录
|
||||
V2TIM_STATUS_LOGINING = 2, ///< 登录中
|
||||
V2TIM_STATUS_LOGOUT = 3, ///< 无登录
|
||||
};
|
||||
|
||||
/// 日志级别
|
||||
typedef NS_ENUM(NSInteger, V2TIMLogLevel) {
|
||||
V2TIM_LOG_NONE = 0, ///< 不输出任何 sdk log
|
||||
V2TIM_LOG_DEBUG = 3, ///< 输出 DEBUG,INFO,WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_INFO = 4, ///< 输出 INFO,WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_WARN = 5, ///< 输出 WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_ERROR = 6, ///< 输出 ERROR 级别的 log
|
||||
};
|
||||
|
||||
/// 消息优先级
|
||||
typedef NS_ENUM(NSInteger, V2TIMMessagePriority) {
|
||||
V2TIM_PRIORITY_DEFAULT = 0, ///< 默认
|
||||
V2TIM_PRIORITY_HIGH = 1, ///< 高优先级,一般用于礼物等重要消息
|
||||
V2TIM_PRIORITY_NORMAL = 2, ///< 常规优先级,一般用于普通消息
|
||||
V2TIM_PRIORITY_LOW = 3, ///< 低优先级,一般用于点赞消息
|
||||
};
|
||||
|
||||
/// 性别
|
||||
typedef NS_ENUM(NSInteger, V2TIMGender) {
|
||||
V2TIM_GENDER_UNKNOWN = 0, ///< 未知性别
|
||||
V2TIM_GENDER_MALE = 1, ///< 男性
|
||||
V2TIM_GENDER_FEMALE = 2, ///< 女性
|
||||
};
|
||||
|
||||
/// 好友验证方式
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendAllowType) {
|
||||
V2TIM_FRIEND_ALLOW_ANY = 0, ///< 同意任何用户加好友
|
||||
V2TIM_FRIEND_NEED_CONFIRM = 1, ///< 需要验证
|
||||
V2TIM_FRIEND_DENY_ANY = 2, ///< 拒绝任何人加好友
|
||||
};
|
||||
|
||||
/// 群成员角色
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberRole) {
|
||||
V2TIM_GROUP_MEMBER_UNDEFINED = 0, ///< 未定义(没有获取该字段)
|
||||
V2TIM_GROUP_MEMBER_ROLE_MEMBER = 200, ///< 群成员
|
||||
V2TIM_GROUP_MEMBER_ROLE_ADMIN = 300, ///< 群管理员
|
||||
V2TIM_GROUP_MEMBER_ROLE_SUPER = 400, ///< 群主
|
||||
};
|
||||
|
||||
/// 用户状态类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMUserStatusType) {
|
||||
V2TIM_USER_STATUS_UNKNOWN = 0, ///< 未知状态
|
||||
V2TIM_USER_STATUS_ONLINE = 1, ///< 在线状态
|
||||
V2TIM_USER_STATUS_OFFLINE = 2, ///< 离线状态
|
||||
V2TIM_USER_STATUS_UNLOGINED = 3, ///< 未登录(如主动调用 logout 接口,或者账号注册后还未登录)
|
||||
};
|
||||
|
||||
/// 搜索关键字匹配类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMKeywordListMatchType) {
|
||||
V2TIM_KEYWORD_LIST_MATCH_TYPE_OR = 0,
|
||||
V2TIM_KEYWORD_LIST_MATCH_TYPE_AND = 1
|
||||
};
|
||||
|
||||
/// 日志回调
|
||||
typedef void (^V2TIMLogListener)(V2TIMLogLevel logLevel, NSString * _Nullable logContent);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 初始化
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 获取 V2TIMManager 管理器实例
|
||||
*/
|
||||
+ (V2TIMManager*)sharedInstance;
|
||||
/**
|
||||
* 1.2 初始化 SDK
|
||||
*
|
||||
* @param sdkAppID 应用 ID,必填项,可以在 [控制台](https://console.cloud.tencent.com/im) 中获取
|
||||
* @param config 配置信息
|
||||
* @return YES:成功;NO:失败
|
||||
*/
|
||||
- (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config;
|
||||
|
||||
/**
|
||||
* 1.3 添加 IM 监听
|
||||
*/
|
||||
- (void)addIMSDKListener:(id<V2TIMSDKListener>)listener NS_SWIFT_NAME(addIMSDKListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.4 移除 IM 监听
|
||||
*/
|
||||
- (void)removeIMSDKListener:(id<V2TIMSDKListener>)listener NS_SWIFT_NAME(removeIMSDKListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.5 反初始化 SDK
|
||||
*/
|
||||
- (void)unInitSDK;
|
||||
|
||||
/**
|
||||
* 1.6 获取版本号
|
||||
*
|
||||
* @return 返回版本号,字符串表示,例如 5.0.10
|
||||
*/
|
||||
- (NSString*)getVersion;
|
||||
|
||||
/**
|
||||
* 1.7 获取服务器时间戳
|
||||
*
|
||||
* @return UTC 时间戳,单位 s
|
||||
*/
|
||||
- (uint64_t)getServerTime;
|
||||
|
||||
/**
|
||||
* 初始化 SDK(待废弃接口,请使用 initSDK 和 addIMSDKListener 接口)
|
||||
*/
|
||||
- (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config listener:(_Nullable id<V2TIMSDKListener>)listener __attribute__((deprecated("use initSDK:config: and addIMSDKListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 登录登出
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 登录
|
||||
*
|
||||
* 登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参考 [UserSig 后台 API](https://cloud.tencent.com/document/product/269/32688)。
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 登陆时票据过期:login 函数的 V2TIMFail 会返回 ERR_USER_SIG_EXPIRED(6206)或者 ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001) 错误码,此时请您生成新的 userSig 重新登录。
|
||||
* - 在线时票据过期:用户在线期间也可能收到 V2TIMSDKListener -> onUserSigExpired 回调,此时也是需要您生成新的 userSig 并重新登录。
|
||||
* - 在线时被踢下线:用户在线情况下被踢,SDK 会通过 V2TIMSDKListener -> onKickedOffline 回调通知给您,此时可以 UI 提示用户,并再次调用 login() 重新登录。
|
||||
* - 同平台多设备在线:该功能为IM旗舰版功能,购买[旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17487)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17224#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)login:(NSString *)userID userSig:(NSString *)userSig succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(login(userID:userSig:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 登出
|
||||
*
|
||||
* 退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
|
||||
*/
|
||||
- (void)logout:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(logout(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 获取登录用户
|
||||
*/
|
||||
- (NSString * _Nullable)getLoginUser;
|
||||
|
||||
/**
|
||||
* 2.4 获取登录状态
|
||||
*
|
||||
* 如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。
|
||||
*/
|
||||
- (V2TIMLoginStatus)getLoginStatus;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 消息收发
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 3.1 设置基本消息(文本消息和自定义消息)的事件监听器
|
||||
*
|
||||
* @note 图片消息、视频消息、语音消息等高级消息的监听,请参考 V2TIMManager+Message.h -> addAdvancedMsgListener 接口。
|
||||
*/
|
||||
- (void)addSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(addSimpleMsgListener(listener:));
|
||||
|
||||
/**
|
||||
* 3.2 移除基本消息(文本消息和自定义消息)的事件监听器
|
||||
*/
|
||||
- (void)removeSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(removeSimpleMsgListener(listener:));
|
||||
|
||||
/**
|
||||
* 3.3 发送单聊普通文本消息(最大支持 12KB)
|
||||
*
|
||||
* 文本消息支持云端的脏词过滤,如果用户发送的消息中有敏感词,V2TIMFail 回调将会返回 80001 错误码。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendC2CTextMessage:(NSString *)text to:(NSString *)userID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendC2CTextMessage(text:to:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 发送单聊自定义(信令)消息(最大支持 12KB)
|
||||
*
|
||||
* 自定义消息本质就是一端二进制 buffer,您可以在其上自由组织自己的消息格式(常用于发送信令),但是自定义消息不支持云端敏感词过滤。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendC2CCustomMessage:(NSData *)customData to:(NSString *)userID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendC2CCustomMessage(customData:to:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 发送群聊普通文本消息(最大支持 12KB)
|
||||
*
|
||||
* @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
|
||||
* - HIGH :云端会优先传输,适用于在群里发送重要消息,比如主播发送的文本消息等。
|
||||
* - NORMAL :云端按默认优先级传输,适用于在群里发送普通消息,比如观众发送的弹幕消息等。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendGroupTextMessage:(NSString *)text to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendGroupTextMessage(text:to:priority:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 发送群聊自定义(信令)消息(最大支持 12KB)
|
||||
*
|
||||
* @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
|
||||
* - HIGH :云端会优先传输,适用于在群里发送重要信令,比如连麦邀请,PK邀请、礼物赠送等关键性信令。
|
||||
* - NORMAL :云端按默认优先级传输,适用于在群里发送非重要信令,比如观众的点赞提醒等等。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendGroupCustomMessage:(NSData *)customData to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendGroupCustomMessage(customData:to:priority:succ:fail:));
|
||||
|
||||
// 3.7 更多功能,详见 V2TIMManager+Message.h
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群相关操作
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 设置群组监听器
|
||||
*/
|
||||
- (void)addGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(addGroupListener(listener:));
|
||||
|
||||
/**
|
||||
* 4.2 设置群组监听器
|
||||
*/
|
||||
- (void)removeGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(removeGroupListener(listener:));
|
||||
|
||||
/**
|
||||
* 4.3 创建群组
|
||||
*
|
||||
* @param groupType 群类型,我们为您预定义好了几种常用的群类型,您也可以在控制台定义自己需要的群类型:
|
||||
* - "Work" :工作群,成员上限 200 人,不支持由用户主动加入,需要他人邀请入群,适合用于类似微信中随意组建的工作群(对应老版本的 Private 群)。
|
||||
* - "Public" :公开群,成员上限 2000 人,任何人都可以申请加群,但加群需群主或管理员审批,适合用于类似 QQ 中由群主管理的兴趣群。
|
||||
* - "Meeting" :会议群,成员上限 6000 人,任何人都可以自由进出,且加群无需被审批,适合用于视频会议和在线培训等场景(对应老版本的 ChatRoom 群)。
|
||||
* - "Community" :社群,成员上限 100000 人,任何人都可以自由进出,且加群无需被审批,适合用于知识分享和游戏交流等超大社区群聊场景。5.8 版本开始支持,需要您购买旗舰版套餐。
|
||||
* - "AVChatRoom" :直播群,人数无上限,任何人都可以自由进出,消息吞吐量大,适合用作直播场景中的高并发弹幕聊天室。
|
||||
*
|
||||
* @param groupID 自定义群组 ID,可以传 nil。传 nil 时系统会自动分配 groupID,并通过 succ 回调返回。
|
||||
* "Community" 类型自定义群组 ID 必须以 "@TGS#_" 作为前缀。
|
||||
* @param groupName 群名称,不能为 nil,最长 100 字节,使用 UTF-8 编码,1 个汉字占 3 个字节。
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 不支持在同一个 SDKAPPID 下创建两个相同 groupID 的群。
|
||||
* - 社群(Community)功能仅 5.8.1668 增强版及以上版本支持,需[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17213)并[申请开通](https://cloud.tencent.com/document/product/269/3916?from=17215)后方可使用。
|
||||
* - 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。
|
||||
*/
|
||||
- (void)createGroup:(NSString *)groupType groupID:(NSString* _Nullable)groupID groupName:(NSString *)groupName succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createGroup(groupType:groupID:groupName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.4 加入群组
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 工作群(Work):不能主动入群,只能通过群成员调用 V2TIMManager+Group.h -> inviteUserToGroup 接口邀请入群。
|
||||
* - 公开群(Public):申请入群后,需要管理员审批,管理员在收到 V2TIMGroupListener -> onReceiveJoinApplication 回调后调用 V2TIMManager+Group.h -> getGroupApplicationList 接口处理加群请求。
|
||||
* - 其他群:可以直接入群。
|
||||
* - 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。
|
||||
* - 直播群(AVChatRoom):直播群新成员可以查看入群前消息,该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17484)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17179#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)joinGroup:(NSString*)groupID msg:(NSString* _Nullable)msg succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(joinGroup(groupID:msg:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.5 退出群组
|
||||
*
|
||||
* @note 在公开群(Public)、会议(Meeting)和直播群(AVChatRoom)中,群主是不可以退群的,群主只能调用 dismissGroup 解散群组。
|
||||
*/
|
||||
- (void)quitGroup:(NSString*)groupID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(quitGroup(groupID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.6 解散群组
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 好友工作群(Work)的解散最为严格,即使群主也不能随意解散,只能由您的业务服务器调用 [解散群组 REST API](https://cloud.tencent.com/document/product/269/1624) 解散。
|
||||
* - 其他类型群的群主可以解散群组。
|
||||
*/
|
||||
- (void)dismissGroup:(NSString*)groupID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(dismissGroup(groupID:succ:fail:));
|
||||
|
||||
// 4.7 更多功能,详见 V2TIMManager+Group.h
|
||||
|
||||
/**
|
||||
* 设置群组监听器(待废弃接口,请使用 addGroupListener 和 removeGroupListener 接口)
|
||||
*/
|
||||
- (void)setGroupListener:(id<V2TIMGroupListener>)listener __attribute__((deprecated("use addGroupListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 资料相关操作
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 5.1 获取用户资料
|
||||
* @note
|
||||
* - 获取自己的资料,传入自己的 ID 即可。
|
||||
* - userIDList 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
*/
|
||||
- (void)getUsersInfo:(NSArray<NSString *> *)userIDList succ:(V2TIMUserFullInfoListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 5.2 修改个人资料
|
||||
*/
|
||||
- (void)setSelfInfo:(V2TIMUserFullInfo *)Info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setSelfInfo(info:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.3 订阅用户资料,从 7.4 版本开始支持
|
||||
*
|
||||
* @param userIDList 待订阅的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 该接口用于订阅陌生人的资料变更事件,订阅成功后,当订阅用户资料发生变更,您可以通过监听 onUserInfoChanged 回调来感知
|
||||
* - 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
|
||||
* - 自己的资料变更通知不需要订阅,默认会通过 onSelfInfoUpdated 回调通知给您
|
||||
* - 好友的资料变更通知不需要订阅,默认会通过 onFriendInfoChange 回调通知给您
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)subscribeUserInfo:(NSArray *)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(subscribeUserInfo(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.4 取消订阅用户资料,从 7.4 版本开始支持
|
||||
*
|
||||
* @param userIDList 需要取消订阅的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 当 userIDList 为空时,取消当前所有的订阅
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)unsubscribeUserInfo:(NSArray * _Nullable)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(unsubscribeUserInfo(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.5 搜索云端用户资料(8.4 及以上版本支持)
|
||||
* @param searchParam 用户搜索参数,详见 V2TIMUserSearchParam 的定义
|
||||
* @note
|
||||
* - 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
* - 如果您没有开通该服务,调用接口会返回 60020 错误码
|
||||
* - 该接口返回的是云端存储的用户资料,包括好友和非好友资料,您可以调用 checkFriend 接口来判断是否为好友。
|
||||
*/
|
||||
- (void)searchUsers:(V2TIMUserSearchParam *)searchParam succ:(V2TIMUserSearchResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchUsers(searchParam:succ:fail:));
|
||||
|
||||
|
||||
/**
|
||||
* 5.6 查询用户状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @param userIDList 需要获取的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 如果您想查询自己的自定义状态,您只需要传入自己的 userID 即可
|
||||
* - 当您批量查询时,接口只会返回查询成功的用户状态信息;当所有用户均查询失败时,接口会报错
|
||||
* - 查询其他用户状态为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getUserStatus:(NSArray *)userIDList succ:(V2TIMUserStatusListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getUserStatus(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.7 设置自己的状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @param status 待设置的自定义状态
|
||||
*
|
||||
* @note 该接口只支持设置自己的自定义状态,即 V2TIMUserStatus.customStatus
|
||||
*/
|
||||
- (void)setSelfStatus:(V2TIMUserStatus *)status succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setSelfStatus(status:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.8 订阅用户状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @param userIDList 待订阅的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 当成功订阅用户状态后,当对方的状态(包含在线状态、自定义状态)发生变更后,您可以监听 @onUserStatusChanged 回调来感知
|
||||
* - 如果您需要订阅好友列表的状态,您只需要在控制台上打开开关即可,无需调用该接口
|
||||
* - 该接口不支持订阅自己,您可以通过监听 @onUserStatusChanged 回调来感知自身的自定义状态的变更
|
||||
* - 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)subscribeUserStatus:(NSArray *)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(subscribeUserStatus(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.9 取消订阅用户状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @note
|
||||
* - 当 userIDList 为空或者 nil 时,取消当前所有的订阅
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)unsubscribeUserStatus:(NSArray * _Nullable)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(unsubscribeUserStatus(userIDList:succ:fail:));
|
||||
|
||||
// 5.10 更多功能,详见 V2TIMManager+Friendship.h
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 扩展接口
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 6.1 实验性 API 接口
|
||||
*
|
||||
* @param api 接口名称
|
||||
* @param param 接口参数
|
||||
*
|
||||
* @note 该接口提供一些实验性功能
|
||||
*/
|
||||
- (void)callExperimentalAPI:(NSString *)api
|
||||
param:(NSObject * _Nullable)param
|
||||
succ:(V2TIMCallExperimentalAPISucc)succ
|
||||
fail:(V2TIMFail)fail NS_SWIFT_NAME(callExperimentalAPI(api:param:succ:fail:));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 主核心回调,帮助您时刻关注 IMSDK 的在线状态
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 主核心回调
|
||||
V2TIM_EXPORT @protocol V2TIMSDKListener <NSObject>
|
||||
@optional
|
||||
/// SDK 正在连接到服务器
|
||||
- (void)onConnecting;
|
||||
|
||||
/// SDK 已经成功连接到服务器
|
||||
- (void)onConnectSuccess;
|
||||
|
||||
/// SDK 连接服务器失败
|
||||
- (void)onConnectFailed:(int)code err:(NSString* _Nullable)err;
|
||||
|
||||
/// 当前用户被踢下线,此时可以 UI 提示用户,并再次调用 V2TIMManager 的 login() 函数重新登录。
|
||||
- (void)onKickedOffline;
|
||||
|
||||
/// 在线时票据过期:此时您需要生成新的 userSig 并再次调用 V2TIMManager 的 login() 函数重新登录。
|
||||
- (void)onUserSigExpired;
|
||||
|
||||
/// 当前用户的资料发生了更新
|
||||
- (void)onSelfInfoUpdated:(V2TIMUserFullInfo *)Info NS_SWIFT_NAME(onSelfInfoUpdated(info:));
|
||||
|
||||
/**
|
||||
* 用户状态变更通知
|
||||
*
|
||||
* @note 收到通知的情况:
|
||||
* 1. 订阅过的用户发生了状态变更(包括在线状态和自定义状态),会触发该回调
|
||||
* 2. 在 IM 控制台打开了好友状态通知开关,即使未主动订阅,当好友状态发生变更时,也会触发该回调
|
||||
* 3. 同一个账号多设备登录,当其中一台设备修改了自定义状态,所有设备都会收到该回调
|
||||
*/
|
||||
- (void)onUserStatusChanged:(NSArray<V2TIMUserStatus *> *)userStatusList NS_SWIFT_NAME(onUserStatusChanged(userStatusList:));
|
||||
|
||||
/**
|
||||
* 用户资料变更通知
|
||||
*
|
||||
* @note
|
||||
* 仅当通过 subscribeUserInfo 成功订阅的用户(仅限非好友用户)的资料发生变更时,才会激活此回调函数
|
||||
*/
|
||||
- (void)onUserInfoChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList NS_SWIFT_NAME(onUserInfoChanged(userInfoList:));
|
||||
|
||||
/**
|
||||
* 全局消息接收选项变更通知
|
||||
*/
|
||||
- (void)onAllReceiveMessageOptChanged:(V2TIMReceiveMessageOptInfo *)receiveMessageOptInfo NS_SWIFT_NAME(onAllReceiveMessageOptChanged(receiveMessageOptInfo:));
|
||||
|
||||
/**
|
||||
* 实验性事件通知
|
||||
*/
|
||||
- (void)onExperimentalNotify:(NSString *)key param:(NSObject * _Nullable)param NS_SWIFT_NAME(onExperimentalNotify(key:param:));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 基本消息回调 (高级消息请参考 V2TIMManager+Message.h -> V2TIMAdvancedMsgListener)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 基本消息回调
|
||||
V2TIM_EXPORT @protocol V2TIMSimpleMsgListener <NSObject>
|
||||
@optional
|
||||
|
||||
/// 收到 C2C 文本消息
|
||||
- (void)onRecvC2CTextMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info text:(NSString * _Nullable)text NS_SWIFT_NAME(onRecvC2CTextMessage(msgID:sender:text:));
|
||||
|
||||
/// 收到 C2C 自定义(信令)消息
|
||||
- (void)onRecvC2CCustomMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info customData:(NSData * _Nullable)data NS_SWIFT_NAME(onRecvC2CCustomMessage(msgID:sender:customData:));
|
||||
|
||||
/// 收到群文本消息
|
||||
- (void)onRecvGroupTextMessage:(NSString *)msgID groupID:(NSString * _Nullable)groupID sender:(V2TIMGroupMemberInfo *)info text:(NSString * _Nullable)text NS_SWIFT_NAME(onRecvGroupTextMessage(msgID:groupID:sender:text:));
|
||||
|
||||
/// 收到群自定义(信令)消息
|
||||
- (void)onRecvGroupCustomMessage:(NSString *)msgID groupID:(NSString * _Nullable)groupID sender:(V2TIMGroupMemberInfo *)info customData:(NSData * _Nullable)data NS_SWIFT_NAME(onRecvGroupCustomMessage(msgID:groupID:sender:customData:));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 群组事件回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 群组事件回调
|
||||
V2TIM_EXPORT @protocol V2TIMGroupListener <NSObject>
|
||||
@optional
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群成员相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新成员加入群(该群所有的成员都能收到)
|
||||
/// 会议群(Meeting)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员变更通知) 主动配置。
|
||||
- (void)onMemberEnter:(NSString * _Nullable)groupID memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList NS_SWIFT_NAME(onMemberEnter(groupID:memberList:));
|
||||
|
||||
/// 有成员离开群(该群所有的成员都能收到)
|
||||
/// 会议群(Meeting)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员变更通知) 主动配置。
|
||||
- (void)onMemberLeave:(NSString * _Nullable)groupID member:(V2TIMGroupMemberInfo *)member NS_SWIFT_NAME(onMemberLeave(groupID:member:));
|
||||
|
||||
/// 某成员被拉入某群(该群所有的成员都能收到)
|
||||
- (void)onMemberInvited:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList NS_SWIFT_NAME(onMemberInvited(groupID:opUser:memberList:));
|
||||
|
||||
/// 有成员被踢出某群(该群所有的成员都能收到)
|
||||
- (void)onMemberKicked:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList NS_SWIFT_NAME(onMemberKicked(groupID:opUser:memberList:));
|
||||
|
||||
/// 某成员信息发生变更(该群所有的成员都能收到)
|
||||
/// 会议群(Meeting)和直播群(AVChatRoom)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员资料变更通知) 主动配置。
|
||||
- (void)onMemberInfoChanged:(NSString * _Nullable)groupID changeInfoList:(NSArray <V2TIMGroupMemberChangeInfo *> *)changeInfoList NS_SWIFT_NAME(onMemberInfoChanged(groupID:changeInfoList:));
|
||||
|
||||
/// 群组全体成员被禁言/解除禁言了(该群所有的成员都能收到)
|
||||
/// 需要提前在 [控制台](https://console.cloud.tencent.com/im) 开启通知开关。开关路径:功能配置 -> 群组配置 -> 群系统通知配置 -> 群资料变更通知 -> 群禁言变更通知。
|
||||
/// 7.5 及以上版本支持。
|
||||
- (void)onAllGroupMembersMuted:(NSString * _Nullable)groupID isMute:(BOOL)isMute NS_SWIFT_NAME(onAllGroupMembersMuted(groupID:isMute:));
|
||||
|
||||
/// 有成员被标记(该群所有的成员都能收到)
|
||||
/// 仅社群(Community)支持该回调。
|
||||
/// 7.5 及以上版本支持,需要您购买旗舰版套餐。
|
||||
- (void)onMemberMarkChanged:(NSString * _Nullable)groupID memberIDList:(NSArray<NSString *> *)memberIDList markType:(int)markType enableMark:(BOOL)enableMark NS_SWIFT_NAME(onMemberMarkChanged(groupID:memberIDList:markType:enableMark:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群生命周期相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新的群创建(创建者能收到,应用于多端消息同步的场景)
|
||||
- (void)onGroupCreated:(NSString * _Nullable)groupID NS_SWIFT_NAME(onGroupCreated(groupID:));
|
||||
|
||||
/// 某个已加入的群被解散了(该群所有的成员都能收到)
|
||||
- (void)onGroupDismissed:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser NS_SWIFT_NAME(onGroupDismissed(groupID:opUser:));
|
||||
|
||||
/// 某个已加入的群被回收了(该群所有的成员都能收到)
|
||||
- (void)onGroupRecycled:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser NS_SWIFT_NAME(onGroupRecycled(groupID:opUser:));
|
||||
|
||||
/// 某个已加入的群的信息被修改了(该群所有的成员都能收到)
|
||||
/// 以下字段的修改可能会引发该通知 groupName & introduction & notification & faceUrl & owner & allMute & custom
|
||||
/// 控制指定字段 下发通知/存漫游 请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群资料变更通知) 主动配置。
|
||||
- (void)onGroupInfoChanged:(NSString * _Nullable)groupID changeInfoList:(NSArray <V2TIMGroupChangeInfo *> *)changeInfoList NS_SWIFT_NAME(onGroupInfoChanged(groupID:changeInfoList:));
|
||||
|
||||
/// 某个已加入的群的属性被修改了,会返回所在群组的所有属性(该群所有的成员都能收到)
|
||||
- (void)onGroupAttributeChanged:(NSString *)groupID attributes:(NSMutableDictionary<NSString *,NSString *> *)attributes;
|
||||
|
||||
/// 某个已加入的群的计数器被修改了,会返回当前变更的群计数器(该群所有的成员都能收到)
|
||||
- (void)onGroupCounterChanged:(NSString * _Nullable)groupID key:(NSString *)key newValue:(NSInteger)newValue NS_SWIFT_NAME(onGroupCounterChanged(groupID:key:newValue:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 加群申请相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新的加群请求(只有群主和管理员会收到)
|
||||
- (void)onReceiveJoinApplication:(NSString * _Nullable)groupID member:(V2TIMGroupMemberInfo *)member opReason:(NSString * _Nullable)opReason NS_SWIFT_NAME(onReceiveJoinApplication(groupID:member:opReason:));
|
||||
|
||||
/// 加群或者邀请加群请求已经被群主或管理员处理了(只有申请人能够收到)
|
||||
- (void)onApplicationProcessed:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser opResult:(BOOL)isAgreeJoin opReason:(NSString * _Nullable)opReason NS_SWIFT_NAME(onApplicationProcessed(groupID:opUser:opResult:opReason:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 其他相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 指定管理员身份
|
||||
- (void)onGrantAdministrator:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList NS_SWIFT_NAME(onGrantAdministrator(groupID:opUser:memberList:));
|
||||
|
||||
/// 取消管理员身份
|
||||
- (void)onRevokeAdministrator:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList NS_SWIFT_NAME(onRevokeAdministrator(groupID:opUser:memberList:));
|
||||
|
||||
/// 自己主动退出群组(主要用于多端同步)
|
||||
- (void)onQuitFromGroup:(NSString * _Nullable)groupID NS_SWIFT_NAME(onQuitFromGroup(groupID:));
|
||||
|
||||
/// 收到 RESTAPI 下发的自定义系统消息
|
||||
- (void)onReceiveRESTCustomData:(NSString * _Nullable)groupID data:(NSData * _Nullable)data NS_SWIFT_NAME(onReceiveRESTCustomData(groupID:data:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 话题事件监听回调
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 话题创建回调
|
||||
- (void)onTopicCreated:(NSString * _Nullable)groupID topicID:(NSString * _Nullable)topicID NS_SWIFT_NAME(onTopicCreated(groupID:topicID:));
|
||||
|
||||
/// 话题被删除回调
|
||||
- (void)onTopicDeleted:(NSString * _Nullable)groupID topicIDList:(NSArray<NSString *> *)topicIDList NS_SWIFT_NAME(onTopicDeleted(groupID:topicIDList:));
|
||||
|
||||
/// 话题更新回调
|
||||
- (void)onTopicChanged:(NSString * _Nullable)groupID topicInfo:(V2TIMTopicInfo *)topicInfo NS_SWIFT_NAME(onTopicChanged(groupID:topicInfo:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 用户基本资料
|
||||
V2TIM_EXPORT @interface V2TIMUserInfo : NSObject
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,nullable) NSString* nickName;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,nullable) NSString* faceURL;
|
||||
@end
|
||||
|
||||
/// 用户详细资料
|
||||
V2TIM_EXPORT @interface V2TIMUserFullInfo : V2TIMUserInfo
|
||||
|
||||
/// 用户签名
|
||||
@property(nonatomic,strong,nullable) NSString *selfSignature;
|
||||
|
||||
/// 用户性别
|
||||
@property(nonatomic,assign) V2TIMGender gender;
|
||||
|
||||
/// 用户角色
|
||||
@property(nonatomic,assign) uint32_t role;
|
||||
|
||||
/// 用户等级
|
||||
@property(nonatomic,assign) uint32_t level;
|
||||
|
||||
/// 出生日期
|
||||
@property(nonatomic,assign) uint32_t birthday;
|
||||
|
||||
/// 用户好友验证方式
|
||||
@property(nonatomic,assign) V2TIMFriendAllowType allowType;
|
||||
|
||||
/// 用户自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 用户自定义字段) 配置用户自定义字段,然后再调用该接口进行设置,key 值不需要加 Tag_Profile_Custom_ 前缀。
|
||||
@property(nonatomic,strong,nullable) NSDictionary<NSString *,NSData *> * customInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMUserSearchParam : NSObject
|
||||
/// 搜索的关键字列表,关键字列表最多支持 5 个,keyword 会自动匹配用户 ID、昵称。
|
||||
@property(nonatomic, strong,nullable) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索。
|
||||
/// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
|
||||
@property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
|
||||
|
||||
/// 用户性别(如果不设置,默认男性和女性都会返回)
|
||||
@property(nonatomic,assign) V2TIMGender gender;
|
||||
|
||||
/// 用户最小生日(如果不设置,默认值为 0)
|
||||
@property(nonatomic,assign) uint32_t minBirthday;
|
||||
|
||||
/// 用户最大生日(如果不设置,默认 birthday >= minBirthday 的用户都会返回)
|
||||
@property(nonatomic,assign) uint32_t maxBirthday;
|
||||
|
||||
/// 每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20)
|
||||
@property(nonatomic,assign) NSUInteger searchCount;
|
||||
|
||||
/// 每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMUserSearchResult 中的返回值。
|
||||
@property(nonatomic,strong) NSString *searchCursor;
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMUserSearchResult : NSObject
|
||||
/// 是否已经返回全部满足搜索条件的用户列表
|
||||
@property(nonatomic,assign) BOOL isFinished;
|
||||
|
||||
/// 满足搜索条件的用户总数量
|
||||
@property(nonatomic,assign) NSUInteger totalCount;
|
||||
|
||||
/// 下一次云端搜索的起始位置
|
||||
@property(nonatomic,strong,nullable) NSString *nextCursor;
|
||||
|
||||
/// 当前一次云端搜索返回的用户列表
|
||||
@property(nonatomic,strong) NSArray<V2TIMUserFullInfo *> *userList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户状态
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMUserStatus : NSObject
|
||||
|
||||
/// 用户的 ID
|
||||
@property (nonatomic, copy, readonly, nullable) NSString *userID;
|
||||
|
||||
/// 用户的状态
|
||||
@property (nonatomic, assign, readonly) V2TIMUserStatusType statusType;
|
||||
|
||||
/// 用户的自定义状态, 最大 100 字节
|
||||
@property (nonatomic, copy, nullable) NSString *customStatus;
|
||||
|
||||
/// 用户在线设备列表
|
||||
@property (nonatomic, strong, readonly) NSMutableArray<NSString *> *onlineDevices;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群成员资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群成员基本资料
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberInfo : NSObject
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* nickName;
|
||||
|
||||
/// 用户好友备注
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* friendRemark;
|
||||
|
||||
/// 群成员名片
|
||||
@property(nonatomic,strong,nullable) NSString* nameCard;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* faceURL;
|
||||
|
||||
/// 群成员在线终端列表
|
||||
@property(nonatomic,strong,readonly) NSMutableArray<NSString*>* onlineDevices;
|
||||
|
||||
@end
|
||||
|
||||
/// 群成员详细资料
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberFullInfo : V2TIMGroupMemberInfo
|
||||
/// 群成员自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群成员自定义字段) 配置用户自定义字段,然后再调用该接口进行设置。
|
||||
@property(nonatomic,strong,nullable) NSDictionary<NSString *,NSData *> * customInfo;
|
||||
|
||||
/// 群成员角色(V2TIMGroupMemberRole),修改群成员角色请调用 V2TIMManager+Group.h -> setGroupMemberRole 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t role;
|
||||
|
||||
/// 群成员禁言结束时间戳,禁言用户请调用 V2TIMManager+Group.h -> muteGroupMember 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t muteUntil;
|
||||
|
||||
/// 群成员入群时间,自动生成,不可修改
|
||||
@property(nonatomic,assign,readonly) time_t joinTime;
|
||||
|
||||
/// 群成员是否在线
|
||||
/// @note
|
||||
/// - 不支持直播群 AVChatRoom;
|
||||
/// - 该字段仅在调用 - getGroupMemberList:filter:nextSeq:succ:fail: 接口时有效;
|
||||
/// - 7.3 及其以上版本支持,需要您购买旗舰版套餐。
|
||||
@property(nonatomic,assign,readonly) BOOL isOnline;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// SDK 配置参数表
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMSDKConfig : NSObject
|
||||
|
||||
/// 本地写 log 文件的等级,默认 DEBUG 等级, IMSDK 的日志默认存储于 /Library/Caches/ 目录下
|
||||
@property(nonatomic,assign) V2TIMLogLevel logLevel;
|
||||
|
||||
/// log 监听回调(回调在主线程,日志回调可能比较频繁,请注意不要在回调里面同步处理太多耗时任务,可能会堵塞主线程)
|
||||
@property(nonatomic,copy,nullable) V2TIMLogListener logListener;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
BIN
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/ios-arm64_armv7/ImSDK_Plus.framework/ImSDK_Plus
generated
Executable file
BIN
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/ios-arm64_armv7/ImSDK_Plus.framework/ImSDK_Plus
generated
Executable file
Binary file not shown.
BIN
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/ios-arm64_armv7/ImSDK_Plus.framework/Info.plist
generated
Normal file
BIN
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/ios-arm64_armv7/ImSDK_Plus.framework/Info.plist
generated
Normal file
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
framework module ImSDK_Plus {
|
||||
umbrella header "ImSDK_Plus.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPrivacyTracking</key>
|
||||
<false/>
|
||||
<key>NSPrivacyCollectedDataTypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyTrackingDomains</key>
|
||||
<array/>
|
||||
<key>NSPrivacyAccessedAPITypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>35F9.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>E174.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>C617.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>CA92.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1 @@
|
||||
Versions/Current/Headers
|
||||
@@ -0,0 +1 @@
|
||||
Versions/Current/ImSDK_Plus
|
||||
@@ -0,0 +1 @@
|
||||
Versions/Current/Modules
|
||||
@@ -0,0 +1 @@
|
||||
Versions/Current/Resources
|
||||
@@ -0,0 +1,19 @@
|
||||
// Copyright (c) 2025 Tencent. All rights reserved.
|
||||
|
||||
|
||||
#ifndef TIM_IM_SDK_PLUS_H_
|
||||
#define TIM_IM_SDK_PLUS_H_
|
||||
|
||||
#import "TIMErrorCode.h"
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+APNS.h"
|
||||
#import "V2TIMManager+Friendship.h"
|
||||
#import "V2TIMManager+Conversation.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
#import "V2TIMManager+Community.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
#import "V2TIMManager+Signaling.h"
|
||||
#import "V2TIMManager+VOIP.h"
|
||||
#import "V2TIMManager+LiveActivity.h"
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,446 @@
|
||||
// Copyright (c) 2020 Tencent. All rights reserved.
|
||||
|
||||
#ifndef TIM_ERROR_CODE_H_
|
||||
#define TIM_ERROR_CODE_H_
|
||||
|
||||
enum ERROR_CODE {
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (一)IM SDK 的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 通用错误码
|
||||
|
||||
ERR_SUCC = 0, ///< 无错误。
|
||||
ERR_IN_PROGESS = 6015, ///< 接口正在执行中,请您在收到回调之后,再次发起对当前接口的调用,即采用串行方式调用接口。
|
||||
ERR_INVALID_PARAMETERS = 6017, ///< 参数无效,请检查参数是否符合要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_IO_OPERATION_FAILED = 6022, ///< 操作本地 IO 错误,检查是否有读写权限,磁盘是否已满。
|
||||
ERR_INVALID_JSON = 6027, ///< 错误的 JSON 格式,请检查参数是否符合接口的要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_OUT_OF_MEMORY = 6028, ///< 内存不足,可能存在内存泄漏,iOS 平台使用 Instrument 工具,Android 平台使用 Profiler 工具,分析出什么地方的内存占用高。
|
||||
ERR_PARSE_RESPONSE_FAILED = 6001, ///< PB 解析失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SERIALIZE_REQ_FAILED = 6002, ///< PB 序列化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_NOT_INITIALIZED = 6013, ///< IM SDK 未初始化,初始化成功回调之后重试。
|
||||
ERR_LOADMSG_FAILED = 6005, ///< 加载本地数据库操作失败,可能存储文件有损坏,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服定位具体问题。
|
||||
ERR_DATABASE_OPERATE_FAILED = 6019, ///< 本地数据库操作失败,可能是部分目录无权限或者数据库文件已损坏。
|
||||
ERR_HTTP_NO_CLEARTEXT_TRAFFIC_PERMISSION = 6029, ///< 无 http 协议的访问权限,iOS 9.0 和 Android P 开始默认限制 http 协议,iOS 平台可配置 NSAppTransportSecurity 选项,Android 平台可配置 cleartextTrafficPermitted 选项,取消 http 协议的限制。
|
||||
ERR_SDK_COMM_CROSS_THREAD = 7001, ///< 跨线程错误,不能在跨越不同线程中执行,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_TINYID_EMPTY = 7002, ///< TinyId 为空,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_INVALID_IDENTIFIER = 7003, ///< Identifier 非法,必须不为空,要求可打印 ASCII 字符(0x20-0x7e),长度不超过32字节。
|
||||
ERR_SDK_COMM_FILE_NOT_FOUND = 7004, ///< 文件不存在,请检查文件路径是否正确。
|
||||
ERR_SDK_COMM_FILE_TOO_LARGE = 7005, ///< 文件大小超出了限制,图片、语音最大限制是28MB,视频、文件最大限制是100MB
|
||||
ERR_SDK_COMM_FILE_SIZE_EMPTY = 7006, ///< 空文件,要求文件大小不是0字节,如果上传图片、语音、视频或文件,请检查文件是否正确生成。
|
||||
ERR_SDK_COMM_FILE_OPEN_FAILED = 7007, ///< 文件打开失败,请检查文件是否存在,或者已被独占打开,引起 SDK 打开失败。
|
||||
ERR_SDK_COMM_API_CALL_FREQUENCY_LIMIT = 7008, ///< API 调用超频
|
||||
ERR_SDK_INTERFACE_NOT_SUPPORT = 7013, ///< 套餐包不支持该接口的使用,请升级到旗舰版套餐
|
||||
ERR_SDK_INVALID_OPERATION = 7014, ///< 非法请求
|
||||
ERR_SDK_BLOCKED_BY_SENSITIVE_WORD = 7015, ///< SDK 本地内容审核,命中敏感词
|
||||
|
||||
// 账号错误码
|
||||
|
||||
ERR_SDK_NOT_LOGGED_IN = 6014, ///< IM SDK 未登录,请先登录,成功回调之后重试,或者已被踢下线,可使用 TIMManager getLoginUser 检查当前是否在线。
|
||||
ERR_NO_PREVIOUS_LOGIN = 6026, ///< 自动登录时,并没有登录过该用户,这时候请调用 login 接口重新登录。
|
||||
ERR_USER_SIG_EXPIRED = 6206, ///< UserSig 过期,请重新获取有效的 UserSig 后再重新登录。
|
||||
ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, ///< 其他终端登录同一个账号,引起已登录的账号被踢,需重新登录。
|
||||
ERR_SDK_ACCOUNT_LOGIN_IN_PROCESS = 7501, ///< 登录正在执行中,例如,第一次 login 或 autoLogin 操作在回调前,后续的 login 或 autoLogin 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_LOGOUT_IN_PROCESS = 7502, ///< 登出正在执行中,例如,第一次 logout 操作在回调前,后续的 logout 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_TLS_INIT_FAILED = 7503, ///< TLS SDK 初始化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_NOT_INITIALIZED = 7504, ///< TLS SDK 未初始化,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_TRANSPKG_ERROR = 7505, ///< TLS SDK TRANS 包格式错误,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_DECRYPT_FAILED = 7506, ///< TLS SDK 解密失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_FAILED = 7507, ///< TLS SDK 请求失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_TIMEOUT = 7508, ///< TLS SDK 请求超时,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_INVALID_CONVERSATION = 6004, ///< 会话无效,getConversation 时检查是否已经登录,如未登录获取会话,会有此错误码返回。
|
||||
ERR_FILE_TRANS_AUTH_FAILED = 6006, ///< 文件传输鉴权失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_NO_SERVER = 6007, ///< 文件传输获取 Server 列表失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_UPLOAD_FAILED = 6008, ///< 文件传输上传失败,请检查网络是否连接
|
||||
ERR_IMAGE_UPLOAD_FAILED_NOTIMAGE = 6031, ///< 文件传输上传失败,请检查上传的图片是否能够正常打开。
|
||||
ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, ///< 文件传输下载失败,请检查网络,或者文件、语音是否已经过期,目前资源文件存储7天。
|
||||
ERR_HTTP_REQ_FAILED = 6010, ///< HTTP 请求失败,请检查 URL 地址是否合法,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_INVALID_MSG_ELEM = 6016, ///< IM SDK 无效消息 elem,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_INVALID_SDK_OBJECT = 6021, ///< 无效的对象,例如用户自己生成 TIMImage 对象,或内部赋值错误导致对象无效。
|
||||
ERR_INVALID_MSG_RECEIVER = 6032, ///< 无效的消息接收方,请在 IM 控制台检查消息的接收方是否存在。
|
||||
ERR_SDK_MSG_BODY_SIZE_LIMIT = 8001, ///< 消息长度超出限制,消息长度不要超过12k,消息长度是各个 elem 长度的总和,elem 长度是所有 elem 字段的长度总和。
|
||||
ERR_SDK_MSG_KEY_REQ_DIFFER_RSP = 8002, ///< 消息 KEY 错误,内部错误,网络请求包的 KEY 和 回复包的不一致。
|
||||
ERR_SDK_IMAGE_CONVERT_ERROR = 8003, ///< 万象优图 HTTP 请求失败。
|
||||
ERR_MERGER_MSG_LAYERS_OVER_LIMIT = 8005, ///< 合并消息嵌套层数超过上限(上限 100 层)。
|
||||
ERR_SDK_MSG_MODIFY_CONFLICT = 8006, ///< 消息修改冲突,您请求修改的消息已经被其他人修改。
|
||||
|
||||
ERR_SDK_SIGNALING_INVALID_INVITE_ID = 8010, ///< 信令请求 ID 无效或已经被处理过。
|
||||
ERR_SDK_SIGNALING_NO_PERMISSION = 8011, ///< 信令请求无权限,比如取消非自己发起的邀请。
|
||||
ERR_SDK_SIGNALING_ALREADY_EXISTS = 8012, ///< 信令邀请已存在。
|
||||
|
||||
// 群组错误码
|
||||
|
||||
ERR_SDK_GROUP_INVALID_ID = 8501, ///< 群组 ID 非法,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长48个字节,且前缀不能为 @TGS#(避免与服务端默认分配的群组 ID 混淆)。
|
||||
ERR_SDK_GROUP_INVALID_NAME = 8502, ///< 群名称非法,群名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_INTRODUCTION = 8503, ///< 群简介非法,群简介最长240字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_NOTIFICATION = 8504, ///< 群公告非法,群公告最长300字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_FACE_URL = 8505, ///< 群头像 URL 非法,群头像 URL 最长100字节,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_SDK_GROUP_INVALID_NAME_CARD = 8506, ///< 群名片非法,群名片最长50字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_MEMBER_COUNT_LIMIT = 8507, ///< 超过群组成员数的限制,在创建群和邀请成员时,指定的成员数超出限制,最大群成员数量:私有群是200人,公开群是2000人,聊天室是10000人,音视频聊天室和在线成员广播大群无限制。
|
||||
ERR_SDK_GROUP_JOIN_PRIVATE_GROUP_DENY = 8508, ///< 不允许申请加入 Private 群组,任意群成员可邀请入群,且无需被邀请人同意。
|
||||
ERR_SDK_GROUP_INVITE_SUPER_DENY = 8509, ///< 不允许邀请角色为群主的成员,请检查角色字段是否填写正确。
|
||||
ERR_SDK_GROUP_INVITE_NO_MEMBER = 8510, ///< 不允许邀请0个成员,请检查成员字段是否填写正确。
|
||||
ERR_SDK_GROUP_ATTR_FREQUENCY_LIMIT = 8511, ///< 群属性接口操作限制:增删改接口后台限制1秒5次,查接口 SDK 限制5秒20次。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SDK_FRIENDSHIP_INVALID_PROFILE_KEY = 9001, ///< 资料字段非法,资料支持标配字段及自定义字段,其中自定义字段的关键字,必须是英文字母,且长度不得超过8字节,自定义字段的值最长不能超过500字节。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_REMARK = 9002, ///< 备注字段非法,最大96字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_WORDING = 9003, ///< 请求添加好友的请求说明字段非法,最大120字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_SOURCE = 9004, ///< 请求添加好友的添加来源字段非法,来源需要添加“AddSource_Type_”前缀。
|
||||
ERR_SDK_FRIENDSHIP_FRIEND_GROUP_EMPTY = 9005, ///< 好友分组字段非法,必须不为空,每个分组的名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
|
||||
// 网络错误码
|
||||
|
||||
ERR_SDK_NET_ENCODE_FAILED = 9501, ///< 网络加密失败,内部错误。
|
||||
ERR_SDK_NET_DECODE_FAILED = 9502, ///< 网络数据解密失败,内部错误。
|
||||
ERR_SDK_NET_AUTH_INVALID = 9503, ///< 未完成鉴权,可能登录未完成,请在登录完成后再操作。
|
||||
ERR_SDK_NET_COMPRESS_FAILED = 9504, ///< 数据包压缩失败,内部错误。
|
||||
ERR_SDK_NET_UNCOMPRESS_FAILED = 9505, ///< 数据包解压失败,内部错误。
|
||||
ERR_SDK_NET_FREQ_LIMIT = 9506, ///< 调用频率限制,最大每秒发起 5 次请求。
|
||||
ERR_SDK_NET_REQ_COUNT_LIMIT = 9507, ///< 请求队列満,超过同时请求的数量限制,最大同时发起1000个请求。
|
||||
ERR_SDK_NET_DISCONNECT = 9508, ///< 网络已断开,未建立连接,或者建立 socket 连接时,检测到无网络。
|
||||
ERR_SDK_NET_ALLREADY_CONN = 9509, ///< 网络连接已建立,重复创建连接,内部错误。
|
||||
ERR_SDK_NET_CONN_TIMEOUT = 9510, ///< 建立网络连接超时,请等网络恢复后重试。
|
||||
ERR_SDK_NET_CONN_REFUSE = 9511, ///< 网络连接已被拒绝,请求过于频繁,服务端拒绝服务。
|
||||
ERR_SDK_NET_NET_UNREACH = 9512, ///< 没有到达网络的可用路由,请等网络恢复后重试。
|
||||
ERR_SDK_NET_SOCKET_NO_BUFF = 9513, ///< 系统中没有足够的缓冲区空间资源可用来完成调用,系统过于繁忙,内部错误。
|
||||
ERR_SDK_NET_RESET_BY_PEER = 9514, ///< 对端重置了连接,可能服务端过载,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_SOCKET_INVALID = 9515, ///< socket 套接字无效,内部错误。
|
||||
ERR_SDK_NET_HOST_GETADDRINFO_FAILED = 9516, ///< IP 地址解析失败,内部错误,可能是本地 imsdk_config 配置文件被损坏,读取到到 IP 地址非法。
|
||||
ERR_SDK_NET_CONNECT_RESET = 9517, ///< 网络连接到中间节点或服务端重置,引起连接失效,内部错误,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_WAIT_INQUEUE_TIMEOUT = 9518, ///< 请求包等待进入待发送队列超时,发送时网络连接建立比较慢 或 频繁断网重连时,会出现该错误,请检查网络连接是否正常。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT = 9519, ///< 请求包已进入 IM SDK 待发送队列,等待进入操作系统的网络层时超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT = 9520, ///< 请求包已由 IM SDK 待发送队列进入操作系统网络层,等待服务端回包超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_SEND_REMAINING_TIMEOUT = 9521, ///< 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误时检测有联网,内部错误。
|
||||
ERR_SDK_NET_PKG_SIZE_LIMIT = 9522, ///< 请求包长度大于限制,最大支持 1MB 。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT_NO_NETWORK = 9523, ///< 请求包已进入待发送队列,等待进入系统的网络 buffer 超时,数据包较多 或 发送线程处理不过来,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT_NO_NETWORK = 9524, ///< 请求包已进入系统的网络 buffer ,等待服务端回包超时,可能请求包没离开终端设备、中间路由丢弃、服务端意外丢包或回包被系统网络层丢弃,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_SEND_REMAINING_TIMEOUT_NO_NETWORK = 9525, ///< 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误码时检测到没有联网。
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (二)服务端的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 网络接入层的错误码
|
||||
|
||||
ERR_SVR_SSO_CONNECT_LIMIT = -302, // Server 的连接数量超出限制,服务端拒绝服务。
|
||||
ERR_SVR_SSO_VCODE = -10000, // 下发验证码标志错误。
|
||||
ERR_SVR_SSO_D2_EXPIRED = -10001, // Key 过期。Key 是根据 UserSig 生成的内部票据,Key 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_A2_UP_INVALID = -10003, // Ticket 过期。Ticket 是根据 UserSig 生成的内部票据,Ticket 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Ticket。
|
||||
ERR_SVR_SSO_A2_DOWN_INVALID = -10004, // 票据验证没通过或者被安全打击。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的票据。
|
||||
ERR_SVR_SSO_EMPTY_KEY = -10005, // 不允许空 Key。
|
||||
ERR_SVR_SSO_UIN_INVALID = -10006, // Key 中的账号和请求包头的账号不匹配。
|
||||
ERR_SVR_SSO_VCODE_TIMEOUT = -10007, // 验证码下发超时。
|
||||
ERR_SVR_SSO_NO_IMEI_AND_A2 = -10008, // 需要带上 Key 和 Ticket。
|
||||
ERR_SVR_SSO_COOKIE_INVALID = -10009, // Cookie 检查不匹配。
|
||||
ERR_SVR_SSO_DOWN_TIP = -10101, // 下发提示语时 Key 过期。Key 是根据 UserSig 生成的内部票据,Key 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_DISCONNECT = -10102, // 网络连接断开。
|
||||
ERR_SVR_SSO_IDENTIFIER_INVALID = -10103, // 失效身份。
|
||||
ERR_SVR_SSO_CLIENT_CLOSE = -10104, // 终端自动退出。
|
||||
ERR_SVR_SSO_MSFSDK_QUIT = -10105, // MSFSDK 自动退出。
|
||||
ERR_SVR_SSO_D2KEY_WRONG = -10106, // 解密失败次数超过阈值,通知终端需要重置,请重新调用 TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_UNSURPPORT = -10107, // 不支持聚合,给终端返回统一的错误码。终端在该 TCP 长连接上停止聚合。
|
||||
ERR_SVR_SSO_PREPAID_ARREARS = -10108, // 预付费欠费。
|
||||
ERR_SVR_SSO_PACKET_WRONG = -10109, // 请求包格式错误。
|
||||
ERR_SVR_SSO_APPID_BLACK_LIST = -10110, // SDKAppID 黑名单。
|
||||
ERR_SVR_SSO_CMD_BLACK_LIST = -10111, // SDKAppID 设置 service cmd 黑名单。
|
||||
ERR_SVR_SSO_APPID_WITHOUT_USING = -10112, // SDKAppID 停用。
|
||||
ERR_SVR_SSO_FREQ_LIMIT = -10113, // 频率限制(用户),频率限制是设置针对某一个协议的每秒请求数的限制。
|
||||
ERR_SVR_SSO_OVERLOAD = -10114, // 过载丢包(系统),连接的服务端处理过多请求,处理不过来,拒绝服务。
|
||||
ERR_SVR_SSO_FREQUENCY_LIMIT = -20009, // 终端访问接口超频。
|
||||
|
||||
// 资源文件错误码
|
||||
|
||||
ERR_SVR_RES_NOT_FOUND = 114000, ///< 要发送的资源文件不存在。
|
||||
ERR_SVR_RES_ACCESS_DENY = 114001, ///< 要发送的资源文件不允许访问。
|
||||
ERR_SVR_RES_SIZE_LIMIT = 114002, ///< 文件大小超过限制。
|
||||
ERR_SVR_RES_SEND_CANCEL = 114003, ///< 用户取消发送,如发送过程中登出等原因。
|
||||
ERR_SVR_RES_READ_FAILED = 114004, ///< 读取文件内容失败。
|
||||
ERR_SVR_RES_TRANSFER_TIMEOUT = 114005, ///< 资源文件(如图片、文件、语音、视频)传输超时,一般是网络问题导致。
|
||||
ERR_SVR_RES_INVALID_PARAMETERS = 114011, ///< 参数非法。
|
||||
ERR_SVR_RES_INVALID_FILE_MD5 = 115066, ///< 文件 MD5 校验失败。
|
||||
ERR_SVR_RES_INVALID_PART_MD5 = 115068, ///< 分片 MD5 校验失败。
|
||||
|
||||
// 后台公共错误码
|
||||
|
||||
ERR_SVR_COMM_INVALID_HTTP_URL = 60002, ///< HTTP 解析错误 ,请检查 HTTP 请求 URL 格式。
|
||||
ERR_SVR_COMM_REQ_JSON_PARSE_FAILED = 60003, ///< HTTP 请求 JSON 解析错误,请检查 JSON 格式。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT = 60004, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT_EX = 60005, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_SDKAPPID = 60006, ///< SDKAppID 失效,请核对 SDKAppID 有效性。
|
||||
ERR_SVR_COMM_REST_FREQ_LIMIT = 60007, ///< REST 接口调用频率超过限制,请降低请求频率。
|
||||
ERR_SVR_COMM_REQUEST_TIMEOUT = 60008, ///< 服务请求超时或 HTTP 请求格式错误,请检查并重试。
|
||||
ERR_SVR_COMM_INVALID_RES = 60009, ///< 请求资源错误,请检查请求 URL。
|
||||
ERR_SVR_COMM_ID_NOT_ADMIN = 60010, ///< REST API 请求的 Identifier 字段请填写 App 管理员账号。
|
||||
ERR_SVR_COMM_SDKAPPID_FREQ_LIMIT = 60011, ///< SDKAppID 请求频率超限,请降低请求频率。
|
||||
ERR_SVR_COMM_SDKAPPID_MISS = 60012, ///< REST 接口需要带 SDKAppID,请检查请求 URL 中的 SDKAppID。
|
||||
ERR_SVR_COMM_RSP_JSON_PARSE_FAILED = 60013, ///< HTTP 响应包 JSON 解析错误。
|
||||
ERR_SVR_COMM_EXCHANGE_ACCOUNT_TIMEUT = 60014, ///< 置换账号超时。
|
||||
ERR_SVR_COMM_INVALID_ID_FORMAT = 60015, ///< 请求包体 Identifier 类型错误,请确认 Identifier 为字符串格式。
|
||||
ERR_SVR_COMM_SDKAPPID_FORBIDDEN = 60016, ///< SDKAppID 被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FORBIDDEN = 60017, ///< 请求被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT = 60018, ///< 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT_EX = 60019, ///< 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_INVALID_SERVICE = 60020, ///< 未购买套餐包或购买的套餐包正在配置中暂未生效,请五分钟后再次尝试。
|
||||
ERR_SVR_COMM_SENSITIVE_TEXT = 80001, ///< 文本安全打击,文本中可能包含敏感词汇。
|
||||
ERR_SVR_COMM_BODY_SIZE_LIMIT = 80002, ///< 发消息包体过长,目前支持最大12k消息包体长度,请减少包体大小重试。
|
||||
ERR_SVR_COMM_SENSITIVE_IMAGE = 80004, ///< 图片安全打击,图片中可能包含敏感内容。
|
||||
|
||||
// 账号错误码
|
||||
|
||||
ERR_SVR_ACCOUNT_USERSIG_EXPIRED = 70001, ///< UserSig 已过期,请重新生成 UserSig,建议 UserSig 有效期不小于24小时。
|
||||
ERR_SVR_ACCOUNT_USERSIG_EMPTY = 70002, ///< UserSig 长度为0,请检查传入的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED = 70003, ///< UserSig 校验失败,请确认下 UserSig 内容是否被截断,如缓冲区长度不够导致的内容截断。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED_EX = 70005, ///< UserSig 校验失败,可用工具自行验证生成的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_PUBLICKEY = 70009, ///< 用公钥验证 UserSig 失败,请确认生成的 UserSig 使用的私钥和 SDKAppID 是否对应。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_ID = 70013, ///< 请求的 Identifier 与生成 UserSig 的 Identifier 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_SDKAPPID = 70014, ///< 请求的 SDKAppID 与生成 UserSig 的 SDKAppID 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_PUBLICKEY_NOT_FOUND = 70016, ///< 验证 UserSig 时公钥不存在。请先登录控制台下载私钥,下载私钥的具体方法可参考 [下载签名用的私钥](https://cloud.tencent.com/document/product/269/32688#.E4.B8.8B.E8.BD.BD.E7.AD.BE.E5.90.8D.E7.94.A8.E7.9A.84.E7.A7.81.E9.92.A5) 。
|
||||
ERR_SVR_ACCOUNT_SDKAPPID_NOT_FOUND = 70020, ///< SDKAppID 未找到,请在云通信 IM 控制台确认应用信息。
|
||||
ERR_SVR_ACCOUNT_INVALID_USERSIG = 70052, ///< UserSig 已经失效,请重新生成,再次尝试。
|
||||
ERR_SVR_ACCOUNT_NOT_FOUND = 70107, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_ACCOUNT_SEC_RSTR = 70114, ///< 安全原因被限制。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_TIMEOUT = 70169, ///< 服务端内部超时,请重试。
|
||||
ERR_SVR_ACCOUNT_INVALID_COUNT = 70206, ///< 请求中批量数量不合法。
|
||||
ERR_SVR_ACCOUNT_INVALID_PARAMETERS = 70402, ///< 参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。
|
||||
ERR_SVR_ACCOUNT_ADMIN_REQUIRED = 70403, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_ACCOUNT_LOW_SDK_VERSION = 70404, ///< 您的SDK版本过低,请升级到最新版本.
|
||||
ERR_SVR_ACCOUNT_FREQ_LIMIT = 70050, ///< 因失败且重试次数过多导致被限制,请检查 UserSig 是否正确,一分钟之后再试。
|
||||
ERR_SVR_ACCOUNT_BLACKLIST = 70051, ///< 账号被拉入黑名单。
|
||||
ERR_SVR_ACCOUNT_COUNT_LIMIT = 70398, ///< 创建账号数量超过免费体验版数量限制,请升级为专业版。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_ERROR = 70500, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_ACCOUNT_USER_STATUS_DISABLED = 72001, ///< 用户状态能力需要登录 IM 控制台开启
|
||||
|
||||
// 资料错误码
|
||||
|
||||
ERR_SVR_PROFILE_INVALID_PARAMETERS = 40001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_PROFILE_ACCOUNT_MISS = 40002, ///< 请求参数错误,没有指定需要拉取资料的用户账号。
|
||||
ERR_SVR_PROFILE_ACCOUNT_NOT_FOUND = 40003, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_PROFILE_ADMIN_REQUIRED = 40004, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_PROFILE_SENSITIVE_TEXT = 40005, ///< 资料字段中包含敏感词。
|
||||
ERR_SVR_PROFILE_INTERNAL_ERROR = 40006, ///< 服务端内部错误,请稍后重试。
|
||||
ERR_SVR_PROFILE_READ_PERMISSION_REQUIRED = 40007, ///< 没有资料字段的读权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_WRITE_PERMISSION_REQUIRED = 40008, ///< 没有资料字段的写权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_TAG_NOT_FOUND = 40009, ///< 资料字段的 Tag 不存在。
|
||||
ERR_SVR_PROFILE_SIZE_LIMIT = 40601, ///< 资料字段的 Value 长度超过500字节。
|
||||
ERR_SVR_PROFILE_VALUE_ERROR = 40605, ///< 标配资料字段的 Value 错误,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_INVALID_VALUE_FORMAT = 40610, ///< 资料字段的 Value 类型不匹配,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_SUBSCRIPTION_DISABLED = 72012, ///< 用户资料变更订阅能力未开启,请参见 [订阅非好友用户资料](https://cloud.tencent.com/document/product/269/75416#53edea52-35ef-4d82-aae9-941ba690f051),登录 [IM 控制台](https://console.tencentcloud.com/im) 开启该功能。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SVR_FRIENDSHIP_INVALID_PARAMETERS = 30001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID = 30002, ///< SDKAppID 不匹配。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND = 30003, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_FRIENDSHIP_ADMIN_REQUIRED = 30004, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_FRIENDSHIP_SENSITIVE_TEXT = 30005, ///< 关系链字段中包含敏感词。
|
||||
ERR_SVR_FRIENDSHIP_INTERNAL_ERROR = 30006, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_FRIENDSHIP_NET_TIMEOUT = 30007, ///< 网络超时,请稍后重试。
|
||||
ERR_SVR_FRIENDSHIP_WRITE_CONFLICT = 30008, ///< 并发写导致写冲突,建议使用批量方式。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_DENY = 30009, ///< 后台禁止该用户发起加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_COUNT_LIMIT = 30010, ///< 自己的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_GROUP_COUNT_LIMIT = 30011, ///< 分组已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_LIMIT = 30012, ///< 未决数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_BLACKLIST_LIMIT = 30013, ///< 黑名单数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_FRIEND_LIMIT = 30014, ///< 对方的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_ALREADY_FRIENDS = 30015, ///< 已经存在好友关系。
|
||||
ERR_SVR_FRIENDSHIP_IN_SELF_BLACKLIST = 30515, ///< 请求添加好友时,对方在自己的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_DENY_ANY = 30516, ///< 请求添加好友时,对方的加好友验证方式是不允许任何人添加自己为好友。
|
||||
ERR_SVR_FRIENDSHIP_IN_PEER_BLACKLIST = 30525, ///< 请求添加好友时,自己在对方的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_NEED_CONFIRM = 30539, ///< A 请求加 B 为好友,B 的加好友验证方式被设置为“AllowType_Type_NeedConfirm”,这时 A 与 B 之间只能形成未决关系,该返回码用于标识加未决成功,以便与加好友成功的返回码区分开,调用方可以捕捉该错误给用户一个合理的提示。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_SEC_RSTR = 30540, ///< 添加好友请求被安全策略打击,请勿频繁发起添加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_NOT_FOUND = 30614, ///< 请求的未决不存在。
|
||||
ERR_SVR_FRIENDSHIP_DEL_NONFRIEND = 31704, ///< 与请求删除的账号之间不存在好友关系。
|
||||
ERR_SVR_FRIENDSHIP_DEL_FRIEND_SEC_RSTR = 31707, ///< 删除好友请求被安全策略打击,请勿频繁发起删除好友请求。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND_EX = 31804, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_FRIENDSHIP_SELF_FOLLOWING_COUNT_EXCEEDS_LIMIT = 32100, ///< 自己的关注数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32101, ///< 对方的粉丝数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_SELF_MUTUAL_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32102, ///< 自己的互关数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_MUTUAL_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32103, ///< 对方的互关数量到达上限。
|
||||
|
||||
// 最近联系人错误码
|
||||
|
||||
ERR_SVR_CONV_ACCOUNT_NOT_FOUND = 50001, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_CONV_INVALID_PARAMETERS = 50002, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_CONV_ADMIN_REQUIRED = 50003, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_CONV_INTERNAL_ERROR = 50004, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_CONV_NET_TIMEOUT = 50005, ///< 网络超时,请稍后重试。
|
||||
|
||||
ERR_SVR_CONV_CONV_MARK_REQ_COUNT_EXCEED_LIMIT = 51006, ///< 一次标记、分组、设置自定义数据的会话数超过了上限(最大支持 100 个)
|
||||
ERR_SVR_CONV_CONV_MARK_OPERATE_FAILED = 51007, ///< Group 会话操作异常,Server 内部错误或 Group 已经解散
|
||||
ERR_SVR_CONV_CONV_MARK_TOTAL_COUNT_EXCEED_LIMIT = 51008, ///< 标记、分组、设置自定义数据的总会话数超过了上限(最大支持 1000 个)
|
||||
ERR_SVR_CONV_CONV_GROUP_NOT_EXIST = 51009, ///< 会话分组不存在
|
||||
ERR_SVR_CONV_CONV_GROUP_TOTAL_COUNT_EXCEED_LIMIT = 51010, ///< 会话分组数超过了上限(最大支持 20 个)
|
||||
ERR_SVR_CONV_CONV_GROUP_NAME_EXCEED_LENGTH = 51011, ///< 会话分组名字节数超过了上限(最大支持 32 字节)
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_SVR_MSG_PKG_PARSE_FAILED = 20001, ///< 请求包非法,请检查发送方和接收方账号是否存在。
|
||||
ERR_SVR_MSG_INTERNAL_AUTH_FAILED = 20002, ///< 内部鉴权失败。
|
||||
ERR_SVR_MSG_INVALID_ID = 20003, ///< Identifier 无效或者 Identifier 未导入云通信 IM。
|
||||
ERR_SVR_MSG_NET_ERROR = 20004, ///< 网络异常,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR1 = 20005, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_MSG_PUSH_DENY = 20006, ///< 触发发送单聊消息之前回调,App 后台返回禁止下发该消息。
|
||||
ERR_SVR_MSG_IN_PEER_BLACKLIST = 20007, ///< 发送单聊消息,被对方拉黑,禁止发送。
|
||||
ERR_SVR_MSG_BOTH_NOT_FRIEND = 20009, ///< 消息发送双方互相不是好友,禁止发送(配置单聊消息校验好友关系才会出现)。
|
||||
ERR_SVR_MSG_NOT_PEER_FRIEND = 20010, ///< 发送单聊消息,自己不是对方的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_NOT_SELF_FRIEND = 20011, ///< 发送单聊消息,对方不是自己的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_SHUTUP_DENY = 20012, ///< 因禁言,禁止发送消息。
|
||||
ERR_SVR_MSG_REVOKE_TIME_LIMIT = 20016, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_MSG_DEL_RAMBLE_INTERNAL_ERROR = 20018, ///< 删除漫游内部错误。
|
||||
ERR_SVR_MSG_EXTENSION_CONFLICT = 23001, ///< 消息扩展操作冲突。
|
||||
ERR_SVR_MSG_EXTENSION_NOT_EXIST = 23004, ///< 删除的消息扩展不存在。
|
||||
ERR_SVR_MSG_REACTION_COUNT_LIMIT = 23005, ///< 单条消息 Reaction 数量超过最大限制。
|
||||
ERR_SVR_MSG_REACTION_USER_COUNT_LIMIT = 23006, ///< 单个 Reaction 用户数量超过最大限制。
|
||||
ERR_SVR_MSG_REACTION_ALREADY_CONTAIN_USER = 23007, ///< Reaction 已经包含当前操作用户。
|
||||
ERR_SVR_MSG_REACTION_NOT_EXISTS = 23008, ///< Reaction 不存在。
|
||||
ERR_SVR_MSG_REACTION_NOT_CONTAIN_USER = 23009, ///< Reaction 不包含当前操作用户。
|
||||
ERR_SVR_MSG_JSON_PARSE_FAILED = 90001, ///< JSON 格式解析失败,请检查请求包是否符合 JSON 规范。
|
||||
ERR_SVR_MSG_INVALID_JSON_BODY_FORMAT = 90002, ///< JSON 格式请求包中 MsgBody 不符合消息格式描述,或者 MsgBody 不是 Array 类型,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_INVALID_TO_ACCOUNT = 90003, ///< JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_RAND = 90005, ///< JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_TIMESTAMP = 90006, ///< JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_BODY_NOT_ARRAY = 90007, ///< JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型
|
||||
ERR_SVR_MSG_ADMIN_REQUIRED = 90009, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_MSG_INVALID_JSON_FORMAT = 90010, ///< JSON 格式请求包不符合消息格式描述,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_COUNT_LIMIT = 90011, ///< 批量发消息目标账号超过500,请减少 To_Account 中目标账号数量。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_NOT_FOUND = 90012, ///< To_Account 没有注册或不存在,请确认 To_Account 是否导入云通信 IM 或者是否拼写错误。
|
||||
ERR_SVR_MSG_TIME_LIMIT = 90026, ///< 消息离线存储时间错误(最多不能超过7天)。
|
||||
ERR_SVR_MSG_INVALID_SYNCOTHERMACHINE = 90031, ///< JSON 格式请求包体中 SyncOtherMachine 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_MSGLIFETIME = 90044, ///< JSON 格式请求包体中 MsgLifeTime 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_ACCOUNT_NOT_FOUND = 90048, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR2 = 90994, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR3 = 90995, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR4 = 91000, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR5 = 90992, ///< 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务端是否正常向云通信 IM 后台服务端返回回调结果。
|
||||
ERR_SVR_MSG_BODY_SIZE_LIMIT = 93000, ///< JSON 数据包超长,消息包体请不要超过12k。
|
||||
ERR_SVR_MSG_LONGPOLLING_COUNT_LIMIT = 91101, ///< Web 端长轮询被踢(Web 端同时在线实例个数超出限制)。
|
||||
// 120001 - 130000, ///< 单聊第三方回调返回的自定义错误码。
|
||||
|
||||
// 群组错误码
|
||||
|
||||
ERR_SVR_GROUP_INTERNAL_ERROR = 10002, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_GROUP_API_NAME_ERROR = 10003, ///< 请求中的接口名称错误,请核对接口名称并重试。
|
||||
ERR_SVR_GROUP_INVALID_PARAMETERS = 10004, ///< 参数非法,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_GROUP_ACOUNT_COUNT_LIMIT = 10005, ///< 请求包体中携带的账号数量过多。
|
||||
ERR_SVR_GROUP_FREQ_LIMIT = 10006, ///< 操作频率限制,请尝试降低调用的频率。
|
||||
ERR_SVR_GROUP_PERMISSION_DENY = 10007, ///< 操作权限不足,比如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限。
|
||||
ERR_SVR_GROUP_INVALID_REQ = 10008, ///< 请求非法,可能是请求中携带的签名信息验证不正确,请再次尝试或 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系技术客服。
|
||||
ERR_SVR_GROUP_SUPER_NOT_ALLOW_QUIT = 10009, ///< 该群不允许群主主动退出。
|
||||
ERR_SVR_GROUP_NOT_FOUND = 10010, ///< 群组不存在,或者曾经存在过,但是目前已经被解散。
|
||||
ERR_SVR_GROUP_JSON_PARSE_FAILED = 10011, ///< 解析 JSON 包体失败,请检查包体的格式是否符合 JSON 格式。
|
||||
ERR_SVR_GROUP_INVALID_ID = 10012, ///< 发起操作的 Identifier 非法,请检查发起操作的用户 Identifier 是否填写正确。
|
||||
ERR_SVR_GROUP_ALLREADY_MEMBER = 10013, ///< 被邀请加入的用户已经是群成员。
|
||||
ERR_SVR_GROUP_FULL_MEMBER_COUNT = 10014, ///< 群已满员,无法将请求中的用户加入群组,如果是批量加人,可以尝试减少加入用户的数量。
|
||||
ERR_SVR_GROUP_INVALID_GROUPID = 10015, ///< 群组 ID 非法,请检查群组 ID 是否填写正确。
|
||||
ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY = 10016, ///< App 后台通过第三方回调拒绝本次操作。
|
||||
ERR_SVR_GROUP_SHUTUP_DENY = 10017, ///< 因被禁言而不能发送消息,请检查发送者是否被设置禁言。
|
||||
ERR_SVR_GROUP_RSP_SIZE_LIMIT = 10018, ///< 应答包长度超过最大包长(1MB),请求的内容过多,请尝试减少单次请求的数据量。
|
||||
ERR_SVR_GROUP_ACCOUNT_NOT_FOUND = 10019, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED = 10021, ///< 群组 ID 已被使用,请选择其他的群组 ID。
|
||||
ERR_SVR_GROUP_SEND_MSG_FREQ_LIMIT = 10023, ///< 发消息的频率超限,请延长两次发消息时间的间隔。
|
||||
ERR_SVR_GROUP_REQ_ALLREADY_BEEN_PROCESSED = 10024, ///< 此邀请或者申请请求已经被处理。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED_FOR_SUPER = 10025, ///< 群组 ID 已被使用,并且操作者为群主,可以直接使用。
|
||||
ERR_SVR_GROUP_SDKAPPID_DENY = 10026, ///< 该 SDKAppID 请求的命令字已被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_NOT_FOUND = 10030, ///< 请求撤回的消息不存在。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_TIME_LIMIT = 10031, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_DENY = 10032, ///< 请求撤回的消息不支持撤回操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REVOKE_MSG = 10033, ///< 群组类型不支持消息撤回操作。
|
||||
ERR_SVR_GROUP_REMOVE_MSG_DENY = 10034, ///< 该消息类型不支持删除操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REMOVE_MSG = 10035, ///< 音视频聊天室和在线成员广播大群不支持删除消息。
|
||||
ERR_SVR_GROUP_AVCHATROOM_COUNT_LIMIT = 10036, ///< 音视频聊天室创建数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买预付费套餐“IM音视频聊天室”。
|
||||
ERR_SVR_GROUP_COUNT_LIMIT = 10037, ///< 单个用户可创建和加入的群组数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“单人可创建与加入群组数”。
|
||||
ERR_SVR_GROUP_MEMBER_COUNT_LIMIT = 10038, ///< 群成员数量超过限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“扩展群人数上限”。
|
||||
ERR_SVR_GROUP_ATTRIBUTE_WRITE_CONFILCT = 10056, ///< 群属性写冲突,请先拉取最新的群属性后再尝试写操作,IMSDK 5.6 及其以上版本支持。
|
||||
ERR_SVR_GROUP_PINNED_MESSAGE_COUNT_LIMIT = 10070, ///< 置顶消息超出数量限制。
|
||||
ERR_SVR_GROUP_MESSAGE_ALREADY_PINNED = 10071, ///< 消息已经被置顶。
|
||||
ERR_SVR_COMMUNITY_GROUP_NOT_OPEN = 11000, ///< 社群功能未开通。
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (三)IM SDK V3 版本的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ERR_NO_SUCC_RESULT = 6003, ///< 批量操作无成功结果。
|
||||
ERR_TO_USER_INVALID = 6011, ///< 无效接收方。
|
||||
ERR_REQUEST_TIME_OUT = 6012, ///< 请求超时。
|
||||
ERR_INIT_CORE_FAIL = 6018, ///< INIT CORE 模块失败。
|
||||
ERR_EXPIRED_SESSION_NODE = 6020, ///< SessionNode 为 null 。
|
||||
ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, ///< 在登录完成前进行了登出(在登录时返回)。
|
||||
ERR_TLSSDK_NOT_INITIALIZED = 6024, ///< TLS SDK 未初始化。
|
||||
ERR_TLSSDK_USER_NOT_FOUND = 6025, ///< TLS SDK 没有找到相应的用户信息。
|
||||
ERR_BIND_FAIL_UNKNOWN = 6100, ///< QALSDK 未知原因BIND失败。
|
||||
ERR_BIND_FAIL_NO_SSOTICKET = 6101, ///< 缺少 SSO 票据。
|
||||
ERR_BIND_FAIL_REPEATD_BIND = 6102, ///< 重复 BIND。
|
||||
ERR_BIND_FAIL_TINYID_NULL = 6103, ///< TinyId 为空。
|
||||
ERR_BIND_FAIL_GUID_NULL = 6104, ///< GUID 为空。
|
||||
ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, ///< 解注册包失败。
|
||||
ERR_BIND_FAIL_REG_TIMEOUT = 6106, ///< 注册超时。
|
||||
ERR_BIND_FAIL_ISBINDING = 6107, ///< 正在 BIND 操作中。
|
||||
ERR_PACKET_FAIL_UNKNOWN = 6120, ///< 发包未知错误。
|
||||
ERR_PACKET_FAIL_REQ_NO_NET = 6121, ///< 发送请求包时没有网络。
|
||||
ERR_PACKET_FAIL_RESP_NO_NET = 6122, ///< 发送回复包时没有网络。
|
||||
ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, ///< 发送请求包时没有权限。
|
||||
ERR_PACKET_FAIL_SSO_ERR = 6124, ///< SSO 错误。
|
||||
ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, ///< 请求超时。
|
||||
ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, ///< 回复超时。
|
||||
ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, ///< 重发失败。
|
||||
ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, ///< 重发时没有真正发送。
|
||||
ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, ///< 保存被过滤。
|
||||
ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, ///< 发送过载。
|
||||
ERR_PACKET_FAIL_LOGIC_ERR = 6131, ///< 数据逻辑错误。
|
||||
ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, ///< proxy_manager 没有完成服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCING = 6151, ///< proxy_manager 正在进行服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, ///< proxy_manager 同步失败。
|
||||
ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, ///< proxy_manager 请求参数,在本地检查不合法。
|
||||
ERR_GROUP_INVALID_FIELD = 6160, ///< Group assistant 请求字段中包含非预设字段。
|
||||
ERR_GROUP_STORAGE_DISABLED = 6161, ///< Group assistant 群资料本地存储没有开启。
|
||||
ERR_LOADGRPINFO_FAILED = 6162, ///< 加载群资料失败。
|
||||
ERR_REQ_NO_NET_ON_REQ = 6200, ///< 请求的时候没有网络。
|
||||
ERR_REQ_NO_NET_ON_RSP = 6201, ///< 响应的时候没有网络。
|
||||
ERR_SERIVCE_NOT_READY = 6205, ///< QALSDK 服务未就绪。
|
||||
ERR_LOGIN_AUTH_FAILED = 6207, ///< 账号认证失败( TinyId 转换失败)。
|
||||
ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, ///< 在应用启动后没有尝试联网。
|
||||
ERR_REQ_FAILED = 6210, ///< QALSDK 执行失败。
|
||||
ERR_REQ_INVALID_REQ = 6211, ///< 请求非法,toMsgService 非法。
|
||||
ERR_REQ_OVERLOADED = 6212, ///< 请求队列满。
|
||||
ERR_REQ_KICK_OFF = 6213, ///< 已经被其他终端踢了。
|
||||
ERR_REQ_SERVICE_SUSPEND = 6214, ///< 服务被暂停。
|
||||
ERR_REQ_INVALID_SIGN = 6215, ///< SSO 签名错误。
|
||||
ERR_REQ_INVALID_COOKIE = 6216, ///< SSO cookie 无效。
|
||||
ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, ///< 登录时 TLS SDK 回包校验,包体长度错误。
|
||||
ERR_LOGIN_OPENMSG_TIMEOUT = 6218, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态超时。
|
||||
ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态时解析回包失败。
|
||||
ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, ///< 登录时 TLS SDK 解密失败。
|
||||
ERR_WIFI_NEED_AUTH = 6221, ///< WIFI 需要认证。
|
||||
ERR_USER_CANCELED = 6222, ///< 用户已取消。
|
||||
ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_LACK_UGC_EXT = 6224, ///< 缺少 UGC 扩展包。
|
||||
ERR_AUTOLOGIN_NEED_USERSIG = 6226, ///< 自动登录,本地票据过期,需要 UserSig 手动登录。
|
||||
ERR_QAL_NO_SHORT_CONN_AVAILABLE = 6300, ///< 没有可用的短连接 SSO 。
|
||||
ERR_REQ_CONTENT_ATTACK = 80101, ///< 消息内容安全打击。
|
||||
ERR_LOGIN_SIG_EXPIRE = 70101, ///< 登录返回,票据过期。
|
||||
ERR_SDK_HAD_INITIALIZED = 90101, ///< IM SDK 已经初始化无需重复初始化。
|
||||
ERR_OPENBDH_BASE = 115000, ///< OpenBDH 错误码基。
|
||||
ERR_REQUEST_NO_NET_ONREQ = 6250, ///< 请求时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_NO_NET_ONRSP = 6251, ///< 响应时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_FAILED = 6252, ///< QALSDK 执行失败。
|
||||
ERR_REQUEST_INVALID_REQ = 6253, ///< 请求非法,toMsgService 非法。
|
||||
ERR_REQUEST_OVERLOADED = 6254, ///< 请求队列満。
|
||||
ERR_REQUEST_KICK_OFF = 6255, ///< 已经被其他终端踢了。
|
||||
ERR_REQUEST_SERVICE_SUSPEND = 6256, ///< 服务被暂停。
|
||||
ERR_REQUEST_INVALID_SIGN = 6257, ///< SSO 签名错误。
|
||||
ERR_REQUEST_INVALID_COOKIE = 6258, ///< SSO cookie 无效。
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,111 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+APNS
|
||||
//
|
||||
// 消息推送接口,里面包含了消息的推送的开启逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
@class V2TIMAPNSConfig;
|
||||
V2TIM_EXPORT @protocol V2TIMAPNSListener;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (APNS)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 设置 APNS 推送
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 1.1 设置 APNS 监听
|
||||
*/
|
||||
- (void)setAPNSListener:(_Nullable id<V2TIMAPNSListener>)apnsListener NS_SWIFT_NAME(setAPNSListener(apnsListener:));
|
||||
|
||||
/**
|
||||
* 1.2 设置 APNS 推送
|
||||
*
|
||||
* config -> token:苹果后台对客户端的唯一标识,需要主动调用系统 API 获取,获取方法如下:
|
||||
*
|
||||
* <pre>
|
||||
* //获取 token 代码示例
|
||||
* if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
|
||||
* [[UIApplication sharedApplication] registerUserNotificationSettings:
|
||||
* [UIUserNotificationSettings settingsForTypes:
|
||||
* (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
|
||||
* [[UIApplication sharedApplication] registerForRemoteNotifications];
|
||||
* }
|
||||
* else{
|
||||
* [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
|
||||
* (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
|
||||
* }
|
||||
*
|
||||
* //收到 token 代码示例
|
||||
* -(void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
|
||||
* //回调的 deviceToken 就是需要的 token 信息
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* config -> busiId:推送证书 ID,上传推送证书(p.12)到 IM 控制台后生成。
|
||||
* 具体步骤请参考 [离线推送](https://cloud.tencent.com/document/product/269/9154)。
|
||||
*
|
||||
* @note
|
||||
* - 接口成功设置后会开启离线推送功能,如果您需要自定义推送的格式信息,请参考 V2TIMManager+Message.h 里面的 sendMessage 接口。
|
||||
* - 如果成功开启了离线推送,APP 进后台后,如果收到消息,会弹系统推送通知,APP 进前台后,如果收到消息,则不会弹系统推送通知。
|
||||
* - APP 进后台后 SDK 会默认设置应用角标为所有会话未读数之和,如果您需要自定义 APP 的未读数,请监听 V2TIMAPNSListener 回调设置。
|
||||
* - APP 在未初始化或未登录成功状态下 SDK 不会设置应用角标,这种情况下如需设置应用角标,请自行调用系统函数设置。
|
||||
* - 如果您想关闭离线推送,请把 config 设置为 nil。
|
||||
*/
|
||||
- (void)setAPNS:(V2TIMAPNSConfig* _Nullable)config succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setAPNS(config:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// APNS 监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMAPNSListener <NSObject>
|
||||
@optional
|
||||
/** 程序进后台后,自定义 APP 的未读数,如果不处理,APP 未读数默认为所有会话未读数之和
|
||||
* <pre>
|
||||
*
|
||||
* - (uint32_t)onSetAPPUnreadCount {
|
||||
* return 100; // 自定义未读数
|
||||
* }
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
- (uint32_t)onSetAPPUnreadCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// APNS 配置
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMAPNSConfig : NSObject
|
||||
|
||||
/**
|
||||
* APNS token
|
||||
*/
|
||||
@property(nonatomic,strong) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台证书 ID,接入 TPNS 时不需要填写
|
||||
*/
|
||||
@property(nonatomic,assign) int businessID;
|
||||
|
||||
/**
|
||||
* 是否接入配置 TPNS, token 是否是从 TPNS 获取
|
||||
* @note 该字段已废弃
|
||||
* - 如果您之前通过 TPNS 接入离线推送,并且在 TPNS 控制台配置推送信息,可以继续按照该方式接入推送功能;
|
||||
* - 如果您从未接入 TPNS,从未在 TPNS 控制台配置推送信息,IM 将不在支持 TPNS 方式接入离线推送功能, 推荐参照如下方式接入:
|
||||
* https://cloud.tencent.com/document/product/269/74284
|
||||
*/
|
||||
@property(nonatomic,assign) BOOL isTPNSToken __attribute__((deprecated("not supported anymore, please use APNs")));
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,482 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Community
|
||||
//
|
||||
// 社群接口,里面包含了创建话题、删除话题、修改话题、获取话题列表等逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMCommunityListener;
|
||||
@class V2TIMTopicInfo;
|
||||
@class V2TIMTopicInfoResult;
|
||||
@class V2TIMTopicOperationResult;
|
||||
@class V2TIMPermissionGroupInfo;
|
||||
@class V2TIMPermissionGroupOperationResult;
|
||||
@class V2TIMPermissionGroupInfoResult;
|
||||
@class V2TIMPermissionGroupMemberOperationResult;
|
||||
@class V2TIMPermissionGroupMemberInfoResult;
|
||||
@class V2TIMTopicPermissionOperationResult;
|
||||
@class V2TIMTopicPermissionResult;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Community)
|
||||
|
||||
/// 操作话题列表结果
|
||||
typedef void(^V2TIMTopicOperationResultSucc)(NSMutableArray<V2TIMTopicOperationResult *> *resultList);
|
||||
/// 获取话题列表结果
|
||||
typedef void(^V2TIMTopicInfoResultListSucc)(NSMutableArray<V2TIMTopicInfoResult *> *resultList);
|
||||
/// 创建话题成功回调
|
||||
typedef void (^V2TIMCreateTopicSucc)(NSString * _Nullable topicID);
|
||||
/// 创建权限组成功回调
|
||||
typedef void (^V2TIMCreatePermissionGroupSucc)(NSString * _Nullable permissionGroupID);
|
||||
/// 操作权限组结果
|
||||
typedef void (^V2TIMPermissionGroupOperationResultSucc)(NSMutableArray<V2TIMPermissionGroupOperationResult *> *resultList);
|
||||
/// 获取权限组列表结果
|
||||
typedef void (^V2TIMPermissionGroupInfoResultListSucc)(NSMutableArray<V2TIMPermissionGroupInfoResult *> *resultList);
|
||||
/// 操作权限组成员结果
|
||||
typedef void (^V2TIMPermissionGroupMemberOperationResultListSucc)(NSMutableArray<V2TIMPermissionGroupMemberOperationResult *> *resultList);
|
||||
/// 获取权限组成员结果
|
||||
typedef void (^V2TIMPermissionGroupMemberInfoResultListSucc)(NSString * _Nullable nextCursor, NSMutableArray<V2TIMGroupMemberFullInfo *> *resultList);
|
||||
/// 获取话题权限结果
|
||||
typedef void (^V2TIMTopicPermissionResultSucc)(NSMutableArray<V2TIMTopicPermissionResult *> *resultList);
|
||||
|
||||
/// 社群权限值
|
||||
typedef NS_ENUM(NSInteger, V2TIMCommunityPermissionValue) {
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO = 0x1, ///< 修改群资料权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER = 0x1 << 1, ///< 群成员管理权限,包含踢人,进群审核、修改成员资料等。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_INFO = 0x1 << 2, ///< 管理权限组资料权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。权限包含创建、修改、删除权限组;在权限组中添加、修改、删除话题权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_MEMBER = 0x1 << 3, ///< 权限组成员管理权限,包含邀请成员进权限组和把成员从权限组踢出等。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_TOPIC_IN_COMMUNITY = 0x1 << 4, ///< 话题管理权限,包含创建、修改、删除话题等。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MUTE_MEMBER = 0x1 << 5, ///< 对某群成员在社群下所有话题的禁言权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_SEND_MESSAGE = 0x1 << 6, ///< 群成员在社群下所有话题的发消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_AT_ALL = 0x1 << 7, ///< 在社群下所有话题发 at all 消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_GET_HISTORY_MESSAGE = 0x1 << 8, ///< 在社群下所有话题拉取入群前的历史消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE = 0x1 << 9, ///< 在社群下所有话题撤回他人消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_BAN_MEMBER = 0x1 << 10, ///< 封禁社群成员权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
};
|
||||
|
||||
/// 话题权限值
|
||||
typedef NS_ENUM(NSInteger, V2TIMTopicPermissionValue) {
|
||||
V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC = 0x1, ///< 管理当前话题的权限,包括修改当前话题的资料、删除当前话题。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC_PERMISSION = 0x1 << 1, ///< 在当前话题中管理话题权限,包括添加、修改、移除话题权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_MUTE_MEMBER = 0x1 << 2, ///< 在当前话题中禁言成员权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_SEND_MESSAGE = 0x1 << 3, ///< 在当前话题中发消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_GET_HISTORY_MESSAGE = 0x1 << 4, ///< 在当前话题中拉取入群前的历史消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE = 0x1 << 5, ///< 在当前话题中撤回他人消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_AT_ALL = 0x1 << 6, ///< 在当前话题中发消息时有 at all 权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 社群监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 添加社群监听器
|
||||
*/
|
||||
- (void)addCommunityListener:(id<V2TIMCommunityListener>)listener NS_SWIFT_NAME(addCommunityListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除社群监听器
|
||||
*/
|
||||
- (void)removeCommunityListener:(id<V2TIMCommunityListener>)listener NS_SWIFT_NAME(removeCommunityListener(listener:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 社群接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 2.1 创建支持话题的社群
|
||||
*/
|
||||
- (void)createCommunity:(V2TIMGroupInfo*)info memberList:(NSArray<V2TIMCreateGroupMemberInfo *>* _Nullable)memberList succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createCommunity(info:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.1 获取当前用户已经加入的支持话题的社群列表
|
||||
*/
|
||||
- (void)getJoinedCommunityList:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getJoinedCommunityList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 创建话题
|
||||
*
|
||||
* @param groupID 社群 ID,必须以 @TGS#_ 开头。
|
||||
*/
|
||||
- (void)createTopicInCommunity:(NSString *)groupID topicInfo:(V2TIMTopicInfo *)topicInfo succ:(V2TIMCreateTopicSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createTopicInCommunity(groupID:topicInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 删除话题
|
||||
*/
|
||||
- (void)deleteTopicFromCommunity:(NSString *)groupID topicIDList:(NSArray<NSString *>*)topicIDList succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteTopicFromCommunity(groupID:topicIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.4 修改话题信息
|
||||
*/
|
||||
- (void)setTopicInfo:(V2TIMTopicInfo *)topicInfo succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setTopicInfo(topicInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 获取话题列表。
|
||||
* @note: topicIDList 传空时,获取此社群下的所有话题列表
|
||||
*/
|
||||
- (void)getTopicInfoList:(NSString *)groupID topicIDList:(NSArray<NSString *>* _Nullable)topicIDList succ:(V2TIMTopicInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getTopicInfoList(groupID:topicIDList:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 3.1 创建社群权限组(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)createPermissionGroupInCommunity:(V2TIMPermissionGroupInfo *)permissionGroupInfo succ:(V2TIMCreatePermissionGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createPermissionGroupInCommunity(permissionGroupInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.2 删除社群权限组(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)deletePermissionGroupFromCommunity:(NSString *)groupID permissionGroupIDList:(NSArray<NSString *>*)permissionGroupIDList succ:(V2TIMPermissionGroupOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deletePermissionGroupFromCommunity(groupID:permissionGroupIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.3 修改社群权限组(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)modifyPermissionGroupInfoInCommunity:(V2TIMPermissionGroupInfo *)permissionGroupInfo succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(modifyPermissionGroupInfoInCommunity(permissionGroupInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 获取已加入的社群权限组列表(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)getJoinedPermissionGroupListInCommunity:(NSString *)groupID succ:(V2TIMPermissionGroupInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getJoinedPermissionGroupListInCommunity(groupID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 获取社群权限组列表(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
* - permissionGroupIDList 为空时,获取所有的权限组列表;不为空时,获取指定的权限组列表
|
||||
*/
|
||||
- (void)getPermissionGroupListInCommunity:(NSString *)groupID permissionGroupIDList:(NSArray<NSString *>* _Nullable)permissionGroupIDList succ:(V2TIMPermissionGroupInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getPermissionGroupListInCommunity(groupID:permissionGroupIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 向社群权限组添加成员(7.7 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)addCommunityMembersToPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID memberList:(NSArray<NSString *>*)memberList succ:(V2TIMPermissionGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addCommunityMembersToPermissionGroup(groupID:permissionGroupID:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.7 从社群权限组删除成员(7.8 及其以上版本支持)
|
||||
*/
|
||||
- (void)removeCommunityMembersFromPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID memberList:(NSArray<NSString *>*)memberList succ:(V2TIMPermissionGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(removeCommunityMembersFromPermissionGroup(groupID:permissionGroupID:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.8 获取社群权限组成员列表(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)getCommunityMemberListInPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID nextCursor:(NSString * _Nullable)nextCursor succ:(V2TIMPermissionGroupMemberInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getCommunityMemberListInPermissionGroup(groupID:permissionGroupID:nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.9 向权限组添加话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)addTopicPermissionToPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addTopicPermissionToPermissionGroup(groupID:permissionGroupID:topicPermissionMap:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.10 从权限组中删除话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)deleteTopicPermissionFromPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicIDList:(NSArray<NSString *>*)topicIDList succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteTopicPermissionFromPermissionGroup(groupID:permissionGroupID:topicIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.11 修改权限组中的话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)modifyTopicPermissionInPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(modifyTopicPermissionInPermissionGroup(groupID:permissionGroupID:topicPermissionMap:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.12 获取权限组中的话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)getTopicPermissionInPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicIDList:(NSArray<NSString *>*)topicIDList succ:(V2TIMTopicPermissionResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getTopicPermissionInPermissionGroup(groupID:permissionGroupID:topicIDList:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 社群回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 资料关系链回调
|
||||
V2TIM_EXPORT @protocol V2TIMCommunityListener <NSObject>
|
||||
@optional
|
||||
|
||||
/// 话题创建回调
|
||||
- (void)onCreateTopic:(NSString * _Nullable)groupID topicID:(NSString * _Nullable)topicID NS_SWIFT_NAME(onCreateTopic(groupID:topicID:));
|
||||
|
||||
/// 话题被删除回调
|
||||
- (void)onDeleteTopic:(NSString * _Nullable)groupID topicIDList:(NSArray<NSString *> *)topicIDList NS_SWIFT_NAME(onDeleteTopic(groupID:topicIDList:));
|
||||
|
||||
/// 话题更新回调
|
||||
- (void)onChangeTopicInfo:(NSString * _Nullable)groupID topicInfo:(V2TIMTopicInfo *)topicInfo NS_SWIFT_NAME(onChangeTopicInfo(groupID:topicInfo:));
|
||||
|
||||
/// 收到 RESTAPI 下发的话题自定义系统消息
|
||||
- (void)onReceiveTopicRESTCustomData:(NSString * _Nullable)topicID data:(NSData * _Nullable)data NS_SWIFT_NAME(onReceiveTopicRESTCustomData(topicID:data:));
|
||||
|
||||
/// 权限组创建通知
|
||||
- (void)onCreatePermissionGroup:(NSString * _Nullable)groupID permissionGroupInfo:(V2TIMPermissionGroupInfo *)permissionGroupInfo NS_SWIFT_NAME(onCreatePermissionGroup(groupID:permissionGroupInfo:));
|
||||
|
||||
/// 权限组删除通知
|
||||
- (void)onDeletePermissionGroup:(NSString * _Nullable)groupID permissionGroupIDList:(NSArray<NSString *> *)permissionGroupIDList NS_SWIFT_NAME(onDeletePermissionGroup(groupID:permissionGroupIDList:));
|
||||
|
||||
/// 权限组更新通知
|
||||
- (void)onChangePermissionGroupInfo:(NSString * _Nullable)groupID permissionGroupInfo:(V2TIMPermissionGroupInfo *)permissionGroupInfo NS_SWIFT_NAME(onChangePermissionGroupInfo(groupID:permissionGroupInfo:));
|
||||
|
||||
/// 添加成员到权限组通知
|
||||
- (void)onAddMembersToPermissionGroup:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID memberIDList:(NSArray<NSString *> *)memberIDList NS_SWIFT_NAME(onAddMembersToPermissionGroup(groupID:permissionGroupID:memberIDList:));
|
||||
|
||||
/// 从权限组中删除成员通知
|
||||
- (void)onRemoveMembersFromPermissionGroup:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID memberIDList:(NSArray<NSString *> *)memberIDList NS_SWIFT_NAME(onRemoveMembersFromPermissionGroup(groupID:permissionGroupID:memberIDList:));
|
||||
|
||||
/// 话题权限添加通知
|
||||
- (void)onAddTopicPermission:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap NS_SWIFT_NAME(onAddTopicPermission(groupID:permissionGroupID:topicPermissionMap:));
|
||||
|
||||
/// 话题权限删除通知
|
||||
- (void)onDeleteTopicPermission:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID topicIDList:(NSArray<NSString *>*)topicIDList NS_SWIFT_NAME(onDeleteTopicPermission(groupID:permissionGroupID:topicIDList:));
|
||||
|
||||
/// 话题权限修改通知
|
||||
- (void)onModifyTopicPermission:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap NS_SWIFT_NAME(onModifyTopicPermission(groupID:permissionGroupID:topicPermissionMap:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题基本资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicInfo : NSObject
|
||||
|
||||
/// 话题 ID,只能在创建话题或者修改话题信息的时候设置。组成方式为:社群 ID + @TOPIC#_xxx,例如社群 ID 为 @TGS#_123,则话题 ID 为 @TGS#_123@TOPIC#_xxx
|
||||
@property(nonatomic, strong, nullable) NSString *topicID;
|
||||
|
||||
/// 话题类型(默认为 Public 话题)(从 8.4 版本开始支持)
|
||||
/// "Public" :公开话题,社群内成员可以自由进出发言。
|
||||
/// "Private" :私密话题,有自己的成员列表(成员上限 10000 人),社群成员需要加入话题才能发言(私密话题需要购买企业版套餐包)。
|
||||
@property(nonatomic, strong, nullable) NSString *topicType;
|
||||
|
||||
/// 话题名称,最长 150 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *topicName;
|
||||
|
||||
/// 话题头像,最长 500 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *topicFaceURL;
|
||||
|
||||
/// 话题介绍,最长 400 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *introduction;
|
||||
|
||||
/// 话题公告,最长 400 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *notification;
|
||||
|
||||
/// 话题全员禁言
|
||||
@property(nonatomic, assign) BOOL isAllMuted;
|
||||
|
||||
/// 当前用户在话题中的禁言时间,单位:秒
|
||||
@property(nonatomic, assign, readonly) uint32_t selfMuteTime;
|
||||
|
||||
/// 话题自定义字段
|
||||
@property(nonatomic, strong, nullable) NSString *customString;
|
||||
|
||||
/// 话题消息接收选项,修改话题消息接收选项请调用 setGroupReceiveMessageOpt 接口
|
||||
@property(nonatomic, assign, readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/// 话题草稿
|
||||
@property(nonatomic, strong, nullable) NSString *draftText;
|
||||
|
||||
/// 话题消息未读数量
|
||||
@property(nonatomic, assign, readonly) uint64_t unreadCount;
|
||||
|
||||
/// 话题 lastMessage
|
||||
@property(nonatomic,strong,readonly, nullable) V2TIMMessage *lastMessage;
|
||||
|
||||
/// 话题已读消息的 sequence,从 7.8 版本开始支持
|
||||
@property(nonatomic, assign, readonly) uint64_t readSequence;
|
||||
|
||||
/// 话题 at 信息列表
|
||||
@property(nonatomic, strong, readonly, nullable) NSArray<V2TIMGroupAtInfo *> *groupAtInfolist;
|
||||
|
||||
/// 话题创建时间,单位:秒
|
||||
@property(nonatomic, assign, readonly) uint32_t createTime;
|
||||
|
||||
/// 申请加入话题是否需要管理员审批(私密话题有效,默认不需要审批,可以自由加入)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, assign) V2TIMGroupAddOpt topicAddOpt;
|
||||
|
||||
/// 邀请加入话题是否需要管理员审批(私密话题有效,默认不需要审批,可以自由加入)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, assign) V2TIMGroupAddOpt topicApproveOpt;
|
||||
|
||||
/// 话题默认群成员(私密话题有效,最大支持 100 个群成员,只能在创建话题的时候设置)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, strong, nullable) NSArray<V2TIMCreateGroupMemberInfo *> *memberList;
|
||||
|
||||
/// 话题成员的最大个数(私密话题有效,最大支持 10000,默认 10000,只能在创建话题的时候设置)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, assign) uint32_t memberMaxCount;
|
||||
|
||||
/// 话题默认权限,7.8 版本开始支持
|
||||
/// 群成员在没有加入任何权限组时的默认权限,仅在社群资料 V2TIMGroupInfo 中 enablePermissionGroup = true 打开权限组之后生效
|
||||
@property(nonatomic, assign) uint64_t defaultPermissions;
|
||||
|
||||
/// 登录用户在话题中的消息接收选项是否继承社群。该功能仅增强版 SDK 8.1 及以上版本支持。
|
||||
- (BOOL)isInheritMessageReceiveOptionFromCommunity;
|
||||
|
||||
/**
|
||||
* 设置登录用户在话题中的消息接收选项是否继承社群。该功能仅增强版 SDK 8.1 及以上版本支持。
|
||||
*/
|
||||
- (void)setInheritMessageReceiveOptionFromCommunity:(BOOL)isInherit succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题处理结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicOperationResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic, assign) int errorCode;
|
||||
|
||||
/// 错误信息
|
||||
@property(nonatomic, strong, nullable) NSString *errorMsg;
|
||||
|
||||
/// 话题 ID
|
||||
@property(nonatomic, strong, nullable) NSString *topicID;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic, assign) int errorCode;
|
||||
|
||||
/// 错误信息
|
||||
@property(nonatomic, strong, nullable) NSString *errorMsg;
|
||||
|
||||
/// 话题资料
|
||||
@property(nonatomic, strong) V2TIMTopicInfo *topicInfo;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组信息
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupInfo : NSObject
|
||||
|
||||
/// 群 ID
|
||||
@property(nonatomic, strong, nullable) NSString *groupID;
|
||||
|
||||
/// 权限组 ID
|
||||
@property(nonatomic, strong, nullable) NSString *permissionGroupID;
|
||||
|
||||
/// 权限组名称
|
||||
@property(nonatomic, strong, nullable) NSString *permissionGroupName;
|
||||
|
||||
/// 群权限
|
||||
@property(nonatomic, assign) uint64_t groupPermission;
|
||||
|
||||
/// 自定义数据
|
||||
@property(nonatomic, strong, nullable) NSString *customData;
|
||||
|
||||
/// 成员人数
|
||||
@property(nonatomic, assign, readonly) uint64_t memberCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组信息获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong) V2TIMPermissionGroupInfo *info;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组处理结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupOperationResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong,nullable) NSString *permissionGroupID;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组成员处理结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupMemberOperationResult : NSObject
|
||||
|
||||
/// 成员 userID
|
||||
@property(nonatomic,strong,nullable) NSString *memberID;
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题权限获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicPermissionResult : NSObject
|
||||
|
||||
/// 话题
|
||||
@property(nonatomic,strong,nullable) NSString *topicID;
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 话题权限
|
||||
@property(nonatomic,assign) uint64_t topicPermission;
|
||||
|
||||
/// 社群 ID
|
||||
@property(nonatomic,strong,nullable) NSString *groupID;
|
||||
|
||||
/// 权限组 ID
|
||||
@property(nonatomic,strong,nullable) NSString *permissionGroupID;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,505 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Conversation
|
||||
//
|
||||
// 会话接口,里面包含了会话的获取,删除,更新的逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMConversationListener;
|
||||
@class V2TIMConversation;
|
||||
@class V2TIMConversationListFilter;
|
||||
@class V2TIMConversationOperationResult;
|
||||
@class V2TIMGroupAtInfo;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 消息会话相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Conversation)
|
||||
|
||||
/// 获取会话列表成功的回调,nextSeq:下一次分页拉取的游标 isFinished:会话列表是否已经拉取完毕
|
||||
typedef void(^V2TIMConversationResultSucc)(NSArray<V2TIMConversation *>* list, uint64_t nextSeq, BOOL isFinished);
|
||||
/// 获取单个会话成功回调
|
||||
typedef void(^V2TIMConversationSucc)(V2TIMConversation *conv);
|
||||
/// 搜索会话列表成功回调
|
||||
typedef void(^V2TIMConversationListSucc)(NSArray<V2TIMConversation *>*list);
|
||||
/// 获取会话总未读数回调
|
||||
typedef void(^V2TIMTotalUnreadMessageCountSucc)(UInt64 totalUnreadCount);
|
||||
/// 获取会话分组列表成功回调
|
||||
typedef void (^V2TIMConversationGroupListSucc)(NSArray<NSString *> * groupList);
|
||||
/// 会话操作成功回调
|
||||
typedef void (^V2TIMConversationOperationResultSucc)(NSArray<V2TIMConversationOperationResult *> *result);
|
||||
|
||||
/// 会话类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMConversationType) {
|
||||
V2TIM_UNKNOWN = 0, ///< 未知
|
||||
V2TIM_C2C = 1, ///< 单聊
|
||||
V2TIM_GROUP = 2, ///< 群聊
|
||||
};
|
||||
|
||||
/// @ 类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupAtType) {
|
||||
V2TIM_AT_ME = 1, ///< @ 我
|
||||
V2TIM_AT_ALL = 2, ///< @ 群里所有人
|
||||
V2TIM_AT_ALL_AT_ME = 3, ///< @ 群里所有人并且单独 @ 我
|
||||
};
|
||||
|
||||
/// 会话标记类型
|
||||
typedef NS_ENUM(NSUInteger, V2TIMConversationMarkType) {
|
||||
V2TIM_CONVERSATION_MARK_TYPE_STAR = 0x1, ///< 会话标星
|
||||
V2TIM_CONVERSATION_MARK_TYPE_UNREAD = 0x1 << 1, ///< 会话标记未读(重要会话)
|
||||
V2TIM_CONVERSATION_MARK_TYPE_FOLD = 0x1 << 2, ///< 会话折叠
|
||||
V2TIM_CONVERSATION_MARK_TYPE_HIDE = 0x1 << 3, ///< 会话隐藏
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话基础接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 1.1 添加会话监听器
|
||||
*/
|
||||
- (void)addConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(addConversationListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除会话监听器
|
||||
*/
|
||||
- (void)removeConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(removeConversationListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.3 获取会话列表
|
||||
*
|
||||
* - 一个会话对应一个聊天窗口,比如跟一个好友的 1v1 聊天,或者一个聊天群,都是一个会话。
|
||||
* - 由于历史的会话数量可能很多,所以该接口希望您采用分页查询的方式进行调用,每次分页拉取的个数建议为 100 个。
|
||||
* - 该接口拉取的是本地缓存的会话,如果服务器会话有更新,SDK 内部会自动同步,然后在 @ref V2TIMConversationListener 回调告知客户。
|
||||
* - 如果会话全部拉取完毕,成功回调里面 V2TIMConversationResult 中的 isFinished 获取字段值为 YES。
|
||||
*
|
||||
* @note 会话排序规则
|
||||
* - 5.5.892 及以后版本, 该接口获取的会话列表默认已经按照会话 orderKey 做了排序,orderKey 值越大,代表该会话排序越靠前。
|
||||
* - 5.5.892 以前版本,该接口获取的会话列表默认已经按照会话 lastMessage -> timestamp 做了排序,timestamp 越大,会话越靠前。
|
||||
*
|
||||
* @param nextSeq 分页拉取的游标,第一次默认取传 0,后续分页拉传上一次分页拉取成功回调里的 nextSeq
|
||||
* @param count 分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话
|
||||
*/
|
||||
- (void)getConversationList:(uint64_t)nextSeq count:(int)count succ:(V2TIMConversationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationList(nextSeq:count:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.4 获取单个会话
|
||||
*
|
||||
* @param conversationID 会话唯一 ID, C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)getConversation:(NSString *)conversationID succ:(V2TIMConversationSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversation(conversationID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.5 获取指定会话列表
|
||||
*
|
||||
* @param conversationIDList 会话唯一 ID 列表,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)getConversationList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationList(conversationIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.6 获取会话列表高级接口(从 6.5 版本开始支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
* @param nextSeq 分页拉取的游标
|
||||
* @param count 分页拉取的个数
|
||||
*
|
||||
*/
|
||||
- (void)getConversationListByFilter:(V2TIMConversationListFilter *)filter nextSeq:(uint64_t)seq count:(uint32_t)count succ:(V2TIMConversationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationListByFilter(filter:nextSeq:count:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.7 删除会话以及该会话中的历史消息
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*
|
||||
* @note
|
||||
* - 该会话以及会话中的历史消息,会被 SDK 从本地和服务端一同删除掉,并且不可恢复。
|
||||
*/
|
||||
- (void)deleteConversation:(NSString *)conversationID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteConversation(conversation:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.8 删除会话列表(7.1 及以上版本支持)
|
||||
*
|
||||
* @param conversationIDList 会话唯一 ID 列表,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param clearMessage 是否删除会话中的消息;设置为 NO 时,保留会话消息;设置为 YES 时,本地和服务器的消息会一起删除,并且不可恢复
|
||||
*
|
||||
* @note 每次最多支持删除 100 个会话
|
||||
*/
|
||||
- (void)deleteConversationList:(NSArray<NSString *> *)conversationIDList clearMessage:(BOOL)clearMessage succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteConversationList(conversationIDList:clearMessage:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.9 设置会话草稿
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*
|
||||
* 只在本地保存,不会存储 Server,不能多端同步,程序卸载重装会失效。
|
||||
*/
|
||||
- (void)setConversationDraft:(NSString *)conversationID draftText:(NSString * _Nullable)draftText succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setConversationDraft(conversationID:draftText:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.10 设置会话自定义数据(从 6.5 版本开始支持)
|
||||
*
|
||||
* @param customData 自定义数据,最大支持 256 bytes
|
||||
*/
|
||||
- (void)setConversationCustomData:(NSArray<NSString *> *)conversationIDList customData:(NSData * _Nullable)customData succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(setConversationCustomData(conversationIDList:customData:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.11 设置会话置顶(5.3.425 及以上版本支持)
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param isPinned 是否置顶
|
||||
*/
|
||||
- (void)pinConversation:(NSString *)conversationID isPinned:(BOOL)isPinned succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(pinConversation(conversationID:isPinned:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.12 标记会话(从 6.5 版本开始支持,需要您购买旗舰版套餐)
|
||||
*
|
||||
* @param conversationIDList 会话列表
|
||||
* @param markType 会话标记类型,取值详见 @V2TIMConversationMarkType。
|
||||
* @param enableMark YES:设置标记 NO:取消标记
|
||||
*
|
||||
* 如果已有标记不能满足您的需求,您可以自定义扩展标记,扩展标记需要满足以下两个条件:
|
||||
* 1、扩展标记值不能和 V2TIMConversationMarkType 已有的标记值冲突
|
||||
* 2、扩展标记值必须是 0x1LL << n 的位移值(32 <= n < 64,即 n 必须大于等于 32 并且小于 64),比如扩展标记值 0x1LL << 32 表示 "iPhone 在线"
|
||||
*
|
||||
* @note: 扩展标记值不能设置为 0x1 << 32,要设置为 0x1LL << 32,明确告诉编译器是 64 位的整型常量。
|
||||
*
|
||||
*/
|
||||
- (void)markConversation:(NSArray<NSString *> *)conversationIDList markType:(NSNumber *)markType enableMark:(BOOL)enableMark succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(markConversation(conversationIDList:markType:enableMark:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.13 获取所有会话的未读消息总数(5.3.425 及以上版本支持)
|
||||
* @note
|
||||
* - 调用该接口以后,任意会话的未读数发生变化时,SDK 都会给您抛 onTotalUnreadMessageCountChanged 回调。
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)getTotalUnreadMessageCount:(V2TIMTotalUnreadMessageCountSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getTotalUnreadMessageCount(succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.14 获取根据 filter 过滤的会话未读总数(7.0 及以上版本支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
*
|
||||
* @note
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)getUnreadMessageCountByFilter:(V2TIMConversationListFilter *)filter succ:(V2TIMTotalUnreadMessageCountSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getUnreadMessageCountByFilter(filter:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.15 注册监听指定 filter 的会话未读总数变化(7.0 及以上版本支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
*
|
||||
* @note
|
||||
* - 当您调用这个接口以后,该 filter 下的未读数发生变化时,SDK 会给您抛 onUnreadMessageCountChangedByFilter 回调。
|
||||
*/
|
||||
- (void)subscribeUnreadMessageCountByFilter:(V2TIMConversationListFilter *)filter NS_SWIFT_NAME(subscribeUnreadMessageCountByFilter(filter:));
|
||||
|
||||
/**
|
||||
* 1.16 取消监听指定 filter 的会话未读总数变化(7.0 及以上版本支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
*
|
||||
*/
|
||||
- (void)unsubscribeUnreadMessageCountByFilter:(V2TIMConversationListFilter *)filter NS_SWIFT_NAME(unsubscribeUnreadMessageCountByFilter(filter:));
|
||||
|
||||
/**
|
||||
* 1.17 清理会话的未读消息计数(7.1 及以上版本支持)
|
||||
*
|
||||
* @param conversationID 会话唯一 ID, C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param cleanTimestamp 清理时间戳,单位为秒,仅对单聊会话生效,指定清理哪一个 timestamp 之前的未读消息计数;当传入为 0 时,对应会话所有的未读消息将被清理,会话的未读数会清 0
|
||||
* @param cleanSequence 清理 sequence,仅对群聊会话生效,指定清理哪一个 sequence 之前的未读消息计数;当传入为 0 时,对应会话所有的未读消息将被清理,会话的未读数会清 0
|
||||
*
|
||||
* @note
|
||||
* - 当您想清理所有单聊会话的未读消息计数,conversationID 请传入 @"c2c",即不指定具体的 userID;
|
||||
* - 当您想清理所有群聊会话的未读消息计数,conversationID 请传入 @"group",即不指定具体的 groupID;
|
||||
* - 当您想清理所有会话的未读消息计数,conversationID 请传入 @“” 或者 nil;
|
||||
* - 该接口调用成功后,SDK 会通过 onConversationChanged 回调将对应会话的最新未读数通知给您。
|
||||
*/
|
||||
- (void)cleanConversationUnreadMessageCount:(NSString * _Nullable)conversationID cleanTimestamp:(uint64_t)cleanTimestamp cleanSequence:(uint64_t)cleanSequence succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(cleanConversationUnreadMessageCount(conversationID:cleanTimestamp:cleanSequence:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.18 设置会话监听器(待废弃接口,请使用 addConversationListener 和 removeConversationListener 接口)
|
||||
*/
|
||||
- (void)setConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(setConversationListener(listener:)) __attribute__((deprecated("use addConversationListener: instead")));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话分组相关接口 (从 6.5 版本开始支持,需要您购买旗舰版套餐)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 2.1 创建会话分组
|
||||
*
|
||||
* @param groupName 分组名(必填参数,长度要 > 0,最大支持 32 bytes)
|
||||
* @param conversationIDList 会话 ID 列表(必填参数,不能为空)
|
||||
*
|
||||
* @note 会话分组最大支持 20 个,不再使用的分组请及时删除。
|
||||
*/
|
||||
- (void)createConversationGroup:(NSString *)groupName conversationIDList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createConversationGroup(groupName:conversationIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 获取会话分组列表
|
||||
*
|
||||
* @note 该接口获取的是本地缓存的会话分组,建议在 onSyncServerFinish 之后调用。
|
||||
*/
|
||||
- (void)getConversationGroupList:(V2TIMConversationGroupListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationGroupList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 删除会话分组
|
||||
*/
|
||||
- (void)deleteConversationGroup:(NSString *)groupName succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteConversationGroup(groupName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.4 重命名会话分组
|
||||
*/
|
||||
- (void)renameConversationGroup:(NSString*)oldName newName:(NSString*)newName succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(renameConversationGroup(oldName:newName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 添加会话到一个会话分组
|
||||
*/
|
||||
- (void)addConversationsToGroup:(NSString *)groupName conversationIDList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addConversationsToGroup(groupName:conversationIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.6 从一个会话分组中删除会话
|
||||
*/
|
||||
- (void)deleteConversationsFromGroup:(NSString *)groupName conversationIDList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteConversationsFromGroup(groupName:conversationIDList:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话变更监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMConversationListener <NSObject>
|
||||
@optional
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 会话基础通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 同步服务器会话开始,SDK 会在登录成功或者断网重连后自动同步服务器会话,您可以监听这个事件做一些 UI 进度展示操作。
|
||||
*/
|
||||
- (void)onSyncServerStart;
|
||||
|
||||
/**
|
||||
* 同步服务器会话完成,如果会话有变更,会通过 onNewConversation | onConversationChanged 回调告知客户
|
||||
*/
|
||||
- (void)onSyncServerFinish;
|
||||
|
||||
/**
|
||||
* 同步服务器会话失败
|
||||
*/
|
||||
- (void)onSyncServerFailed;
|
||||
|
||||
/**
|
||||
* 有新的会话(比如收到一个新同事发来的单聊消息、或者被拉入了一个新的群组中),可以根据会话的 orderKey 重新对会话列表做排序。
|
||||
*/
|
||||
- (void)onNewConversation:(NSArray<V2TIMConversation*> *) conversationList NS_SWIFT_NAME(onNewConversation(conversationList:));
|
||||
|
||||
/**
|
||||
* 某些会话的关键信息发生变化(未读计数发生变化、最后一条消息被更新等等),可以根据会话的 orderKey 重新对会话列表做排序。
|
||||
*/
|
||||
- (void)onConversationChanged:(NSArray<V2TIMConversation*> *) conversationList NS_SWIFT_NAME(onConversationChanged(conversationList:));
|
||||
|
||||
/**
|
||||
* 会话被删除的通知(7.2 及以上版本支持)
|
||||
*
|
||||
* @note
|
||||
* conversationIDList 表示被删除的会话唯一 ID 列表。C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)onConversationDeleted:(NSArray<NSString *> *)conversationIDList NS_SWIFT_NAME(onConversationDeleted(conversationIDList:));
|
||||
|
||||
/**
|
||||
* 全部会话未读总数变更的通知(5.3.425 及以上版本支持)
|
||||
* @note
|
||||
* - 当您调用 getTotalUnreadMessageCount 获取全部会话未读总数以后,任意会话的未读数发生变化时,SDK 都会通过该回调把最新的未读总数通知给您。
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)onTotalUnreadMessageCountChanged:(UInt64)totalUnreadCount NS_SWIFT_NAME(onTotalUnreadMessageCountChanged(totalUnreadCount:));
|
||||
|
||||
/**
|
||||
* 根据 filter 过滤的未读消息总数变更通知(7.0 及以上版本支持)
|
||||
* @note
|
||||
* - 您可以调用 subscribeUnreadMessageCountByFilter 注册监听指定 filter 下的未读总数变化,SDK 通过这个回调把最新的未读总数通知给您。
|
||||
* - 您可以注册监听多个不同 filter 下的未读总数变化,这个回调的 filter 参数就是注册监听时指定的 filter,该 filter 携带了 conversationType、conversationGroup 和 markType 三个字段,通过判断这三字段是不是都相同,来区分出不同的 filter。
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)onUnreadMessageCountChangedByFilter:(V2TIMConversationListFilter *)filter totalUnreadCount:(UInt64)totalUnreadCount NS_SWIFT_NAME(onUnreadMessageCountChangedByFilter(filter:totalUnreadCount:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 会话分组相关通知(从 6.5 版本开始支持)
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 会话分组被创建
|
||||
*/
|
||||
- (void)onConversationGroupCreated:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList NS_SWIFT_NAME(onConversationGroupCreated(groupName:conversationList:));
|
||||
|
||||
/**
|
||||
* 会话分组被删除
|
||||
*/
|
||||
- (void)onConversationGroupDeleted:(NSString * _Nullable)groupName NS_SWIFT_NAME(onConversationGroupDeleted(groupName:));
|
||||
|
||||
/**
|
||||
* 会话分组名变更
|
||||
*/
|
||||
- (void)onConversationGroupNameChanged:(NSString * _Nullable)oldName newName:(NSString * _Nullable)newName NS_SWIFT_NAME(onConversationGroupNameChanged(oldName:newName:));
|
||||
|
||||
/**
|
||||
* 会话分组新增会话
|
||||
*/
|
||||
- (void)onConversationsAddedToGroup:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList NS_SWIFT_NAME(onConversationsAddedToGroup(groupName:conversationList:));
|
||||
|
||||
/**
|
||||
* 会话分组删除会话
|
||||
* @note
|
||||
* - reason 表示会话从所在分组删除的原因,其取值有:
|
||||
* - 当 reason 为 0 时,表示由用户主动调用 deleteConversationsFromGroup 触发
|
||||
* - 当 reason 为 1 时,表示添加到分组的会话数量超过 1000,最早添加进分组的会话被淘汰
|
||||
*/
|
||||
- (void)onConversationsDeletedFromGroup:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList reason:(uint32_t)reason NS_SWIFT_NAME(onConversationsDeletedFromGroup(groupName:conversationList:reason:));
|
||||
|
||||
/**
|
||||
* 会话分组删除会话(待废弃接口,请使用 onConversationsDeletedFromGroup:conversationList:reason: 接口)
|
||||
*/
|
||||
- (void)onConversationsDeletedFromGroup:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList NS_SWIFT_NAME(onConversationsDeletedFromGroup(groupName:conversationList:)) __attribute__((deprecated("use onConversationsDeletedFromGroup:conversationList:reason: instead")));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话对象 V2TIMConversation
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 会话对象
|
||||
V2TIM_EXPORT @interface V2TIMConversation : NSObject
|
||||
|
||||
/// 会话类型
|
||||
@property(nonatomic,assign,readonly) V2TIMConversationType type;
|
||||
|
||||
/// 会话唯一 ID,如果是 C2C 单聊,组成方式为 c2c_userID,如果是群聊,组成方式为 group_groupID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *conversationID;
|
||||
|
||||
/// 如果会话类型为 C2C 单聊,userID 会存储对方的用户ID,否则为 nil
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *userID;
|
||||
|
||||
/// 如果会话类型为群聊,groupID 会存储当前群的群 ID,否则为 nil
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *groupID;
|
||||
|
||||
/// 如果会话类型为群聊,groupType 为当前群类型,否则为 nil
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *groupType;
|
||||
|
||||
/// 会话展示名称(群组:群名称 >> 群 ID;C2C:对方好友备注 >> 对方昵称 >> 对方的 userID)
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *showName;
|
||||
|
||||
/// 会话展示头像(群组:群头像;C2C:对方头像)
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *faceUrl;
|
||||
|
||||
/// 会话未读消息数量,直播群(AVChatRoom)不支持未读计数,默认为 0
|
||||
@property(nonatomic,assign,readonly) int unreadCount;
|
||||
|
||||
/// 消息接收选项(接收 | 接收但不提醒 | 不接收)
|
||||
@property(nonatomic,assign,readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/**
|
||||
* 会话最后一条消息
|
||||
* @note 5.5.892 以前版本,请您使用 lastMessage -> timestamp 对会话做排序,timestamp 越大,会话越靠前
|
||||
*/
|
||||
@property(nonatomic,strong,readonly,nullable) V2TIMMessage *lastMessage;
|
||||
|
||||
/// 群会话 @ 信息列表,用于展示 "有人@我" 或 "@所有人" 这两种提醒状态
|
||||
@property(nonatomic,strong,readonly,nullable) NSArray<V2TIMGroupAtInfo *> *groupAtInfolist;
|
||||
|
||||
/// 草稿信息,设置草稿信息请调用 setConversationDraft() 接口
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *draftText;
|
||||
|
||||
/// 上次设置草稿时的 UTC 时间戳
|
||||
@property(nonatomic,strong,readonly,nullable) NSDate *draftTimestamp;
|
||||
|
||||
/// 是否置顶
|
||||
@property(nonatomic,assign,readonly) BOOL isPinned;
|
||||
|
||||
/**
|
||||
* 排序字段(5.5.892 及以后版本支持)
|
||||
* @note
|
||||
* - 排序字段 orderKey 是按照会话的激活时间线性递增的一个数字(注意:不是时间戳,因为同一时刻可能会有多个会话被同时激活)
|
||||
* - 5.5.892 及其以后版本,推荐您使用该字段对所有会话进行排序,orderKey 值越大,代表该会话排序越靠前
|
||||
* - 当您 “清空会话所有消息” 或者 “逐个删除会话的所有消息” 之后,会话的 lastMessage 变为空,但会话的 orderKey 不会改变;如果想保持会话的排序位置不变,可以使用该字段对所有会话进行排序
|
||||
*/
|
||||
@property(nonatomic,assign,readonly) NSUInteger orderKey;
|
||||
|
||||
/// 会话标记列表,取值详见 @V2TIMConversationMarkType(从 6.5 版本开始支持)
|
||||
@property(nonatomic,strong,readonly,nullable) NSArray<NSNumber *> * markList;
|
||||
|
||||
/// 会话自定义数据(从 6.5 版本开始支持)
|
||||
@property(nonatomic,strong,readonly,nullable) NSData *customData;
|
||||
|
||||
/// 会话所属分组列表(从 6.5 版本开始支持)
|
||||
@property(nonatomic,strong,readonly,nullable) NSArray<NSString *> *conversationGroupList;
|
||||
|
||||
/// 最新已读消息的 UTC 时间戳,仅对单聊会话生效(从 7.1 版本开始支持)
|
||||
@property(nonatomic,assign,readonly) NSUInteger c2cReadTimestamp;
|
||||
|
||||
/// 已读消息的 sequence,仅对群聊会话生效(从 7.1 版本开始支持)
|
||||
@property(nonatomic,assign,readonly) NSUInteger groupReadSequence;
|
||||
|
||||
@end
|
||||
|
||||
/// 会话 filter
|
||||
V2TIM_EXPORT @interface V2TIMConversationListFilter : NSObject
|
||||
|
||||
/// C2C 或群会话(填 0 代表不过滤此项)
|
||||
@property(nonatomic,assign) V2TIMConversationType type;
|
||||
|
||||
/// 会话分组名称
|
||||
/// 不设置表示不过滤此项,设置为 @"" 代表过滤不属于任何分组的会话
|
||||
@property(nonatomic,strong,nullable) NSString *conversationGroup;
|
||||
|
||||
/// 标记类型,取值详见 @V2TIMConversationMarkType
|
||||
/// 不设置表示不过滤此项,设置为 0 代表过滤不含任何标记的会话
|
||||
@property(nonatomic,assign) NSUInteger markType;
|
||||
|
||||
/// 会话未读数
|
||||
/// 不设置表示不过滤此项,设置为 YES 代表过滤含未读数的会话;设置为 NO 代表过滤不含未读数的会话
|
||||
@property(nonatomic,assign) BOOL hasUnreadCount;
|
||||
|
||||
/// 会话 @ 信息
|
||||
/// 不设置表示不过滤此项,设置为 YES 代表过滤含群 @ 消息的会话;设置为 NO 代表过滤不含群 @ 消息的会话
|
||||
@property(nonatomic,assign) BOOL hasGroupAtInfo;
|
||||
@end
|
||||
|
||||
/// @ 信息
|
||||
V2TIM_EXPORT @interface V2TIMGroupAtInfo : NSObject
|
||||
/// @ 消息序列号,即带有 “@我” 或者 “@所有人” 标记的消息的序列号
|
||||
@property(nonatomic,assign,readonly) uint64_t seq;
|
||||
|
||||
/// @ 提醒类型,分成 “@我” 、“@所有人” 以及 “@我并@所有人” 三类
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupAtType atType;
|
||||
|
||||
@end
|
||||
|
||||
/// 会话操作结果
|
||||
V2TIM_EXPORT @interface V2TIMConversationOperationResult : NSObject
|
||||
|
||||
/// 会话 ID
|
||||
@property(nonatomic,strong,nullable) NSString* conversationID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,838 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Friendship
|
||||
//
|
||||
// 关系链接口,里面包含了好友的添加、删除,黑名单的添加、删除等逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMFriendshipListener;
|
||||
@class V2TIMFriendOperationResult;
|
||||
@class V2TIMFriendInfoResult;
|
||||
@class V2TIMFriendInfo;
|
||||
@class V2TIMFriendCheckResult;
|
||||
@class V2TIMFriendApplicationResult;
|
||||
@class V2TIMFriendAddApplication;
|
||||
@class V2TIMFriendApplication;
|
||||
@class V2TIMFriendGroup;
|
||||
@class V2TIMFriendSearchParam;
|
||||
@class V2TIMOfficialAccountInfo;
|
||||
@class V2TIMOfficialAccountInfoResult;
|
||||
@class V2TIMFollowOperationResult;
|
||||
@class V2TIMFollowInfo;
|
||||
@class V2TIMFollowTypeCheckResult;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Friendship)
|
||||
|
||||
/// 获取好友列表成功回调
|
||||
typedef void (^V2TIMFriendInfoListSucc)(NSArray<V2TIMFriendInfo *> *infoList);
|
||||
/// 获取指定好友信息成功回调
|
||||
typedef void (^V2TIMFriendInfoResultListSucc)(NSArray<V2TIMFriendInfoResult *> *resultList);
|
||||
/// 好友操作成功回调
|
||||
typedef void (^V2TIMFriendOperationResultSucc)(V2TIMFriendOperationResult *result);
|
||||
/// 好友列表操作成功回调
|
||||
typedef void (^V2TIMFriendOperationResultListSucc)(NSArray<V2TIMFriendOperationResult *> *resultList);
|
||||
/// 好友检查成功回调
|
||||
typedef void (^V2TIMFriendCheckResultListSucc)(NSArray<V2TIMFriendCheckResult *> *resultList);
|
||||
/// 获取群分组列表成功回调
|
||||
typedef void (^V2TIMFriendGroupListSucc)(NSArray<V2TIMFriendGroup *> *groups);
|
||||
/// 获取好友申请列表成功回调
|
||||
typedef void (^V2TIMFriendApplicationResultSucc)(V2TIMFriendApplicationResult *result);
|
||||
/// 获取公众号列表成功回调
|
||||
typedef void (^V2TIMOfficialAccountInfoResultListSucc)(NSArray<V2TIMOfficialAccountInfoResult *> *resultList);
|
||||
/// 关注/取关用户操作成功的回调
|
||||
typedef void (^V2TIMFollowOperationResultListSucc)(NSArray<V2TIMFollowOperationResult *> *resultList);
|
||||
/// 获取自己 关注/粉丝/互关 列表成功的回调
|
||||
typedef void (^V2TIMUserInfoResultSucc)(NSString * _Nullable nextCursor, NSArray<V2TIMUserFullInfo *> *userInfoList);
|
||||
/// 获取用户关注数量信息成功的回调
|
||||
typedef void (^V2TIMFollowInfoResultListSucc)(NSArray<V2TIMFollowInfo *> *resultList);
|
||||
/// 用户关注类型检查成功回调
|
||||
typedef void (^V2TIMFollowTypeCheckResultListSucc)(NSArray<V2TIMFollowTypeCheckResult *> *resultList);
|
||||
|
||||
/// 好友申请类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendApplicationType) {
|
||||
V2TIM_FRIEND_APPLICATION_COME_IN = 1, ///< 别人发给我的
|
||||
V2TIM_FRIEND_APPLICATION_SEND_OUT = 2, ///< 我发给别人的
|
||||
V2TIM_FRIEND_APPLICATION_BOTH = 3, ///< 别人发给我的 和 我发给别人的。仅拉取时有效
|
||||
};
|
||||
|
||||
/// 好友类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendType) {
|
||||
V2TIM_FRIEND_TYPE_SINGLE = 1, ///< 单向好友
|
||||
V2TIM_FRIEND_TYPE_BOTH = 2, ///< 双向好友
|
||||
};
|
||||
|
||||
/// 好友关系类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendRelationType) {
|
||||
V2TIM_FRIEND_RELATION_TYPE_NONE = 0x0, ///< 不是好友
|
||||
V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST = 0x1, ///< 对方在我的好友列表中
|
||||
V2TIM_FRIEND_RELATION_TYPE_IN_OTHER_FRIEND_LIST = 0x2, ///< 我在对方的好友列表中
|
||||
V2TIM_FRIEND_RELATION_TYPE_BOTH_WAY = 0x3, ///< 互为好友
|
||||
};
|
||||
|
||||
/// 好友申请接受类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendAcceptType) {
|
||||
V2TIM_FRIEND_ACCEPT_AGREE = 0, ///< 接受加好友(建立单向好友)
|
||||
V2TIM_FRIEND_ACCEPT_AGREE_AND_ADD = 1, ///< 接受加好友并加对方为好友(建立双向好友)
|
||||
};
|
||||
|
||||
/// 关注类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFollowType) {
|
||||
V2TIM_FOLLOW_TYPE_NONE = 0x0, ///< 无任何关注关系
|
||||
V2TIM_FOLLOW_TYPE_IN_MY_FOLLOWING_LIST = 0x1, ///< 对方在我的关注列表中
|
||||
V2TIM_FOLLOW_TYPE_IN_MY_FOLLOWERS_LIST = 0x2, ///< 对方在我的粉丝列表中
|
||||
V2TIM_FOLLOW_TYPE_IN_BOTH_FOLLOWERS_LIST = 0x3, ///< 对方与我互相关注
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关系链和用户资料监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 添加关系链监听器
|
||||
*/
|
||||
- (void)addFriendListener:(id<V2TIMFriendshipListener>)listener NS_SWIFT_NAME(addFriendListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除关系链监听器
|
||||
*/
|
||||
- (void)removeFriendListener:(id<V2TIMFriendshipListener>)listener NS_SWIFT_NAME(removeFriendListener(listener:));
|
||||
|
||||
/**
|
||||
* 设置关系链监听器(待废弃接口,请使用 addFriendListener 和 removeFriendListener 接口)
|
||||
*/
|
||||
- (void)setFriendListener:(id<V2TIMFriendshipListener>)listener __attribute__((deprecated("use addFriendListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友添加、删除、列表获取、资料设置相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 获取好友列表
|
||||
*/
|
||||
- (void)getFriendList:(V2TIMFriendInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getFriendList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 获取指定好友资料
|
||||
* @param userIDList 好友 userID 列表
|
||||
* - ID 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
*/
|
||||
- (void)getFriendsInfo:(NSArray<NSString *> *)userIDList succ:(V2TIMFriendInfoResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.3 设置指定好友资料
|
||||
*/
|
||||
- (void)setFriendInfo:(V2TIMFriendInfo *)info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setFriendInfo(info:succ:fail:));
|
||||
|
||||
|
||||
/**
|
||||
* 2.4 搜索好友(5.4.666 及以上版本支持)
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17474)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
* - 该接口返回的是本地存储的用户资料,包含好友和非好友资料,您可以根据 V2TIMFriendInfoResult 中的 getRelation 来判断是否为好友。
|
||||
*/
|
||||
- (void)searchFriends:(V2TIMFriendSearchParam *)searchParam succ:(V2TIMFriendInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchFriends(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 添加好友
|
||||
*/
|
||||
- (void)addFriend:(V2TIMFriendAddApplication *)application succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addFriend(application:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.6 删除好友
|
||||
* @param userIDList 要删除的好友 userID 列表
|
||||
* - ID 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
* @param deleteType 删除类型(单向好友、双向好友)
|
||||
*/
|
||||
- (void)deleteFromFriendList:(NSArray *)userIDList deleteType:(V2TIMFriendType)deleteType succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteFromFriendList(userIDList:deleteType:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.7 检查指定用户的好友关系
|
||||
* @param userIDList 要检查的 userID 列表
|
||||
* @param checkType 检查类型 (单向好友检查、双向好友检查)
|
||||
* @param succ 成功后的回调
|
||||
* @param fail 失败后的回调
|
||||
*
|
||||
* @note checkType 的使用需要注意:
|
||||
* - checkType 如果传入 V2TIM_FRIEND_TYPE_SINGLE,结果返回:V2TIM_FRIEND_RELATION_TYPE_NONE、V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST 两种情况
|
||||
* - checkType 如果传入 V2TIM_FRIEND_TYPE_BOTH,结果返回:V2TIM_FRIEND_RELATION_TYPE_NONE、V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST、
|
||||
* V2TIM_FRIEND_RELATION_TYPE_IN_OTHER_FRIEND_LIST、V2TIM_FRIEND_RELATION_TYPE_BOTH_WAY 四种情况
|
||||
*/
|
||||
- (void)checkFriend:(NSArray<NSString *> *)userIDList checkType:(V2TIMFriendType)checkType succ:(V2TIMFriendCheckResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(checkFriend(userIDList:checkType:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友申请、删除相关逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 3.1 获取好友申请列表
|
||||
*
|
||||
* @note
|
||||
* - 好友申请列表包括发起的好友申请和收到的好友申请。
|
||||
* - 最多支持100个。
|
||||
*/
|
||||
- (void)getFriendApplicationList:(V2TIMFriendApplicationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getFriendApplicationList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.2 同意好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
* @param acceptType 建立单向/双向好友关系
|
||||
*/
|
||||
- (void)acceptFriendApplication:(V2TIMFriendApplication *)application type:(V2TIMFriendAcceptType)acceptType succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(acceptFriendApplication(application:acceptType:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.3 同意好友申请,并设置备注
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
* @param acceptType 建立单向/双向好友关系
|
||||
* - @ref V2TIMFriendApplication.V2TIM_FRIEND_ACCEPT_AGREE:同意添加单向好友
|
||||
* - @ref V2TIMFriendApplication.V2TIM_FRIEND_ACCEPT_AGREE_AND_ADD:同意并添加为双向好友
|
||||
* @param remark 好友备注
|
||||
*/
|
||||
- (void)acceptFriendApplication:(V2TIMFriendApplication *)application type:(V2TIMFriendAcceptType)acceptType remark:(NSString* _Nullable)remark succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(acceptFriendApplication(application:acceptType:remark:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 拒绝好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
*/
|
||||
- (void)refuseFriendApplication:(V2TIMFriendApplication *)application succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(refuseFriendApplication(application:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 删除好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
*/
|
||||
- (void)deleteFriendApplication:(V2TIMFriendApplication *)application succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteFriendApplication(application:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 设置好友申请已读
|
||||
*/
|
||||
- (void)setFriendApplicationRead:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setFriendApplicationRead(succ:fail:));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 黑名单
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 添加用户到黑名单
|
||||
*/
|
||||
- (void)addToBlackList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addToBlackList(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.2 把用户从黑名单中删除
|
||||
*/
|
||||
- (void)deleteFromBlackList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteFromBlackList(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.3 获取黑名单列表
|
||||
*/
|
||||
- (void)getBlackList:(V2TIMFriendInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getBlackList(succ:fail:));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友分组
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 5.1 新建好友分组
|
||||
*
|
||||
* @param groupName 分组名称
|
||||
* @param userIDList 要添加到分组中的好友
|
||||
*/
|
||||
- (void)createFriendGroup:(NSString *)groupName userIDList:(NSArray * _Nullable)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createFriendGroup(groupName:userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.2 获取分组信息
|
||||
*
|
||||
* @param groupNameList 要获取信息的好友分组名称列表,传入 nil 获得所有分组信息
|
||||
*/
|
||||
- (void)getFriendGroupList:(NSArray * _Nullable)groupNameList succ:(V2TIMFriendGroupListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getFriendGroupList(groupNameList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.3 删除好友分组
|
||||
*/
|
||||
- (void)deleteFriendGroup:(NSArray *)groupNameList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteFriendGroup(groupNameList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.4 修改好友分组的名称
|
||||
*/
|
||||
- (void)renameFriendGroup:(NSString*)oldName newName:(NSString*)newName succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(renameFriendGroup(oldName:newName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.5 添加好友到一个好友分组
|
||||
*/
|
||||
- (void)addFriendsToFriendGroup:(NSString *)groupName userIDList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addFriendsToFriendGroup(groupName:userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.6 从好友分组中删除好友
|
||||
*/
|
||||
- (void)deleteFriendsFromFriendGroup:(NSString *)groupName userIDList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteFriendsFromFriendGroup(groupName:userIDList:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 公众号订阅、取消订阅、获取公众号列表接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 6.1 订阅公众号(7.6 及其以上版本支持)
|
||||
*/
|
||||
- (void)subscribeOfficialAccount:(NSString *)officialAccountID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(subscribeOfficialAccount(officialAccountID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 6.2 取消订阅公众号(7.6 及其以上版本支持)
|
||||
*/
|
||||
- (void)unsubscribeOfficialAccount:(NSString *)officialAccountID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(unsubscribeOfficialAccount(officialAccountID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 6.3 获取公众号列表(7.6 及其以上版本支持)
|
||||
* @note officialAccountIDList 传空时,获取订阅的公众号列表
|
||||
*/
|
||||
- (void)getOfficialAccountsInfo:(NSArray<NSString *> * _Nullable)officialAccountIDList succ:(V2TIMOfficialAccountInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getOfficialAccountsInfo(officialAccountIDList:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关注/粉丝 相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 7.1 关注用户(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 一次最多支持关注 20 个用户。
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)followUser:(NSArray<NSString *> *)userIDList succ:(V2TIMFollowOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(followUser(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.2 取消关注用户(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 一次最多支持取消关注 20 个用户。
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)unfollowUser:(NSArray<NSString *> *)userIDList succ:(V2TIMFollowOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(unfollowUser(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.3 获取我的关注列表(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*
|
||||
* @param nextCursor 分页拉取标志,第一次拉取填 nil 或 @"",回调成功如果 nextCursor 不为 @"",需要分页,可以传入该值再次拉取,直至 nextCursor 返回为 @""
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getMyFollowingList:(NSString * _Nullable)nextCursor succ:(V2TIMUserInfoResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getMyFollowingList(nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.4 获取我的粉丝列表(从 7.8 版本开始支持)
|
||||
*
|
||||
* @param nextCursor 分页拉取标志,第一次拉取填 nil 或 @"",回调成功如果 nextCursor 不为 @"",需要分页,可以传入该值再次拉取,直至 nextCursor 返回为 @""
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getMyFollowersList:(NSString * _Nullable)nextCursor succ:(V2TIMUserInfoResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getMyFollowersList(nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.5 获取我的互关列表(从 7.8 版本开始支持)
|
||||
*
|
||||
* @param nextCursor 分页拉取标志,第一次拉取填 nil 或 @"",回调成功如果 nextCursor 不为 @"",需要分页,可以传入该值再次拉取,直至 nextCursor 返回为 @""
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getMutualFollowersList:(NSString * _Nullable)nextCursor succ:(V2TIMUserInfoResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getMutualFollowersList(nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.6 获取指定用户的 关注/粉丝/互关 数量信息(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getUserFollowInfo:(NSArray *)userIDList succ:(V2TIMFollowInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getUserFollowInfo(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.7 检查指定用户的关注类型(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)checkFollowType:(NSArray<NSString *> *)userIDList succ:(V2TIMFollowTypeCheckResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(checkFollowType(userIDList:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 资料关系链回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 资料关系链回调
|
||||
V2TIM_EXPORT @protocol V2TIMFriendshipListener <NSObject>
|
||||
@optional
|
||||
/**
|
||||
* 好友申请新增通知,两种情况会收到这个回调:
|
||||
* 1. 自己申请加别人好友
|
||||
* 2. 别人申请加自己好友
|
||||
*/
|
||||
- (void)onFriendApplicationListAdded:(NSArray<V2TIMFriendApplication *> *)applicationList NS_SWIFT_NAME(onFriendApplicationListAdded(applicationList:));
|
||||
|
||||
/**
|
||||
* 好友申请删除通知,四种情况会收到这个回调:
|
||||
* 1. 调用 deleteFriendApplication 主动删除好友申请
|
||||
* 2. 调用 refuseFriendApplication 拒绝好友申请
|
||||
* 3. 调用 acceptFriendApplication 同意好友申请
|
||||
* 4. 申请加别人好友被拒绝
|
||||
*/
|
||||
- (void)onFriendApplicationListDeleted:(NSArray *)userIDList NS_SWIFT_NAME(onFriendApplicationListDeleted(userIDList:));
|
||||
|
||||
/**
|
||||
* 好友申请已读通知,如果调用 setFriendApplicationRead 设置好友申请列表已读,会收到这个回调(主要用于多端同步)
|
||||
*/
|
||||
- (void)onFriendApplicationListRead NS_SWIFT_NAME(onFriendApplicationListRead());
|
||||
|
||||
/**
|
||||
* 好友新增通知
|
||||
*/
|
||||
- (void)onFriendListAdded:(NSArray<V2TIMFriendInfo *>*)infoList NS_SWIFT_NAME(onFriendListAdded(infoList:));
|
||||
|
||||
/**
|
||||
* 好友删除通知,两种情况会收到这个回调:
|
||||
* 1. 自己删除好友(单向和双向删除都会收到回调)
|
||||
* 2. 好友把自己删除(双向删除会收到)
|
||||
*/
|
||||
- (void)onFriendListDeleted:(NSArray*)userIDList NS_SWIFT_NAME(onFriendListDeleted(userIDList:));
|
||||
|
||||
/**
|
||||
* 黑名单新增通知
|
||||
*/
|
||||
- (void)onBlackListAdded:(NSArray<V2TIMFriendInfo *>*)infoList NS_SWIFT_NAME(onBlackListAdded(infoList:));
|
||||
|
||||
/**
|
||||
* 黑名单删除通知
|
||||
*/
|
||||
- (void)onBlackListDeleted:(NSArray*)userIDList NS_SWIFT_NAME(onBlackListDeleted(userIDList:));
|
||||
|
||||
/**
|
||||
* 好友资料变更通知
|
||||
*/
|
||||
- (void)onFriendProfileChanged:(NSArray<V2TIMFriendInfo *> *)infoList NS_SWIFT_NAME(onFriendProfileChanged(infoList:));
|
||||
|
||||
/**
|
||||
* 好友分组被创建
|
||||
*/
|
||||
- (void)onFriendGroupCreated:(NSString * _Nullable)groupName friendInfoList:(NSArray<V2TIMFriendInfo *> *)friendInfoList NS_SWIFT_NAME(onFriendGroupCreated(groupName:friendInfoList:));
|
||||
|
||||
/**
|
||||
* 好友分组被删除
|
||||
*/
|
||||
- (void)onFriendGroupDeleted:(NSArray<NSString *> *)groupNameList NS_SWIFT_NAME(onFriendGroupDeleted(groupNameList:));
|
||||
|
||||
/**
|
||||
* 好友分组名变更
|
||||
*/
|
||||
- (void)onFriendGroupNameChanged:(NSString * _Nullable)oldGroupName newGroupName:(NSString * _Nullable)newGroupName NS_SWIFT_NAME(onFriendGroupNameChanged(oldGroupName:newGroupName:));
|
||||
|
||||
/**
|
||||
* 好友分组新增好友
|
||||
*/
|
||||
- (void)onFriendsAddedToGroup:(NSString * _Nullable)groupName friendInfoList:(NSArray<V2TIMFriendInfo *> *)friendInfoList NS_SWIFT_NAME(onFriendsAddedToGroup(groupName:friendInfoList:));
|
||||
|
||||
/**
|
||||
* 好友分组删除好友
|
||||
*/
|
||||
- (void)onFriendsDeletedFromGroup:(NSString * _Nullable)groupName friendIDList:(NSArray<NSString *> *)friendIDList NS_SWIFT_NAME(onFriendsDeletedFromGroup(groupName:friendIDList:));
|
||||
|
||||
/**
|
||||
* 订阅公众号通知
|
||||
*/
|
||||
- (void)onOfficialAccountSubscribed:(V2TIMOfficialAccountInfo *)officialAccountInfo NS_SWIFT_NAME(onOfficialAccountSubscribed(officialAccountInfo:));
|
||||
|
||||
/**
|
||||
* 取消订阅公众号通知
|
||||
*/
|
||||
- (void)onOfficialAccountUnsubscribed:(NSString * _Nullable)officialAccountID NS_SWIFT_NAME(onOfficialAccountUnsubscribed(officialAccountID:));
|
||||
|
||||
/**
|
||||
* 订阅的公众号被删除通知
|
||||
*/
|
||||
- (void)onOfficialAccountDeleted:(NSString * _Nullable)officialAccountID NS_SWIFT_NAME(onOfficialAccountDeleted(officialAccountID:));
|
||||
|
||||
/**
|
||||
* 订阅的公众号资料更新通知
|
||||
*/
|
||||
- (void)onOfficialAccountInfoChanged:(V2TIMOfficialAccountInfo *)officialAccountInfo NS_SWIFT_NAME(onOfficialAccountInfoChanged(officialAccountInfo:));
|
||||
|
||||
/**
|
||||
* 关注列表变更通知
|
||||
*/
|
||||
- (void)onMyFollowingListChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList isAdd:(BOOL)isAdd NS_SWIFT_NAME(onMyFollowingListChanged(userInfoList:isAdd:));
|
||||
|
||||
/**
|
||||
* 粉丝列表变更通知
|
||||
*/
|
||||
- (void)onMyFollowersListChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList isAdd:(BOOL)isAdd NS_SWIFT_NAME(onMyFollowersListChanged(userInfoList:isAdd:));
|
||||
|
||||
/**
|
||||
* 互关列表变更通知
|
||||
*/
|
||||
- (void)onMutualFollowersListChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList isAdd:(BOOL)isAdd NS_SWIFT_NAME(onMutualFollowersListChanged(userInfoList:isAdd:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友资料获取结果
|
||||
V2TIM_EXPORT @interface V2TIMFriendInfoResult : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 返结果表述
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 好友类型
|
||||
@property(nonatomic,assign) V2TIMFriendRelationType relation;
|
||||
|
||||
/// 好友个人资料,如果不是好友,除了 userID 字段,其他字段都为空
|
||||
@property(nonatomic,strong) V2TIMFriendInfo *friendInfo;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友资料
|
||||
V2TIM_EXPORT @interface V2TIMFriendInfo : NSObject
|
||||
|
||||
/// 好友 ID
|
||||
@property(nonatomic,strong,nullable) NSString *userID;
|
||||
|
||||
/**
|
||||
* 好友备注
|
||||
*
|
||||
* @note
|
||||
* - 备注长度最长不得超过 96 个字节;
|
||||
* - 字段描述详见 [控制台](https://cloud.tencent.com/document/product/269/1501#.E6.A0.87.E9.85.8D.E5.A5.BD.E5.8F.8B.E5.AD.97.E6.AE.B5)。
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString *friendRemark;
|
||||
|
||||
/// 添加好友的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint64_t friendAddTime;
|
||||
|
||||
/// 好友自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 好友自定义字段) 配置好友自定义字段,然后再调用该接口进行设置,key 值不需要加 Tag_SNS_Custom_ 前缀。
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *> *friendCustomInfo;
|
||||
|
||||
/**
|
||||
* 好友所在分组列表
|
||||
*
|
||||
* @note
|
||||
* - 最多支持 32 个分组;
|
||||
* - 不允许分组名为空;
|
||||
* - 分组名长度不得超过 30 个字节;
|
||||
* - 同一个好友可以有多个不同的分组。
|
||||
* - 字段描述详见 [控制台](https://cloud.tencent.com/document/product/269/1501#.E6.A0.87.E9.85.8D.E5.A5.BD.E5.8F.8B.E5.AD.97.E6.AE.B5)。
|
||||
*/
|
||||
@property(nonatomic,strong,readonly) NSArray *friendGroups;
|
||||
|
||||
/// 好友个人资料
|
||||
@property(nonatomic,strong,readonly) V2TIMUserFullInfo *userFullInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友申请相关对象
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 加好友
|
||||
V2TIM_EXPORT @interface V2TIMFriendAddApplication : NSObject
|
||||
|
||||
/// 用户 userID(必填)
|
||||
@property (nonatomic,strong) NSString* userID;
|
||||
|
||||
/// 备注(备注最大96字节)
|
||||
@property (nonatomic,strong,nullable) NSString* friendRemark;
|
||||
|
||||
/// 预分组名(最大96字节)
|
||||
@property (nonatomic,strong,nullable) NSString* friendGroup;
|
||||
|
||||
/// 请求说明(最大120字节)
|
||||
@property (nonatomic,strong,nullable) NSString* addWording;
|
||||
|
||||
/// 添加来源
|
||||
@property (nonatomic,strong,nullable) NSString* addSource;
|
||||
|
||||
/// 加好友方式
|
||||
@property (nonatomic,assign) V2TIMFriendType addType;
|
||||
|
||||
@end
|
||||
|
||||
/// 好友申请列表
|
||||
V2TIM_EXPORT @interface V2TIMFriendApplicationResult : NSObject
|
||||
|
||||
/// 好友申请未读数量
|
||||
@property(nonatomic,assign) uint64_t unreadCount;
|
||||
|
||||
/// 好友申请列表
|
||||
@property(nonatomic,strong) NSMutableArray<V2TIMFriendApplication *> * applicationList;
|
||||
|
||||
@end
|
||||
|
||||
/// 好友申请
|
||||
V2TIM_EXPORT @interface V2TIMFriendApplication : NSObject
|
||||
|
||||
/// 用户标识
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* nickName;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* faceUrl;
|
||||
|
||||
/// 添加好友的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint64_t addTime;
|
||||
|
||||
/// 来源
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* addSource;
|
||||
|
||||
/// 加好友附言
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* addWording;
|
||||
|
||||
/// 好友申请类型
|
||||
@property(nonatomic,assign,readonly) V2TIMFriendApplicationType type;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友关系链检查结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友关系链检查结果
|
||||
V2TIM_EXPORT @interface V2TIMFriendCheckResult : NSObject
|
||||
|
||||
/// 用户id
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 检查结果
|
||||
@property(nonatomic,assign) V2TIMFriendRelationType relationType;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友操作结果(添加、删除、加黑名单、添加分组等)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友操作结果(添加、删除、加黑名单、添加分组等)
|
||||
V2TIM_EXPORT @interface V2TIMFriendOperationResult : NSObject
|
||||
|
||||
/// 用户Id
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友分组
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友分组
|
||||
V2TIM_EXPORT @interface V2TIMFriendGroup : NSObject
|
||||
/// 好友分组名称
|
||||
@property(nonatomic,strong,nullable) NSString* groupName;
|
||||
|
||||
/// 分组成员数量
|
||||
@property(nonatomic,assign) uint64_t userCount;
|
||||
|
||||
/// 分组成员列表
|
||||
@property(nonatomic,strong) NSMutableArray* friendList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMFriendSearchParam : NSObject
|
||||
|
||||
/// 搜索的关键字列表,关键字列表最多支持 5 个
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 设置是否搜索 userID
|
||||
@property(nonatomic, assign) BOOL isSearchUserID;
|
||||
|
||||
/// 是否设置搜索昵称
|
||||
@property(nonatomic, assign) BOOL isSearchNickName;
|
||||
|
||||
/// 是否设置搜索备注
|
||||
@property(nonatomic, assign) BOOL isSearchRemark;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 公众号资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMOfficialAccountInfo : NSObject
|
||||
|
||||
/// 公众号 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* officialAccountID;
|
||||
|
||||
/// 公众号名称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* officialAccountName;
|
||||
|
||||
/// 公众号头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* faceUrl;
|
||||
|
||||
/// 公众号所有者
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* ownerUserID;
|
||||
|
||||
/// 公众号组织
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* organization;
|
||||
|
||||
/// 公众号简介
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* introduction;
|
||||
|
||||
/// 公众号自定义数据
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* customData;
|
||||
|
||||
/// 公众号创建时间,单位:秒
|
||||
@property(nonatomic,assign,readonly) uint64_t createTime;
|
||||
|
||||
/// 公众号订阅者数量
|
||||
@property(nonatomic,assign,readonly) uint64_t subscriberCount;
|
||||
|
||||
/// 订阅公众号的时间,单位:秒
|
||||
@property(nonatomic,assign,readonly) uint64_t subscribeTime;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 公众号资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 公众号资料获取结果
|
||||
V2TIM_EXPORT @interface V2TIMOfficialAccountInfoResult : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 返回结果表述
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 公众号资料
|
||||
@property(nonatomic,strong) V2TIMOfficialAccountInfo *officialAccountInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关注/取关用户的操作结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 关注/取关用户的操作结果
|
||||
V2TIM_EXPORT @interface V2TIMFollowOperationResult : NSObject
|
||||
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户关注数量信息获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 用户关注数量信息获取结果
|
||||
V2TIM_EXPORT @interface V2TIMFollowInfo : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回结果表述
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString *userID;
|
||||
|
||||
/// 用户的关注数量
|
||||
@property(nonatomic,assign) uint64_t followingCount;
|
||||
|
||||
/// 用户的粉丝数量
|
||||
@property(nonatomic,assign) uint64_t followersCount;
|
||||
|
||||
/// 用户的互关数量
|
||||
@property(nonatomic,assign) uint64_t mutualFollowersCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 指定用户的关注类型检查结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 指定用户的关注类型检查结果
|
||||
V2TIM_EXPORT @interface V2TIMFollowTypeCheckResult : NSObject
|
||||
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 关注类型
|
||||
@property(nonatomic,assign) V2TIMFollowType followType;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,752 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Group
|
||||
//
|
||||
// 群组高级接口,里面包含了群组的高级功能,比如群成员邀请、非群成员申请进群等操作接口。
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
@class V2TIMGroupMemberOperationResult;
|
||||
@class V2TIMGroupApplicationResult;
|
||||
@class V2TIMCreateGroupMemberInfo;
|
||||
@class V2TIMGroupInfo;
|
||||
@class V2TIMGroupInfoResult;
|
||||
@class V2TIMGroupApplication;
|
||||
@class V2TIMGroupSearchParam;
|
||||
@class V2TIMGroupSearchResult;
|
||||
@class V2TIMGroupMemberSearchParam;
|
||||
@class V2TIMGroupMemberSearchResult;
|
||||
@class V2TIMGroupAtInfo;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群相关的高级接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Group)
|
||||
|
||||
/// 获取已加入群列表成功回调
|
||||
typedef void (^V2TIMGroupInfoListSucc)(NSArray<V2TIMGroupInfo *> *groupList);
|
||||
/// 获取指定群列表成功回调
|
||||
typedef void (^V2TIMGroupInfoResultListSucc)(NSArray<V2TIMGroupInfoResult *> *groupResultList);
|
||||
/// 云端搜索群组的结果回调
|
||||
typedef void (^V2TIMGroupSearchResultSucc)(V2TIMGroupSearchResult *searchResult);
|
||||
/// 获取群属性列表成功回调
|
||||
typedef void (^V2TIMGroupAttributeListSucc)(NSMutableDictionary<NSString *,NSString *> *groupAttributeList);
|
||||
/// 获取群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoListSucc)(NSArray<V2TIMGroupMemberFullInfo *> *memberList);
|
||||
/// 获取指定群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoResultSucc)(uint64_t nextSeq, NSArray<V2TIMGroupMemberFullInfo *> *memberList);
|
||||
/// 搜索本地群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoListSearchSucc)(NSDictionary<NSString *, NSArray<V2TIMGroupMemberFullInfo *> *> *memberList);
|
||||
/// 搜索云端群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberSearchResultSucc)(V2TIMGroupMemberSearchResult *searchResult);
|
||||
/// 群成员操作成功回调
|
||||
typedef void (^V2TIMGroupMemberOperationResultListSucc)(NSArray<V2TIMGroupMemberOperationResult*> * resultList);
|
||||
/// 获取好友申请列表成功回调
|
||||
typedef void (^V2TIMGroupApplicationResultSucc)(V2TIMGroupApplicationResult *result);
|
||||
/// 获取群在线人数成功回调
|
||||
typedef void (^V2TIMGroupOnlineMemberCountSucc)(NSInteger count);
|
||||
/// 群计数器操作成功的回调
|
||||
typedef void (^V2TIMGroupCounterResultSucc)(NSDictionary<NSString *, NSNumber *> *groupCounters);
|
||||
|
||||
/// 加群选项
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupAddOpt) {
|
||||
V2TIM_GROUP_ADD_FORBID = 0, ///< 禁止加群
|
||||
V2TIM_GROUP_ADD_AUTH = 1, ///< 需要管理员审批
|
||||
V2TIM_GROUP_ADD_ANY = 2, ///< 任何人可以加入
|
||||
};
|
||||
|
||||
/// 群组操作结果
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberResult) {
|
||||
V2TIM_GROUP_MEMBER_RESULT_FAIL = 0, ///< 操作失败
|
||||
V2TIM_GROUP_MEMBER_RESULT_SUCC = 1, ///< 操作成功
|
||||
V2TIM_GROUP_MEMBER_RESULT_INVALID = 2, ///< 无效操作,加群时已经是群成员,移除群组时不在群内
|
||||
V2TIM_GROUP_MEMBER_RESULT_PENDING = 3, ///< 等待处理,邀请入群时等待审批
|
||||
V2TIM_GROUP_MEMBER_RESULT_OVERLIMIT = 4, ///< 操作失败,创建群指定初始群成员列表或邀请入群时,被邀请者加入的群总数超限
|
||||
};
|
||||
|
||||
/// 群成员角色过滤方式
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberFilter) {
|
||||
V2TIM_GROUP_MEMBER_FILTER_ALL = 0x00, ///< 全部成员
|
||||
V2TIM_GROUP_MEMBER_FILTER_OWNER = 0x01, ///< 群主
|
||||
V2TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02, ///< 管理员
|
||||
V2TIM_GROUP_MEMBER_FILTER_COMMON = 0x04, ///< 普通成员
|
||||
};
|
||||
|
||||
/// 群组未决请求类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationType) {
|
||||
V2TIM_GROUP_JOIN_APPLICATION_NEED_APPROVED_BY_ADMIN = 0x0, ///< 需要群主或管理员审批的申请加群请求
|
||||
V2TIM_GROUP_INVITE_APPLICATION_NEED_APPROVED_BY_INVITEE = 0x1, ///< 需要被邀请者同意的邀请入群请求
|
||||
V2TIM_GROUP_INVITE_APPLICATION_NEED_APPROVED_BY_ADMIN = 0x2, ///< 需要群主或管理员审批的邀请入群请求
|
||||
};
|
||||
|
||||
/// 群组已决标志
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationHandleStatus) {
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_UNHANDLED = 0, ///< 未处理
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_HANDLED_BY_OTHER = 1, ///< 被他人处理
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_HANDLED_BY_SELF = 2, ///< 自己已处理
|
||||
};
|
||||
|
||||
/// 群组已决结果
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationHandleResult) {
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_RESULT_REFUSE = 0, ///< 拒绝申请
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_RESULT_AGREE = 1, ///< 同意申请
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 创建自定义群组(高级版本:可以指定初始的群成员)
|
||||
*
|
||||
* @param info 自定义群组信息,可以设置 groupID | groupType | groupName | notification | introduction | faceURL 字段
|
||||
* @param memberList 指定初始的群成员(直播群 AVChatRoom 不支持指定初始群成员,memberList 请传 nil)
|
||||
*
|
||||
* @note
|
||||
* - 后台限制邀请的群成员个数不能超过 20
|
||||
* - 其他限制请参考 V2TIMManager.h -> createGroup 注释
|
||||
*/
|
||||
- (void)createGroup:(V2TIMGroupInfo*)info memberList:(NSArray<V2TIMCreateGroupMemberInfo *>* _Nullable )memberList succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createGroup(info:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.2 获取当前用户已经加入的群列表
|
||||
*
|
||||
* @note
|
||||
* - 直播群(AVChatRoom)不支持该 API
|
||||
* - 该接口有频限检测,SDK 限制调用频率为 1 秒 10 次,超过限制后会报 ERR_SDK_COMM_API_CALL_FREQUENCY_LIMIT (7008)错误
|
||||
*/
|
||||
- (void)getJoinedGroupList:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getJoinedGroupList(succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群资料管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 拉取群资料
|
||||
*
|
||||
* @param groupIDList 群组 ID 列表
|
||||
*/
|
||||
- (void)getGroupsInfo:(NSArray<NSString *> *)groupIDList succ:(V2TIMGroupInfoResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.2 搜索本地群资料(5.4.666 及以上版本支持)
|
||||
* @note 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17474)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchGroups:(V2TIMGroupSearchParam *)searchParam succ:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchGroups(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 搜索云端群资料(8.4 及以上版本支持)
|
||||
* @note 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchCloudGroups:(V2TIMGroupSearchParam *)searchParam succ:(V2TIMGroupSearchResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchCloudGroups(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.4 修改群资料
|
||||
*/
|
||||
- (void)setGroupInfo:(V2TIMGroupInfo *)info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupInfo(info:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 初始化群属性,会清空原有的群属性列表
|
||||
*
|
||||
* @note
|
||||
* attributes 的使用限制如下:
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型;
|
||||
* - key 最多支持 16 个,长度限制为 32 字节;
|
||||
* - value 长度限制为 4k;
|
||||
* - 总的 attributes(包括 key 和 value)限制为 16k;
|
||||
* - initGroupAttributes、setGroupAttributes、deleteGroupAttributes 接口合并计算, SDK 限制为 5 秒 10 次,超过后回调 8511 错误码;后台限制 1 秒 5 次,超过后返回 10049 错误码;
|
||||
* - getGroupAttributes 接口 SDK 限制 5 秒 20 次;
|
||||
* - 从 5.6 版本开始,当每次APP启动后初次修改群属性时,请您先调用 getGroupAttributes 拉取到最新的群属性之后,再发起修改操作;
|
||||
* - 从 5.6 版本开始,当多个用户同时修改同一个群属性时,只有第一个用户可以执行成功,其它用户会收到 10056 错误码;收到这个错误码之后,请您调用 getGroupAttributes 把本地保存的群属性更新到最新之后,再发起修改操作。
|
||||
*/
|
||||
- (void)initGroupAttributes:(NSString*)groupID attributes:(NSDictionary<NSString *,NSString *> *)attributes succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(initGroupAttributes(groupID:attributes:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.6 设置群属性,已有该群属性则更新其 value 值,没有该群属性则添加该群属性。
|
||||
* @note
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型。
|
||||
*/
|
||||
- (void)setGroupAttributes:(NSString*)groupID attributes:(NSDictionary<NSString *,NSString *> *)attributes succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupAttributes(groupID:attributes:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.7 删除群指定属性,keys 传 nil 则清空所有群属性。
|
||||
* @note
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型。
|
||||
*/
|
||||
- (void)deleteGroupAttributes:(NSString*)groupID keys:(NSArray<NSString *> * _Nullable)keys succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteGroupAttributes(groupID:keys:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.8 获取群指定属性,keys 传 nil 则获取所有群属性。
|
||||
* @note
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型。
|
||||
*/
|
||||
- (void)getGroupAttributes:(NSString*)groupID keys:(NSArray<NSString *> * _Nullable)keys succ:(V2TIMGroupAttributeListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.9 获取指定群在线人数
|
||||
*
|
||||
* @param groupID 群id
|
||||
* @param succ 成功回调
|
||||
* @param fail 失败回调
|
||||
*
|
||||
* @note
|
||||
* - IMSDK 7.3 以前的版本仅支持直播群( AVChatRoom);
|
||||
* - IMSDK 7.3 及其以后的版本支持所有群类型。
|
||||
*/
|
||||
- (void)getGroupOnlineMemberCount:(NSString*)groupID succ:(V2TIMGroupOnlineMemberCountSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupOnlineMemberCount(groupID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.10 设置群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @note
|
||||
* - 该计数器的 key 如果存在,则直接更新计数器的 value 值;如果不存在,则添加该计数器的 key-value;
|
||||
* - 当群计数器设置成功后,在 succ 回调中会返回最终成功设置的群计数器信息;
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)setGroupCounters:(NSString *)groupID counters:(NSDictionary<NSString *, NSNumber *> *)counters succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(setGroupCounters(groupID:counters:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.11 获取群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @note
|
||||
* - 如果 keys 为空,则表示获取群内的所有计数器;
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)getGroupCounters:(NSString *)groupID keys:(NSArray<NSString *> * _Nullable)keys succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupCounters(groupID:keys:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.12 递增群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @param groupID 群 ID
|
||||
* @param key 群计数器的 key
|
||||
* @param value 群计数器的递增的变化量,计数器 key 对应的 value 变更方式为: new_value = old_value + value
|
||||
* @param succ 成功后的回调,会返回当前计数器做完递增操作后的 value
|
||||
* @param fail 失败的回调
|
||||
*
|
||||
* @note
|
||||
* - 该计数器的 key 如果存在,则直接在当前值的基础上根据传入的 value 作递增操作;反之,添加 key,并在默认值为 0 的基础上根据传入的 value 作递增操作;
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)increaseGroupCounter:(NSString *)groupID key:(NSString *)key value:(NSInteger)value succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(increaseGroupCounter(groupID:key:value:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.13 递减群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @param groupID 群 ID
|
||||
* @param key 群计数器的 key
|
||||
* @param value 群计数器的递减的变化量,计数器 key 对应的 value 变更方式为: new_value = old_value - value
|
||||
* @param succ 成功后的回调,会返回当前计数器做完递减操作后的 value
|
||||
* @param fail 失败的回调
|
||||
*
|
||||
* @note
|
||||
* - 该计数器的 key 如果存在,则直接在当前值的基础上根据传入的 value 作递减操作;反之,添加 key,并在默认值为 0 的基础上根据传入的 value 作递减操作
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)decreaseGroupCounter:(NSString *)groupID key:(NSString *)key value:(NSInteger)value succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(decreaseGroupCounter(groupID:key:value:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群成员管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 3.1 获取群成员列表
|
||||
*
|
||||
* @param filter 指定群成员类型。
|
||||
* @param nextSeq 分页拉取标志,第一次拉取填 0,回调成功如果 nextSeq 不为零,需要分页,传入再次拉取,直至为 0。
|
||||
*
|
||||
* @note
|
||||
* - 普通群(工作群、会议群、公开群)的限制:
|
||||
* 1. filter 只能设置为 V2TIMGroupMemberFilter 定义的数值,SDK 会返回指定角色的成员。
|
||||
*
|
||||
* - 直播群(AVChatRoom)的限制:
|
||||
* 1. 如果设置 filter 为 V2TIMGroupMemberFilter 定义的数值,SDK 返回全部成员。返回的人数规则为:拉取最近入群群成员最多 1000 人,新进来的成员排在前面,需要升级旗舰版,并且在 [控制台](https://console.cloud.tencent.com/im) 开启“直播群在线成员列表”开关(6.3 及以上版本支持)。
|
||||
* 2. 如果设置 filter 为群成员自定义标记,旗舰版支持拉取指定标记的成员列表。标记群成员的设置请参考 markGroupMemberList:memberList:markType:enableMark:succ:fail: API。
|
||||
* 3. 程序重启后,请重新加入群组,否则拉取群成员会报 10007 错误码。
|
||||
* 4. 群成员资料信息仅支持 userID | nickName | faceURL | role 字段。
|
||||
*
|
||||
* - 社群(Community)的限制:
|
||||
* 1. 如果设置 filter 为 V2TIMGroupMemberFilter 定义的数值,SDK 返回指定角色的成员。
|
||||
* 2. 如果设置 filter 为群成员自定义标记,旗舰版支持拉取指定标记的成员列表(7.5 及以上版本支持)。标记群成员的设置请参考 markGroupMemberList:memberList:markType:enableMark:succ:fail: API。
|
||||
*/
|
||||
- (void)getGroupMemberList:(NSString*)groupID filter:(uint32_t)filter nextSeq:(uint64_t)nextSeq succ:(V2TIMGroupMemberInfoResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.2 指定的群成员资料
|
||||
*/
|
||||
- (void)getGroupMembersInfo:(NSString*)groupID memberList:(NSArray<NSString*>*)memberList succ:(V2TIMGroupMemberInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupMembersInfo(groupID:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.3 搜索本地群成员资料(5.4.666 及以上版本支持)
|
||||
*
|
||||
* @param searchParam 搜索参数
|
||||
* @note 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17474)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchGroupMembers:(V2TIMGroupMemberSearchParam *)searchParam succ:(V2TIMGroupMemberInfoListSearchSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchGroupMembers(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 搜索云端群成员资料(8.4 及以上版本支持)
|
||||
*
|
||||
* @param searchParam 搜索参数
|
||||
* @note 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchCloudGroupMembers:(V2TIMGroupMemberSearchParam *)searchParam succ:(V2TIMGroupMemberSearchResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchCloudGroupMembers(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 修改指定的群成员资料
|
||||
*/
|
||||
- (void)setGroupMemberInfo:(NSString*)groupID info:(V2TIMGroupMemberFullInfo *)info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupMemberInfo(groupID:info:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 禁言群成员(只有管理员或群主能够调用)
|
||||
*
|
||||
* @param seconds 禁言时间长度,单位秒,表示调用该接口成功后多少秒内不允许被禁言用户再发言。
|
||||
*/
|
||||
- (void)muteGroupMember:(NSString*)groupID member:(NSString*)userID muteTime:(uint32_t)seconds succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(muteGroupMember(groupID:memberUserID:muteTimeSeconds:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.7 禁言全体群成员,只有管理员或群主能够调用(7.5 及以上版本支持)
|
||||
*
|
||||
* @param groupID 群组 ID
|
||||
* @param isMute YES 表示禁言,NO 表示解除禁言
|
||||
*
|
||||
* @note
|
||||
* - 禁言全体群成员没有时间限制,设置 isMute 为 NO 则解除禁言。
|
||||
* - 禁言或解除禁言后,会触发 V2TIMGroupListener 中的 onAllGroupMembersMuted:isMute: 回调。
|
||||
* - 群主和管理员可以禁言普通成员。普通成员不能操作禁言/解除禁言。
|
||||
*/
|
||||
- (void)muteAllGroupMembers:(NSString*)groupID isMute:(BOOL)isMute succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(muteAllGroupMembers(groupID:isMute:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.8 邀请他人入群
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 工作群(Work):群里的任何人都可以邀请其他人进群。
|
||||
* - 会议群(Meeting)和公开群(Public):默认不允许邀请加入群,您可以修改群资料 V2TIMGroupInfo 的 groupApproveOpt 字段打开邀请入群方式。打开该选项之后,群里的任何人都可以邀请其他人进群。
|
||||
* - 直播群(AVChatRoom):不支持此功能。
|
||||
* - 后台限制单次邀请的群成员个数不能超过 20。
|
||||
*/
|
||||
- (void)inviteUserToGroup:(NSString*)groupID userList:(NSArray<NSString *>*)userList succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(inviteUserToGroup(groupID:userList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.9 踢人
|
||||
*
|
||||
* @param groupID 群 id
|
||||
* @param memberList 被踢用户的 userID 列表
|
||||
* @param reason 被踢的原因
|
||||
* @param duration 指定自被踢出群组开始算起,禁止被踢用户重新申请加群的时长,单位:秒
|
||||
* @param succ 成功后的回调
|
||||
* @param fail 失败后的回调
|
||||
*
|
||||
* @note
|
||||
* - 从 7.2 版本开始,支持设置一个时长参数,用于指定用户从被踢出群组开始算起,禁止重新申请加群的时长;
|
||||
* - 工作群(Work):只有群主或 APP 管理员可以踢人;
|
||||
* - 公开群(Public)、会议群(Meeting):群主、管理员和 APP 管理员可以踢人;
|
||||
* - 直播群(AVChatRoom):6.6 之前版本只支持禁言(muteGroupMember),不支持踢人。6.6 及以上版本支持禁言和踢人。需要您购买旗舰版套餐;
|
||||
* - 该接口其他使用限制请查阅:https://cloud.tencent.com/document/product/269/75400#.E8.B8.A2.E4.BA.BA。
|
||||
*/
|
||||
- (void)kickGroupMember:(NSString *)groupID memberList:(NSArray<NSString *> *)memberList reason:(NSString * _Nullable)reason duration:(uint32_t)duration succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(kickGroupMember(groupID:memberList:reason:duration:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.10 切换群成员的角色
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 工作群(Work)不支持设置群成员角色。
|
||||
* - 只有群主才能对群成员进行普通成员和管理员之间的角色切换。
|
||||
* - 转让群组请调用 @ref transferGroupOwner 接口。
|
||||
* - 会议群(Meeting)切换群成员角色之后,不会有 onGrantAdministrator 和 onRevokeAdministrator 通知回调。
|
||||
* - 切换的角色支持普通群成员( V2TIM_GROUP_MEMBER_ROLE_MEMBER) 和管理员(V2TIM_GROUP_MEMBER_ROLE_ADMIN)。
|
||||
*/
|
||||
- (void)setGroupMemberRole:(NSString*)groupID member:(NSString *)userID newRole:(uint32_t)role succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupMemberRole(groupID:memberUserID:newRole:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.11 标记群成员(需要您购买旗舰版套餐)
|
||||
*
|
||||
* @param groupID 群 ID。
|
||||
* @param memberList 群成员 ID 列表。
|
||||
* @param markType 标记类型。数字类型,大于等于 1000,您可以自定义,一个群组里最多允许定义 10 个标记。
|
||||
* @param enableMark YES 表示添加标记,NO 表示移除标记。
|
||||
* @note
|
||||
* - 直播群从 6.6 版本开始支持。
|
||||
* - 社群从 7.5 版本开始支持。
|
||||
* - 只有群主才有权限标记群组中其他人。
|
||||
*/
|
||||
- (void)markGroupMemberList:(NSString *)groupID memberList:(NSArray<NSString *> *)memberList markType:(uint32_t)markType enableMark:(BOOL)enableMark succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(markGroupMemberList(groupID:memberList:markType:enableMark:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.12 转让群主
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 普通类型的群(Work、Public、Meeting):只有群主才有权限进行群转让操作。
|
||||
* - 直播群(AVChatRoom):不支持转让群主。
|
||||
*/
|
||||
- (void)transferGroupOwner:(NSString*)groupID member:(NSString*)userID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(transferGroupOwner(groupID:memberUserID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.13 踢人(直播群踢人从 6.6 版本开始支持,需要您购买旗舰版套餐)
|
||||
*
|
||||
* @note 使用限制如下:
|
||||
* - 待废弃接口,请使用 kickGroupMember:memberList:reason:duration:succ:fail: 接口;
|
||||
* - 工作群(Work):只有群主或 APP 管理员可以踢人;
|
||||
* - 公开群(Public)、会议群(Meeting):群主、管理员和 APP 管理员可以踢人;
|
||||
* - 直播群(AVChatRoom):6.6 之前版本只支持禁言(muteGroupMember),不支持踢人。6.6 及以上版本支持禁言和踢人;
|
||||
* - 该接口其他使用限制请查阅:https://cloud.tencent.com/document/product/269/75400#.E8.B8.A2.E4.BA.BA。
|
||||
*/
|
||||
- (void)kickGroupMember:(NSString *)groupID memberList:(NSArray<NSString *> *)memberList reason:(NSString * _Nullable)reason succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail __attribute__((deprecated("use kickGroupMember:memberList:reason:succ:fail:")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 加群申请
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 获取加群申请列表
|
||||
* @note 最多支持50个
|
||||
*/
|
||||
- (void)getGroupApplicationList:(V2TIMGroupApplicationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupApplicationList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.2 同意某一条加群申请
|
||||
*/
|
||||
- (void)acceptGroupApplication:(V2TIMGroupApplication *)application reason:(NSString* _Nullable)reason succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(acceptGroupApplication(application:reason:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.3 拒绝某一条加群申请
|
||||
*/
|
||||
- (void)refuseGroupApplication:(V2TIMGroupApplication *)application reason:(NSString* _Nullable)reason succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(refuseGroupApplication(application:reason:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.4 标记申请列表为已读
|
||||
*/
|
||||
- (void)setGroupApplicationRead:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupApplicationRead(succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群基本资料(可以通过 getGroupInfo 获取,不支持由客户自行创建)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群资料
|
||||
V2TIM_EXPORT @interface V2TIMGroupInfo : NSObject
|
||||
|
||||
/**
|
||||
* 群组 ID
|
||||
*
|
||||
* @note 自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长 48 个字节,且前缀不能为 @TGS#(避免与默认分配的群组 ID 混淆)
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* groupID;
|
||||
|
||||
/// 群类型
|
||||
@property(nonatomic,strong,nullable) NSString* groupType;
|
||||
|
||||
/**
|
||||
* 社群是否支持创建话题
|
||||
* @note 只在群类型为 Community 时有效
|
||||
*/
|
||||
@property(nonatomic,assign) BOOL isSupportTopic;
|
||||
|
||||
/**
|
||||
* 群名称
|
||||
*
|
||||
* @note 群名称最长 100 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* groupName;
|
||||
|
||||
/**
|
||||
* 群公告
|
||||
*
|
||||
* @note 群公告最长 400 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* notification;
|
||||
|
||||
/**
|
||||
* 群简介
|
||||
*
|
||||
* @note 群简介最长 400 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* introduction;
|
||||
|
||||
/**
|
||||
* 群头像
|
||||
*
|
||||
* @note 群头像 URL 最长 500 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* faceURL;
|
||||
|
||||
/// 是否全员禁言
|
||||
@property(nonatomic,assign) BOOL allMuted;
|
||||
|
||||
///设置群自定义字段需要两个步骤:
|
||||
///1.在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群自定义字段) 配置群自定义字段的 key 值,Key 为 String 类型,长度不超过 16 字节。
|
||||
///2.调用 setGroupInfo 接口设置该字段,value 为 NSData 数据,长度不超过 512 字节。
|
||||
///@note 该字段主要用于 V1 和 V2 版本的兼容,如果您直接使用的是 V2 版本的 API ,建议使用 initGroupAttributes 接口设置群属性,其设置更灵活(无需控制台配置),支持的存储也更大(最大支持 16K)
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *>* customInfo;
|
||||
|
||||
/// 群创建人/管理员
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *owner;
|
||||
|
||||
/// 创建群组的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint32_t createTime;
|
||||
|
||||
/// 申请进群是否需要管理员审批:工作群(Work)默认值为 V2TIM_GROUP_ADD_FORBID,即默认不允许申请入群,您可以修改该字段打开申请入群方式。
|
||||
@property(nonatomic,assign) V2TIMGroupAddOpt groupAddOpt;
|
||||
|
||||
/// 邀请进群是否需要管理员审批 (从 7.1 版本开始支持)
|
||||
/// - 除工作群(Work)之外的其他群类型默认值都为 V2TIM_GROUP_ADD_FORBID,即默认不允许邀请入群,您可以修改该字段打开邀请入群方式。
|
||||
/// - 直播群、社群和话题默认不允许邀请入群,也不支持修改。
|
||||
@property(nonatomic,assign) V2TIMGroupAddOpt groupApproveOpt;
|
||||
|
||||
/// 上次修改群信息的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint32_t lastInfoTime;
|
||||
|
||||
/// 群最近一次发消息时间
|
||||
@property(nonatomic,assign,readonly) uint32_t lastMessageTime;
|
||||
|
||||
/// 已加入的群成员数量
|
||||
@property(nonatomic,assign,readonly) uint32_t memberCount;
|
||||
|
||||
/// 在线的群成员数量(待废弃字段,请使用 getGroupOnlineMemberCount:succ:fail: 接口获取群在线人数)
|
||||
@property(nonatomic,assign,readonly) uint32_t onlineCount __attribute__((deprecated("use getGroupOnlineMemberCount:succ:fail: instead")));
|
||||
|
||||
/// 最多允许加入的群成员数量
|
||||
/// @note 各类群成员人数限制详见: https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E9.99.90.E5.88.B6.E5.B7.AE.E5.BC.82
|
||||
@property(nonatomic,assign,readonly) uint32_t memberMaxCount;
|
||||
|
||||
/// 当前用户在此群组中的角色(V2TIMGroupMemberRole),切换角色请调用 setGroupMemberRole 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t role;
|
||||
|
||||
/// 当前用户在此群组中的消息接收选项,修改群消息接收选项请调用 setGroupReceiveMessageOpt 接口
|
||||
@property(nonatomic,assign,readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/// 当前用户加入此群的 UTC 时间戳,不支持设置,系统自动生成
|
||||
@property(nonatomic,assign,readonly) uint32_t joinTime;
|
||||
|
||||
/// 是否开启权限组能力,仅支持社群,7.8 版本开始支持
|
||||
/// 开启后,管理员角色的权限失效,用群权限、话题权限和权限组能力来对社群、话题进行管理。
|
||||
@property(nonatomic,assign) BOOL enablePermissionGroup;
|
||||
|
||||
/// 群权限,仅支持社群,7.8 版本开始支持
|
||||
/// 群成员在没有加入任何权限组时的默认权限,仅在 enablePermissionGroup = true 打开权限组之后生效
|
||||
@property(nonatomic,assign) uint64_t defaultPermissions;
|
||||
|
||||
@end
|
||||
|
||||
/// 获取群组资料结果
|
||||
V2TIM_EXPORT @interface V2TIMGroupInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong) V2TIMGroupInfo *info;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群申请信息(可以通过 getGroupApplicationList 获取,不支持由客户自行创建)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群申请信息
|
||||
V2TIM_EXPORT @interface V2TIMGroupApplication : NSObject
|
||||
|
||||
/// 群组 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* groupID;
|
||||
|
||||
/// 请求者 userID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* fromUser;
|
||||
|
||||
/// 请求者昵称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* fromUserNickName;
|
||||
|
||||
/// 请求者头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* fromUserFaceUrl;
|
||||
|
||||
/// 判决者id,有人请求加群:0,邀请其他人加群:被邀请人用户 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* toUser;
|
||||
|
||||
/// 申请时间
|
||||
@property(nonatomic,assign,readonly) uint64_t addTime;
|
||||
|
||||
/// 申请或邀请附加信息
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* requestMsg;
|
||||
|
||||
/// 审批信息:同意或拒绝信息
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* handledMsg;
|
||||
|
||||
/// 请求类型
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationType applicationType;
|
||||
|
||||
/// 处理标志
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationHandleStatus handleStatus;
|
||||
|
||||
/// 处理结果
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationHandleResult handleResult;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 邀请其他人入群的操作结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 邀请其他人入群的操作结果
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberOperationResult : NSObject
|
||||
|
||||
/// 被操作成员
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回状态
|
||||
@property(nonatomic,assign) V2TIMGroupMemberResult result;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 创建群时指定群成员
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 创建群时指定群成员
|
||||
V2TIM_EXPORT @interface V2TIMCreateGroupMemberInfo : NSObject
|
||||
|
||||
/// 被操作成员
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/** 群成员类型,需要注意一下事项:
|
||||
* 1. role 不设置或则设置为 V2TIM_GROUP_MEMBER_UNDEFINED,进群后默认为群成员。
|
||||
* 2. 工作群(Work)不支持设置 role 为管理员。
|
||||
* 3. 所有的群都不支持设置 role 为群主。
|
||||
*/
|
||||
@property(nonatomic,assign) uint32_t role;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 加群申请列表(包含已处理和待处理的)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 加群申请列表
|
||||
V2TIM_EXPORT @interface V2TIMGroupApplicationResult : NSObject
|
||||
|
||||
/// 未读的申请数量
|
||||
@property(nonatomic,assign) uint64_t unreadCount;
|
||||
|
||||
/// 加群申请的列表
|
||||
@property(nonatomic,strong) NSMutableArray<V2TIMGroupApplication *> * applicationList;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMGroupSearchParam : NSObject
|
||||
/// 搜索关键字列表,最多支持5个。
|
||||
/// 如果是本地搜索,您需主动设置 keyword 是否匹配群 ID、群名称。
|
||||
/// 如果是云端搜索,keyword 会自动匹配群 ID、群名称。
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 设置是否搜索群 ID(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchGroupID;
|
||||
|
||||
/// 设置是否搜索群名称(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchGroupName;
|
||||
|
||||
/// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索(仅云端搜索有效)
|
||||
/// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
|
||||
@property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
|
||||
|
||||
/// 设置每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20,仅云端搜索有效)
|
||||
@property(nonatomic,assign) NSUInteger searchCount;
|
||||
|
||||
/// 设置每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMGroupSearchResult 中的返回值(仅云端搜索有效)
|
||||
@property(nonatomic,strong) NSString *searchCursor;
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMGroupSearchResult : NSObject
|
||||
/// 满足搜索条件的群列表是否已经全部返回
|
||||
@property(nonatomic,assign) BOOL isFinished;
|
||||
|
||||
/// 满足搜索条件的群总数量
|
||||
@property(nonatomic,assign) NSUInteger totalCount;
|
||||
|
||||
/// 下一次云端搜索的起始位置
|
||||
@property(nonatomic,strong,nullable) NSString *nextCursor;
|
||||
|
||||
/// 当前一次云端搜索返回的群列表
|
||||
@property(nonatomic,strong) NSArray<V2TIMGroupInfo *> *groupList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群成员搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberSearchParam : NSObject
|
||||
/// 搜索关键字列表,最多支持 5 个
|
||||
/// 如果是本地搜索,您需主动设置 keyword 是否匹配群成员 ID、昵称、备注、群名片。
|
||||
/// 如果是云端搜索,keyword 会自动匹配群成员 ID、昵称、群名片。
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 指定群 ID 列表,若为 null 则搜索全部群中的群成员
|
||||
@property(nonatomic, strong,nullable) NSArray<NSString *> *groupIDList;
|
||||
|
||||
/// 设置是否搜索群成员 userID(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberUserID;
|
||||
|
||||
/// 设置是否搜索群成员昵称(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberNickName;
|
||||
|
||||
/// 设置是否搜索群成员备注(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberRemark;
|
||||
|
||||
/// 设置是否搜索群成员名片(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberNameCard;
|
||||
|
||||
/// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索(仅云端搜索有效)
|
||||
/// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
|
||||
@property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
|
||||
|
||||
/// 设置每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20,仅云端搜索有效)
|
||||
@property(nonatomic,assign) NSUInteger searchCount;
|
||||
|
||||
/// 设置每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMGroupMemberSearchResult 中的返回值(仅云端搜索有效)
|
||||
@property(nonatomic,strong) NSString *searchCursor;
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberSearchResult : NSObject
|
||||
/// 满足搜索条件的群成员列表是否已经全部返回
|
||||
@property(nonatomic,assign) BOOL isFinished;
|
||||
|
||||
/// 满足搜索条件的群成员总数量
|
||||
@property(nonatomic,assign) NSUInteger totalCount;
|
||||
|
||||
/// 下一次云端搜索的起始位置
|
||||
@property(nonatomic,strong,nullable) NSString *nextCursor;
|
||||
|
||||
/// 当前一次云端搜索返回的群成员列表
|
||||
@property(nonatomic,strong) NSDictionary<NSString *, NSArray<V2TIMGroupMemberFullInfo *> *> *memberList;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,43 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+LiveActivity
|
||||
//
|
||||
// 消息 LiveActivity 推送接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
@class V2TIMLiveActivityConfig;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (LiveActivity)
|
||||
|
||||
/**
|
||||
* 1.1 设置 LiveActivity 远端推送配置;当 config 为 nil 时,清除所有的远端推送配置
|
||||
*/
|
||||
- (void)setLiveActivity:(V2TIMLiveActivityConfig * _Nullable)config succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setLiveActivity(config:succ:fail:));
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMLiveActivityConfig : NSObject
|
||||
|
||||
/**
|
||||
* 创建 LiveActivity 时自定义的 activityID,用来标识该 LiveActivity
|
||||
*/
|
||||
@property(nonatomic,strong) NSString *activityID;
|
||||
|
||||
/**
|
||||
* LiveActivity token
|
||||
*/
|
||||
@property (nonatomic, strong, nullable) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台上传的 P8 证书 ID
|
||||
*/
|
||||
@property (nonatomic, assign) int businessID;
|
||||
|
||||
@end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,168 @@
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 信令
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 信令信息
|
||||
@class V2TIMSignalingInfo;
|
||||
/// 信令监听
|
||||
V2TIM_EXPORT @protocol V2TIMSignalingListener;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Signaling)
|
||||
|
||||
/**
|
||||
* 获取信令信息成功回调
|
||||
*/
|
||||
typedef void (^V2TIMSignalingInfoSucc)(V2TIMSignalingInfo * signalInfo);
|
||||
|
||||
/**
|
||||
* 添加信令监听
|
||||
*/
|
||||
- (void)addSignalingListener:(id<V2TIMSignalingListener>)listener NS_SWIFT_NAME(addSignalingListener(listener:));
|
||||
|
||||
/**
|
||||
* 移除信令监听
|
||||
*/
|
||||
- (void)removeSignalingListener:(id<V2TIMSignalingListener>)listener NS_SWIFT_NAME(removeSignalingListener(listener:));
|
||||
|
||||
/**
|
||||
* 邀请某个人
|
||||
*
|
||||
* @param invitee 被邀请人用户 ID
|
||||
* @param data 自定义数据
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
|
||||
* @param onlineUserOnly 是否只有在线用户才能收到邀请,如果设置为 YES,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)。
|
||||
* @param offlinePushInfo 苹果 APNS 离线推送时携带的标题和声音,其中 desc 为必填字段,推送的时候会默认展示 desc 信息。
|
||||
* @return inviteID 邀请 ID,如果邀请失败,返回 nil
|
||||
*
|
||||
*/
|
||||
- (NSString* _Nullable)invite:(NSString *)invitee
|
||||
data:(NSString * _Nullable)data
|
||||
onlineUserOnly:(BOOL)onlineUserOnly
|
||||
offlinePushInfo:(V2TIMOfflinePushInfo * _Nullable)offlinePushInfo
|
||||
timeout:(int)timeout
|
||||
succ:(_Nullable V2TIMSucc)succ
|
||||
fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(invite(invitee:data:onlineUserOnly:offlinePushInfo:timeout:succ:fail:));
|
||||
/**
|
||||
* 邀请群内的某些人
|
||||
*
|
||||
* @param groupID 发起邀请所在群组
|
||||
* @param inviteeList 被邀请人列表,inviteeList 必须已经在 groupID 群里,否则邀请无效
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
|
||||
* @param onlineUserOnly 是否只有在线用户才能收到邀请,如果设置为 YES,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)。
|
||||
* @return inviteID 邀请 ID,如果邀请失败,返回 nil
|
||||
*
|
||||
* @note 群邀请暂不支持离线推送,如果您需要离线推送,可以针对被邀请的用户单独发离线推送自定义消息。
|
||||
*/
|
||||
- (NSString* _Nullable)inviteInGroup:(NSString *)groupID
|
||||
inviteeList:(NSArray *)inviteeList
|
||||
data:(NSString * _Nullable)data
|
||||
onlineUserOnly:(BOOL)onlineUserOnly
|
||||
timeout:(int)timeout
|
||||
succ:(_Nullable V2TIMSucc)succ
|
||||
fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(inviteInGroup(groupID:inviteeList:data:onlineUserOnly:timeout:succ:fail:));
|
||||
|
||||
/**
|
||||
* 邀请方取消邀请
|
||||
*
|
||||
* @param inviteID 邀请 ID
|
||||
*
|
||||
* @note 如果所有被邀请人都已经处理了当前邀请(包含超时),不能再取消当前邀请。
|
||||
*/
|
||||
- (void)cancel:(NSString *)inviteID data:(NSString * _Nullable)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(cancel(inviteID:data:succ:fail:));
|
||||
|
||||
/**
|
||||
* 接收方接受邀请
|
||||
*
|
||||
* @note 不能接受不是针对自己的邀请,请在收到 onReceiveNewInvitation 回调的时候先判断 inviteeList 有没有自己,如果没有自己,不能 accept 邀请。
|
||||
*/
|
||||
- (void)accept:(NSString *)inviteID data:(NSString * _Nullable)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(accept(inviteID:data:succ:fail:));
|
||||
|
||||
/**
|
||||
* 接收方拒绝邀请
|
||||
*
|
||||
* @note 不能拒绝不是针对自己的邀请,请在收到 onReceiveNewInvitation 回调的时候先判断 inviteeList 有没有自己,如果没有自己,不能 reject 邀请。
|
||||
*/
|
||||
- (void)reject:(NSString *)inviteID data:(NSString * _Nullable)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(reject(inviteID:data:succ:fail:));
|
||||
|
||||
/**
|
||||
* 获取信令信息
|
||||
*
|
||||
* 如果 invite 设置 onlineUserOnly 为 NO,每次信令操作(包括 invite、cancel、accept、reject、timeout)都会产生一条自定义消息,该消息会通过 V2TIMAdvancedMsgListener -> onRecvNewMessage 抛给用户,用户也可以通过历史消息拉取,如果需要根据信令信息做自定义化文本展示,可以调用下面接口获取信令信息。
|
||||
*
|
||||
* @param msg 消息对象
|
||||
* @return V2TIMSignalingInfo 信令信息,如果为 nil,则 msg 不是一条信令消息。
|
||||
*/
|
||||
- (V2TIMSignalingInfo * _Nullable)getSignallingInfo:(V2TIMMessage *)msg NS_SWIFT_NAME(getSignallingInfo(msg:));
|
||||
|
||||
/**
|
||||
* 添加邀请信令
|
||||
*
|
||||
* 主要用于邀请者在被邀请者离线期间,发送了群聊邀请,被邀请者上线后将该信令同步给 SDK,从而正常使用信令功能。
|
||||
*
|
||||
* 当被邀请者点击离线推送提示,拉起 App 时:
|
||||
* 1. 如果被邀请者离线期间,邀请者发送的是 1V1 信令,SDK 可以自动同步邀请信令。邀请未超时,回调 onReceiveNewInvitation。
|
||||
* 2. 如果被邀请者离线期间,邀请者发送的是群聊信令,不同 SDK 版本表现如下:
|
||||
* - 6.7 以前的版本:
|
||||
* SDK 无法自动同步邀请信令(信令本质上就是一条自定义消息,群离线消息在程序启动后无法自动同步)。
|
||||
* 如果被邀请者需要处理该邀请信令,可以让邀请者在发起信令时,向每个被邀请者额外发送一条 C2C 离线推送消息,消息携带 V2TIMSignalingInfo 信息。
|
||||
* 被邀请者收到离线推送时通过 addInvitedSignaling 将 V2TIMSignalingInfo 信息告知 SDK。
|
||||
* - 6.7 及以后的版本:
|
||||
* SDK 会自动同步最近 30 秒的消息。如果其中包含了未超时的邀请信令,回调 onReceiveNewInvitation。您无需再调用本接口同步邀请信令。
|
||||
*
|
||||
* @note 如果添加的信令信息已存在,fail callback 会抛 ERR_SDK_SIGNALING_ALREADY_EXISTS 错误码。
|
||||
*/
|
||||
- (void)addInvitedSignaling:(V2TIMSignalingInfo *)signallingInfo succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(addInvitedSignaling(signallingInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 修改邀请信令(6.7 及其以上版本支持)
|
||||
*
|
||||
* @note 仅支持修改邀请信令的自定义字段 data。只有在线用户才能收到的邀请信令不能被修改。
|
||||
*/
|
||||
- (void)modifyInvitation:(NSString *)inviteID data:(NSString *)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(modifyInvitation(inviteID:data:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMSignalingListener <NSObject>
|
||||
@optional
|
||||
/// 收到邀请的回调
|
||||
-(void)onReceiveNewInvitation:(NSString *)inviteID inviter:(NSString * _Nullable)inviter groupID:(NSString * _Nullable)groupID inviteeList:(NSArray<NSString *> *)inviteeList data:(NSString * _Nullable)data NS_SWIFT_NAME(onReceiveNewInvitation(inviteID:inviter:groupID:inviteeList:data:));
|
||||
|
||||
/// 被邀请者接受邀请
|
||||
-(void)onInviteeAccepted:(NSString *)inviteID invitee:(NSString * _Nullable)invitee data:(NSString * _Nullable)data NS_SWIFT_NAME(onInviteeAccepted(inviteID:invitee:data:));
|
||||
|
||||
/// 被邀请者拒绝邀请
|
||||
-(void)onInviteeRejected:(NSString *)inviteID invitee:(NSString * _Nullable)invitee data:(NSString * _Nullable)data NS_SWIFT_NAME(onInviteeRejected(inviteID:invitee:data:));
|
||||
|
||||
/// 邀请被取消
|
||||
-(void)onInvitationCancelled:(NSString *)inviteID inviter:(NSString * _Nullable)inviter data:(NSString * _Nullable)data NS_SWIFT_NAME(onInvitationCancelled(inviteID:inviter:data:));
|
||||
|
||||
/// 邀请超时
|
||||
-(void)onInvitationTimeout:(NSString *)inviteID inviteeList:(NSArray<NSString *> *)inviteeList NS_SWIFT_NAME(onInvitationTimeout(inviteID:inviteeList:));
|
||||
|
||||
/// 邀请被修改(6.7 及其以上版本支持)
|
||||
-(void)onInvitationModified:(NSString *)inviteID data:(NSString * _Nullable)data NS_SWIFT_NAME(onInvitationModified(inviteID:data:));
|
||||
|
||||
@end
|
||||
|
||||
|
||||
// 操作类型
|
||||
typedef NS_ENUM(NSInteger,SignalingActionType) {
|
||||
SignalingActionType_Invite = 1, // 邀请方发起邀请
|
||||
SignalingActionType_Cancel_Invite = 2, // 邀请方取消邀请
|
||||
SignalingActionType_Accept_Invite = 3, // 被邀请方接受邀请
|
||||
SignalingActionType_Reject_Invite = 4, // 被邀请方拒绝邀请
|
||||
SignalingActionType_Invite_Timeout = 5, // 邀请超时
|
||||
};
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMSignalingInfo : NSObject
|
||||
@property(nonatomic,strong,nullable) NSString *inviteID;
|
||||
@property(nonatomic,strong,nullable) NSString *groupID;
|
||||
@property(nonatomic,strong,nullable) NSString *inviter;
|
||||
@property(nonatomic,strong) NSMutableArray *inviteeList;
|
||||
@property(nonatomic,strong,nullable) NSString *data;
|
||||
@property(nonatomic,assign) uint32_t timeout;
|
||||
@property(nonatomic,assign) SignalingActionType actionType;
|
||||
@end
|
||||
@@ -0,0 +1,37 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+VOIP
|
||||
//
|
||||
// 消息 VoIP 推送接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
@class V2TIMVOIPConfig;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (VOIP)
|
||||
|
||||
/**
|
||||
* 1.1 设置 VoIP 推送
|
||||
*/
|
||||
- (void)setVOIP:(V2TIMVOIPConfig * _Nullable)config succ:(V2TIMSucc _Nullable)succ fail:(V2TIMFail _Nullable)fail NS_SWIFT_NAME(setVOIP(config:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMVOIPConfig : NSObject
|
||||
|
||||
/**
|
||||
* VoIP device token
|
||||
*/
|
||||
@property (nonatomic, strong, nullable) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台上传的 VoIP 证书 ID
|
||||
*/
|
||||
@property (nonatomic, assign) NSInteger certificateID;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,843 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager
|
||||
//
|
||||
// TIM SDK 2.0 版的接口,相比于 1.0 版本更加简洁易用,接入速度更快,高级特性接口详见:
|
||||
// - V2TIMManager+Message.h 消息相关的高级功能接口,比如图片消息,视频消息,消息撤回,消息已读等功能。
|
||||
// - V2TIMManager+APNS.h 推送相关的高级功能接口,主要用于开启消息推送功能。
|
||||
// - V2TIMManager+Conversation.h 会话相关的高级功能接口,一个会话对应一个聊天窗口。
|
||||
// - V2TIMManager+Group.h 群组相关的高级功能接口,比如邀请人进群,处理加群请求等功能。
|
||||
// - V2TIMManager+Friendship.h 关系链相关的高级功能接口,比如黑名单,好友列表等功能。
|
||||
// - V2TIMManager+Community.h 社群相关的高级功能接口,比如创建话题,话题列表等功能。
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef ImSDK_V2TIMManager_h
|
||||
#define ImSDK_V2TIMManager_h
|
||||
|
||||
#if defined(BUILD_V2TIM_SDK)
|
||||
#define V2TIM_EXPORT __attribute__((visibility("default")))
|
||||
#else
|
||||
#define V2TIM_EXPORT
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#define V2TIM_EXTERN extern "C" V2TIM_EXPORT
|
||||
#else
|
||||
#define V2TIM_EXTERN extern V2TIM_EXPORT
|
||||
#endif
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@class V2TIMSDKConfig;
|
||||
@class V2TIMUserInfo;
|
||||
@class V2TIMUserFullInfo;
|
||||
@class V2TIMUserSearchParam;
|
||||
@class V2TIMUserSearchResult;
|
||||
@class V2TIMGroupMemberInfo;
|
||||
@class V2TIMGroupMemberFullInfo;
|
||||
@class V2TIMGroupChangeInfo;
|
||||
@class V2TIMGroupMemberChangeInfo;
|
||||
@class V2TIMUserReceiveMessageOptInfo;
|
||||
@class V2TIMTopicInfo;
|
||||
@class V2TIMUserStatus;
|
||||
@class V2TIMReceiveMessageOptInfo;
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMSDKListener;
|
||||
V2TIM_EXPORT @protocol V2TIMSimpleMsgListener;
|
||||
V2TIM_EXPORT @protocol V2TIMGroupListener;
|
||||
|
||||
V2TIM_EXTERN NSString *const GroupType_Work;
|
||||
V2TIM_EXTERN NSString *const GroupType_Public;
|
||||
V2TIM_EXTERN NSString *const GroupType_Meeting;
|
||||
V2TIM_EXTERN NSString *const GroupType_AVChatRoom;
|
||||
V2TIM_EXTERN NSString *const GroupType_Community;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// V2TIMManager
|
||||
//
|
||||
// IMSDK 主核心类,负责 IMSDK 的初始化、登录、消息收发,建群退群等功能
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager : NSObject
|
||||
|
||||
/// 成功通用回调
|
||||
typedef void (^V2TIMSucc)(void);
|
||||
/// 失败通用回调
|
||||
typedef void (^V2TIMFail)(int code, NSString * _Nullable desc);
|
||||
/// 创建群组成功回调
|
||||
typedef void (^V2TIMCreateGroupSucc)(NSString * _Nullable groupID);
|
||||
/// 获取用户资料成功回调
|
||||
typedef void (^V2TIMUserFullInfoListSucc)(NSArray <V2TIMUserFullInfo *> *infoList);
|
||||
/// 搜索云端用户的结果回调
|
||||
typedef void (^V2TIMUserSearchResultSucc)(V2TIMUserSearchResult *searchResult);
|
||||
/// 实验性 API 接口成功回调
|
||||
typedef void (^V2TIMCallExperimentalAPISucc)(NSObject * _Nullable result);
|
||||
/// 获取用户状态列表成功回调
|
||||
typedef void (^V2TIMUserStatusListSucc)(NSArray<V2TIMUserStatus *> *result);
|
||||
|
||||
/// 登录状态
|
||||
typedef NS_ENUM(NSInteger, V2TIMLoginStatus) {
|
||||
V2TIM_STATUS_LOGINED = 1, ///< 已登录
|
||||
V2TIM_STATUS_LOGINING = 2, ///< 登录中
|
||||
V2TIM_STATUS_LOGOUT = 3, ///< 无登录
|
||||
};
|
||||
|
||||
/// 日志级别
|
||||
typedef NS_ENUM(NSInteger, V2TIMLogLevel) {
|
||||
V2TIM_LOG_NONE = 0, ///< 不输出任何 sdk log
|
||||
V2TIM_LOG_DEBUG = 3, ///< 输出 DEBUG,INFO,WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_INFO = 4, ///< 输出 INFO,WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_WARN = 5, ///< 输出 WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_ERROR = 6, ///< 输出 ERROR 级别的 log
|
||||
};
|
||||
|
||||
/// 消息优先级
|
||||
typedef NS_ENUM(NSInteger, V2TIMMessagePriority) {
|
||||
V2TIM_PRIORITY_DEFAULT = 0, ///< 默认
|
||||
V2TIM_PRIORITY_HIGH = 1, ///< 高优先级,一般用于礼物等重要消息
|
||||
V2TIM_PRIORITY_NORMAL = 2, ///< 常规优先级,一般用于普通消息
|
||||
V2TIM_PRIORITY_LOW = 3, ///< 低优先级,一般用于点赞消息
|
||||
};
|
||||
|
||||
/// 性别
|
||||
typedef NS_ENUM(NSInteger, V2TIMGender) {
|
||||
V2TIM_GENDER_UNKNOWN = 0, ///< 未知性别
|
||||
V2TIM_GENDER_MALE = 1, ///< 男性
|
||||
V2TIM_GENDER_FEMALE = 2, ///< 女性
|
||||
};
|
||||
|
||||
/// 好友验证方式
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendAllowType) {
|
||||
V2TIM_FRIEND_ALLOW_ANY = 0, ///< 同意任何用户加好友
|
||||
V2TIM_FRIEND_NEED_CONFIRM = 1, ///< 需要验证
|
||||
V2TIM_FRIEND_DENY_ANY = 2, ///< 拒绝任何人加好友
|
||||
};
|
||||
|
||||
/// 群成员角色
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberRole) {
|
||||
V2TIM_GROUP_MEMBER_UNDEFINED = 0, ///< 未定义(没有获取该字段)
|
||||
V2TIM_GROUP_MEMBER_ROLE_MEMBER = 200, ///< 群成员
|
||||
V2TIM_GROUP_MEMBER_ROLE_ADMIN = 300, ///< 群管理员
|
||||
V2TIM_GROUP_MEMBER_ROLE_SUPER = 400, ///< 群主
|
||||
};
|
||||
|
||||
/// 用户状态类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMUserStatusType) {
|
||||
V2TIM_USER_STATUS_UNKNOWN = 0, ///< 未知状态
|
||||
V2TIM_USER_STATUS_ONLINE = 1, ///< 在线状态
|
||||
V2TIM_USER_STATUS_OFFLINE = 2, ///< 离线状态
|
||||
V2TIM_USER_STATUS_UNLOGINED = 3, ///< 未登录(如主动调用 logout 接口,或者账号注册后还未登录)
|
||||
};
|
||||
|
||||
/// 搜索关键字匹配类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMKeywordListMatchType) {
|
||||
V2TIM_KEYWORD_LIST_MATCH_TYPE_OR = 0,
|
||||
V2TIM_KEYWORD_LIST_MATCH_TYPE_AND = 1
|
||||
};
|
||||
|
||||
/// 日志回调
|
||||
typedef void (^V2TIMLogListener)(V2TIMLogLevel logLevel, NSString * _Nullable logContent);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 初始化
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 获取 V2TIMManager 管理器实例
|
||||
*/
|
||||
+ (V2TIMManager*)sharedInstance;
|
||||
/**
|
||||
* 1.2 初始化 SDK
|
||||
*
|
||||
* @param sdkAppID 应用 ID,必填项,可以在 [控制台](https://console.cloud.tencent.com/im) 中获取
|
||||
* @param config 配置信息
|
||||
* @return YES:成功;NO:失败
|
||||
*/
|
||||
- (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config;
|
||||
|
||||
/**
|
||||
* 1.3 添加 IM 监听
|
||||
*/
|
||||
- (void)addIMSDKListener:(id<V2TIMSDKListener>)listener NS_SWIFT_NAME(addIMSDKListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.4 移除 IM 监听
|
||||
*/
|
||||
- (void)removeIMSDKListener:(id<V2TIMSDKListener>)listener NS_SWIFT_NAME(removeIMSDKListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.5 反初始化 SDK
|
||||
*/
|
||||
- (void)unInitSDK;
|
||||
|
||||
/**
|
||||
* 1.6 获取版本号
|
||||
*
|
||||
* @return 返回版本号,字符串表示,例如 5.0.10
|
||||
*/
|
||||
- (NSString*)getVersion;
|
||||
|
||||
/**
|
||||
* 1.7 获取服务器时间戳
|
||||
*
|
||||
* @return UTC 时间戳,单位 s
|
||||
*/
|
||||
- (uint64_t)getServerTime;
|
||||
|
||||
/**
|
||||
* 初始化 SDK(待废弃接口,请使用 initSDK 和 addIMSDKListener 接口)
|
||||
*/
|
||||
- (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config listener:(_Nullable id<V2TIMSDKListener>)listener __attribute__((deprecated("use initSDK:config: and addIMSDKListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 登录登出
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 登录
|
||||
*
|
||||
* 登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参考 [UserSig 后台 API](https://cloud.tencent.com/document/product/269/32688)。
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 登陆时票据过期:login 函数的 V2TIMFail 会返回 ERR_USER_SIG_EXPIRED(6206)或者 ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001) 错误码,此时请您生成新的 userSig 重新登录。
|
||||
* - 在线时票据过期:用户在线期间也可能收到 V2TIMSDKListener -> onUserSigExpired 回调,此时也是需要您生成新的 userSig 并重新登录。
|
||||
* - 在线时被踢下线:用户在线情况下被踢,SDK 会通过 V2TIMSDKListener -> onKickedOffline 回调通知给您,此时可以 UI 提示用户,并再次调用 login() 重新登录。
|
||||
* - 同平台多设备在线:该功能为IM旗舰版功能,购买[旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17487)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17224#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)login:(NSString *)userID userSig:(NSString *)userSig succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(login(userID:userSig:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 登出
|
||||
*
|
||||
* 退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
|
||||
*/
|
||||
- (void)logout:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(logout(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 获取登录用户
|
||||
*/
|
||||
- (NSString * _Nullable)getLoginUser;
|
||||
|
||||
/**
|
||||
* 2.4 获取登录状态
|
||||
*
|
||||
* 如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。
|
||||
*/
|
||||
- (V2TIMLoginStatus)getLoginStatus;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 消息收发
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 3.1 设置基本消息(文本消息和自定义消息)的事件监听器
|
||||
*
|
||||
* @note 图片消息、视频消息、语音消息等高级消息的监听,请参考 V2TIMManager+Message.h -> addAdvancedMsgListener 接口。
|
||||
*/
|
||||
- (void)addSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(addSimpleMsgListener(listener:));
|
||||
|
||||
/**
|
||||
* 3.2 移除基本消息(文本消息和自定义消息)的事件监听器
|
||||
*/
|
||||
- (void)removeSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(removeSimpleMsgListener(listener:));
|
||||
|
||||
/**
|
||||
* 3.3 发送单聊普通文本消息(最大支持 12KB)
|
||||
*
|
||||
* 文本消息支持云端的脏词过滤,如果用户发送的消息中有敏感词,V2TIMFail 回调将会返回 80001 错误码。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendC2CTextMessage:(NSString *)text to:(NSString *)userID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendC2CTextMessage(text:to:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 发送单聊自定义(信令)消息(最大支持 12KB)
|
||||
*
|
||||
* 自定义消息本质就是一端二进制 buffer,您可以在其上自由组织自己的消息格式(常用于发送信令),但是自定义消息不支持云端敏感词过滤。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendC2CCustomMessage:(NSData *)customData to:(NSString *)userID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendC2CCustomMessage(customData:to:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 发送群聊普通文本消息(最大支持 12KB)
|
||||
*
|
||||
* @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
|
||||
* - HIGH :云端会优先传输,适用于在群里发送重要消息,比如主播发送的文本消息等。
|
||||
* - NORMAL :云端按默认优先级传输,适用于在群里发送普通消息,比如观众发送的弹幕消息等。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendGroupTextMessage:(NSString *)text to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendGroupTextMessage(text:to:priority:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 发送群聊自定义(信令)消息(最大支持 12KB)
|
||||
*
|
||||
* @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
|
||||
* - HIGH :云端会优先传输,适用于在群里发送重要信令,比如连麦邀请,PK邀请、礼物赠送等关键性信令。
|
||||
* - NORMAL :云端按默认优先级传输,适用于在群里发送非重要信令,比如观众的点赞提醒等等。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendGroupCustomMessage:(NSData *)customData to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendGroupCustomMessage(customData:to:priority:succ:fail:));
|
||||
|
||||
// 3.7 更多功能,详见 V2TIMManager+Message.h
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群相关操作
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 设置群组监听器
|
||||
*/
|
||||
- (void)addGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(addGroupListener(listener:));
|
||||
|
||||
/**
|
||||
* 4.2 设置群组监听器
|
||||
*/
|
||||
- (void)removeGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(removeGroupListener(listener:));
|
||||
|
||||
/**
|
||||
* 4.3 创建群组
|
||||
*
|
||||
* @param groupType 群类型,我们为您预定义好了几种常用的群类型,您也可以在控制台定义自己需要的群类型:
|
||||
* - "Work" :工作群,成员上限 200 人,不支持由用户主动加入,需要他人邀请入群,适合用于类似微信中随意组建的工作群(对应老版本的 Private 群)。
|
||||
* - "Public" :公开群,成员上限 2000 人,任何人都可以申请加群,但加群需群主或管理员审批,适合用于类似 QQ 中由群主管理的兴趣群。
|
||||
* - "Meeting" :会议群,成员上限 6000 人,任何人都可以自由进出,且加群无需被审批,适合用于视频会议和在线培训等场景(对应老版本的 ChatRoom 群)。
|
||||
* - "Community" :社群,成员上限 100000 人,任何人都可以自由进出,且加群无需被审批,适合用于知识分享和游戏交流等超大社区群聊场景。5.8 版本开始支持,需要您购买旗舰版套餐。
|
||||
* - "AVChatRoom" :直播群,人数无上限,任何人都可以自由进出,消息吞吐量大,适合用作直播场景中的高并发弹幕聊天室。
|
||||
*
|
||||
* @param groupID 自定义群组 ID,可以传 nil。传 nil 时系统会自动分配 groupID,并通过 succ 回调返回。
|
||||
* "Community" 类型自定义群组 ID 必须以 "@TGS#_" 作为前缀。
|
||||
* @param groupName 群名称,不能为 nil,最长 100 字节,使用 UTF-8 编码,1 个汉字占 3 个字节。
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 不支持在同一个 SDKAPPID 下创建两个相同 groupID 的群。
|
||||
* - 社群(Community)功能仅 5.8.1668 增强版及以上版本支持,需[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17213)并[申请开通](https://cloud.tencent.com/document/product/269/3916?from=17215)后方可使用。
|
||||
* - 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。
|
||||
*/
|
||||
- (void)createGroup:(NSString *)groupType groupID:(NSString* _Nullable)groupID groupName:(NSString *)groupName succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createGroup(groupType:groupID:groupName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.4 加入群组
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 工作群(Work):不能主动入群,只能通过群成员调用 V2TIMManager+Group.h -> inviteUserToGroup 接口邀请入群。
|
||||
* - 公开群(Public):申请入群后,需要管理员审批,管理员在收到 V2TIMGroupListener -> onReceiveJoinApplication 回调后调用 V2TIMManager+Group.h -> getGroupApplicationList 接口处理加群请求。
|
||||
* - 其他群:可以直接入群。
|
||||
* - 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。
|
||||
* - 直播群(AVChatRoom):直播群新成员可以查看入群前消息,该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17484)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17179#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)joinGroup:(NSString*)groupID msg:(NSString* _Nullable)msg succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(joinGroup(groupID:msg:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.5 退出群组
|
||||
*
|
||||
* @note 在公开群(Public)、会议(Meeting)和直播群(AVChatRoom)中,群主是不可以退群的,群主只能调用 dismissGroup 解散群组。
|
||||
*/
|
||||
- (void)quitGroup:(NSString*)groupID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(quitGroup(groupID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.6 解散群组
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 好友工作群(Work)的解散最为严格,即使群主也不能随意解散,只能由您的业务服务器调用 [解散群组 REST API](https://cloud.tencent.com/document/product/269/1624) 解散。
|
||||
* - 其他类型群的群主可以解散群组。
|
||||
*/
|
||||
- (void)dismissGroup:(NSString*)groupID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(dismissGroup(groupID:succ:fail:));
|
||||
|
||||
// 4.7 更多功能,详见 V2TIMManager+Group.h
|
||||
|
||||
/**
|
||||
* 设置群组监听器(待废弃接口,请使用 addGroupListener 和 removeGroupListener 接口)
|
||||
*/
|
||||
- (void)setGroupListener:(id<V2TIMGroupListener>)listener __attribute__((deprecated("use addGroupListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 资料相关操作
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 5.1 获取用户资料
|
||||
* @note
|
||||
* - 获取自己的资料,传入自己的 ID 即可。
|
||||
* - userIDList 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
*/
|
||||
- (void)getUsersInfo:(NSArray<NSString *> *)userIDList succ:(V2TIMUserFullInfoListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 5.2 修改个人资料
|
||||
*/
|
||||
- (void)setSelfInfo:(V2TIMUserFullInfo *)Info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setSelfInfo(info:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.3 订阅用户资料,从 7.4 版本开始支持
|
||||
*
|
||||
* @param userIDList 待订阅的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 该接口用于订阅陌生人的资料变更事件,订阅成功后,当订阅用户资料发生变更,您可以通过监听 onUserInfoChanged 回调来感知
|
||||
* - 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
|
||||
* - 自己的资料变更通知不需要订阅,默认会通过 onSelfInfoUpdated 回调通知给您
|
||||
* - 好友的资料变更通知不需要订阅,默认会通过 onFriendInfoChange 回调通知给您
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)subscribeUserInfo:(NSArray *)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(subscribeUserInfo(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.4 取消订阅用户资料,从 7.4 版本开始支持
|
||||
*
|
||||
* @param userIDList 需要取消订阅的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 当 userIDList 为空时,取消当前所有的订阅
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)unsubscribeUserInfo:(NSArray * _Nullable)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(unsubscribeUserInfo(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.5 搜索云端用户资料(8.4 及以上版本支持)
|
||||
* @param searchParam 用户搜索参数,详见 V2TIMUserSearchParam 的定义
|
||||
* @note
|
||||
* - 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
* - 如果您没有开通该服务,调用接口会返回 60020 错误码
|
||||
* - 该接口返回的是云端存储的用户资料,包括好友和非好友资料,您可以调用 checkFriend 接口来判断是否为好友。
|
||||
*/
|
||||
- (void)searchUsers:(V2TIMUserSearchParam *)searchParam succ:(V2TIMUserSearchResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchUsers(searchParam:succ:fail:));
|
||||
|
||||
|
||||
/**
|
||||
* 5.6 查询用户状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @param userIDList 需要获取的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 如果您想查询自己的自定义状态,您只需要传入自己的 userID 即可
|
||||
* - 当您批量查询时,接口只会返回查询成功的用户状态信息;当所有用户均查询失败时,接口会报错
|
||||
* - 查询其他用户状态为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getUserStatus:(NSArray *)userIDList succ:(V2TIMUserStatusListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getUserStatus(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.7 设置自己的状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @param status 待设置的自定义状态
|
||||
*
|
||||
* @note 该接口只支持设置自己的自定义状态,即 V2TIMUserStatus.customStatus
|
||||
*/
|
||||
- (void)setSelfStatus:(V2TIMUserStatus *)status succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setSelfStatus(status:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.8 订阅用户状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @param userIDList 待订阅的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 当成功订阅用户状态后,当对方的状态(包含在线状态、自定义状态)发生变更后,您可以监听 @onUserStatusChanged 回调来感知
|
||||
* - 如果您需要订阅好友列表的状态,您只需要在控制台上打开开关即可,无需调用该接口
|
||||
* - 该接口不支持订阅自己,您可以通过监听 @onUserStatusChanged 回调来感知自身的自定义状态的变更
|
||||
* - 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)subscribeUserStatus:(NSArray *)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(subscribeUserStatus(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.9 取消订阅用户状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @note
|
||||
* - 当 userIDList 为空或者 nil 时,取消当前所有的订阅
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)unsubscribeUserStatus:(NSArray * _Nullable)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(unsubscribeUserStatus(userIDList:succ:fail:));
|
||||
|
||||
// 5.10 更多功能,详见 V2TIMManager+Friendship.h
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 扩展接口
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 6.1 实验性 API 接口
|
||||
*
|
||||
* @param api 接口名称
|
||||
* @param param 接口参数
|
||||
*
|
||||
* @note 该接口提供一些实验性功能
|
||||
*/
|
||||
- (void)callExperimentalAPI:(NSString *)api
|
||||
param:(NSObject * _Nullable)param
|
||||
succ:(V2TIMCallExperimentalAPISucc)succ
|
||||
fail:(V2TIMFail)fail NS_SWIFT_NAME(callExperimentalAPI(api:param:succ:fail:));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 主核心回调,帮助您时刻关注 IMSDK 的在线状态
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 主核心回调
|
||||
V2TIM_EXPORT @protocol V2TIMSDKListener <NSObject>
|
||||
@optional
|
||||
/// SDK 正在连接到服务器
|
||||
- (void)onConnecting;
|
||||
|
||||
/// SDK 已经成功连接到服务器
|
||||
- (void)onConnectSuccess;
|
||||
|
||||
/// SDK 连接服务器失败
|
||||
- (void)onConnectFailed:(int)code err:(NSString* _Nullable)err;
|
||||
|
||||
/// 当前用户被踢下线,此时可以 UI 提示用户,并再次调用 V2TIMManager 的 login() 函数重新登录。
|
||||
- (void)onKickedOffline;
|
||||
|
||||
/// 在线时票据过期:此时您需要生成新的 userSig 并再次调用 V2TIMManager 的 login() 函数重新登录。
|
||||
- (void)onUserSigExpired;
|
||||
|
||||
/// 当前用户的资料发生了更新
|
||||
- (void)onSelfInfoUpdated:(V2TIMUserFullInfo *)Info NS_SWIFT_NAME(onSelfInfoUpdated(info:));
|
||||
|
||||
/**
|
||||
* 用户状态变更通知
|
||||
*
|
||||
* @note 收到通知的情况:
|
||||
* 1. 订阅过的用户发生了状态变更(包括在线状态和自定义状态),会触发该回调
|
||||
* 2. 在 IM 控制台打开了好友状态通知开关,即使未主动订阅,当好友状态发生变更时,也会触发该回调
|
||||
* 3. 同一个账号多设备登录,当其中一台设备修改了自定义状态,所有设备都会收到该回调
|
||||
*/
|
||||
- (void)onUserStatusChanged:(NSArray<V2TIMUserStatus *> *)userStatusList NS_SWIFT_NAME(onUserStatusChanged(userStatusList:));
|
||||
|
||||
/**
|
||||
* 用户资料变更通知
|
||||
*
|
||||
* @note
|
||||
* 仅当通过 subscribeUserInfo 成功订阅的用户(仅限非好友用户)的资料发生变更时,才会激活此回调函数
|
||||
*/
|
||||
- (void)onUserInfoChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList NS_SWIFT_NAME(onUserInfoChanged(userInfoList:));
|
||||
|
||||
/**
|
||||
* 全局消息接收选项变更通知
|
||||
*/
|
||||
- (void)onAllReceiveMessageOptChanged:(V2TIMReceiveMessageOptInfo *)receiveMessageOptInfo NS_SWIFT_NAME(onAllReceiveMessageOptChanged(receiveMessageOptInfo:));
|
||||
|
||||
/**
|
||||
* 实验性事件通知
|
||||
*/
|
||||
- (void)onExperimentalNotify:(NSString *)key param:(NSObject * _Nullable)param NS_SWIFT_NAME(onExperimentalNotify(key:param:));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 基本消息回调 (高级消息请参考 V2TIMManager+Message.h -> V2TIMAdvancedMsgListener)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 基本消息回调
|
||||
V2TIM_EXPORT @protocol V2TIMSimpleMsgListener <NSObject>
|
||||
@optional
|
||||
|
||||
/// 收到 C2C 文本消息
|
||||
- (void)onRecvC2CTextMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info text:(NSString * _Nullable)text NS_SWIFT_NAME(onRecvC2CTextMessage(msgID:sender:text:));
|
||||
|
||||
/// 收到 C2C 自定义(信令)消息
|
||||
- (void)onRecvC2CCustomMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info customData:(NSData * _Nullable)data NS_SWIFT_NAME(onRecvC2CCustomMessage(msgID:sender:customData:));
|
||||
|
||||
/// 收到群文本消息
|
||||
- (void)onRecvGroupTextMessage:(NSString *)msgID groupID:(NSString * _Nullable)groupID sender:(V2TIMGroupMemberInfo *)info text:(NSString * _Nullable)text NS_SWIFT_NAME(onRecvGroupTextMessage(msgID:groupID:sender:text:));
|
||||
|
||||
/// 收到群自定义(信令)消息
|
||||
- (void)onRecvGroupCustomMessage:(NSString *)msgID groupID:(NSString * _Nullable)groupID sender:(V2TIMGroupMemberInfo *)info customData:(NSData * _Nullable)data NS_SWIFT_NAME(onRecvGroupCustomMessage(msgID:groupID:sender:customData:));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 群组事件回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 群组事件回调
|
||||
V2TIM_EXPORT @protocol V2TIMGroupListener <NSObject>
|
||||
@optional
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群成员相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新成员加入群(该群所有的成员都能收到)
|
||||
/// 会议群(Meeting)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员变更通知) 主动配置。
|
||||
- (void)onMemberEnter:(NSString * _Nullable)groupID memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList NS_SWIFT_NAME(onMemberEnter(groupID:memberList:));
|
||||
|
||||
/// 有成员离开群(该群所有的成员都能收到)
|
||||
/// 会议群(Meeting)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员变更通知) 主动配置。
|
||||
- (void)onMemberLeave:(NSString * _Nullable)groupID member:(V2TIMGroupMemberInfo *)member NS_SWIFT_NAME(onMemberLeave(groupID:member:));
|
||||
|
||||
/// 某成员被拉入某群(该群所有的成员都能收到)
|
||||
- (void)onMemberInvited:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList NS_SWIFT_NAME(onMemberInvited(groupID:opUser:memberList:));
|
||||
|
||||
/// 有成员被踢出某群(该群所有的成员都能收到)
|
||||
- (void)onMemberKicked:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList NS_SWIFT_NAME(onMemberKicked(groupID:opUser:memberList:));
|
||||
|
||||
/// 某成员信息发生变更(该群所有的成员都能收到)
|
||||
/// 会议群(Meeting)和直播群(AVChatRoom)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员资料变更通知) 主动配置。
|
||||
- (void)onMemberInfoChanged:(NSString * _Nullable)groupID changeInfoList:(NSArray <V2TIMGroupMemberChangeInfo *> *)changeInfoList NS_SWIFT_NAME(onMemberInfoChanged(groupID:changeInfoList:));
|
||||
|
||||
/// 群组全体成员被禁言/解除禁言了(该群所有的成员都能收到)
|
||||
/// 需要提前在 [控制台](https://console.cloud.tencent.com/im) 开启通知开关。开关路径:功能配置 -> 群组配置 -> 群系统通知配置 -> 群资料变更通知 -> 群禁言变更通知。
|
||||
/// 7.5 及以上版本支持。
|
||||
- (void)onAllGroupMembersMuted:(NSString * _Nullable)groupID isMute:(BOOL)isMute NS_SWIFT_NAME(onAllGroupMembersMuted(groupID:isMute:));
|
||||
|
||||
/// 有成员被标记(该群所有的成员都能收到)
|
||||
/// 仅社群(Community)支持该回调。
|
||||
/// 7.5 及以上版本支持,需要您购买旗舰版套餐。
|
||||
- (void)onMemberMarkChanged:(NSString * _Nullable)groupID memberIDList:(NSArray<NSString *> *)memberIDList markType:(int)markType enableMark:(BOOL)enableMark NS_SWIFT_NAME(onMemberMarkChanged(groupID:memberIDList:markType:enableMark:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群生命周期相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新的群创建(创建者能收到,应用于多端消息同步的场景)
|
||||
- (void)onGroupCreated:(NSString * _Nullable)groupID NS_SWIFT_NAME(onGroupCreated(groupID:));
|
||||
|
||||
/// 某个已加入的群被解散了(该群所有的成员都能收到)
|
||||
- (void)onGroupDismissed:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser NS_SWIFT_NAME(onGroupDismissed(groupID:opUser:));
|
||||
|
||||
/// 某个已加入的群被回收了(该群所有的成员都能收到)
|
||||
- (void)onGroupRecycled:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser NS_SWIFT_NAME(onGroupRecycled(groupID:opUser:));
|
||||
|
||||
/// 某个已加入的群的信息被修改了(该群所有的成员都能收到)
|
||||
/// 以下字段的修改可能会引发该通知 groupName & introduction & notification & faceUrl & owner & allMute & custom
|
||||
/// 控制指定字段 下发通知/存漫游 请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群资料变更通知) 主动配置。
|
||||
- (void)onGroupInfoChanged:(NSString * _Nullable)groupID changeInfoList:(NSArray <V2TIMGroupChangeInfo *> *)changeInfoList NS_SWIFT_NAME(onGroupInfoChanged(groupID:changeInfoList:));
|
||||
|
||||
/// 某个已加入的群的属性被修改了,会返回所在群组的所有属性(该群所有的成员都能收到)
|
||||
- (void)onGroupAttributeChanged:(NSString *)groupID attributes:(NSMutableDictionary<NSString *,NSString *> *)attributes;
|
||||
|
||||
/// 某个已加入的群的计数器被修改了,会返回当前变更的群计数器(该群所有的成员都能收到)
|
||||
- (void)onGroupCounterChanged:(NSString * _Nullable)groupID key:(NSString *)key newValue:(NSInteger)newValue NS_SWIFT_NAME(onGroupCounterChanged(groupID:key:newValue:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 加群申请相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新的加群请求(只有群主和管理员会收到)
|
||||
- (void)onReceiveJoinApplication:(NSString * _Nullable)groupID member:(V2TIMGroupMemberInfo *)member opReason:(NSString * _Nullable)opReason NS_SWIFT_NAME(onReceiveJoinApplication(groupID:member:opReason:));
|
||||
|
||||
/// 加群或者邀请加群请求已经被群主或管理员处理了(只有申请人能够收到)
|
||||
- (void)onApplicationProcessed:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser opResult:(BOOL)isAgreeJoin opReason:(NSString * _Nullable)opReason NS_SWIFT_NAME(onApplicationProcessed(groupID:opUser:opResult:opReason:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 其他相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 指定管理员身份
|
||||
- (void)onGrantAdministrator:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList NS_SWIFT_NAME(onGrantAdministrator(groupID:opUser:memberList:));
|
||||
|
||||
/// 取消管理员身份
|
||||
- (void)onRevokeAdministrator:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList NS_SWIFT_NAME(onRevokeAdministrator(groupID:opUser:memberList:));
|
||||
|
||||
/// 自己主动退出群组(主要用于多端同步)
|
||||
- (void)onQuitFromGroup:(NSString * _Nullable)groupID NS_SWIFT_NAME(onQuitFromGroup(groupID:));
|
||||
|
||||
/// 收到 RESTAPI 下发的自定义系统消息
|
||||
- (void)onReceiveRESTCustomData:(NSString * _Nullable)groupID data:(NSData * _Nullable)data NS_SWIFT_NAME(onReceiveRESTCustomData(groupID:data:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 话题事件监听回调
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 话题创建回调
|
||||
- (void)onTopicCreated:(NSString * _Nullable)groupID topicID:(NSString * _Nullable)topicID NS_SWIFT_NAME(onTopicCreated(groupID:topicID:));
|
||||
|
||||
/// 话题被删除回调
|
||||
- (void)onTopicDeleted:(NSString * _Nullable)groupID topicIDList:(NSArray<NSString *> *)topicIDList NS_SWIFT_NAME(onTopicDeleted(groupID:topicIDList:));
|
||||
|
||||
/// 话题更新回调
|
||||
- (void)onTopicChanged:(NSString * _Nullable)groupID topicInfo:(V2TIMTopicInfo *)topicInfo NS_SWIFT_NAME(onTopicChanged(groupID:topicInfo:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 用户基本资料
|
||||
V2TIM_EXPORT @interface V2TIMUserInfo : NSObject
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,nullable) NSString* nickName;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,nullable) NSString* faceURL;
|
||||
@end
|
||||
|
||||
/// 用户详细资料
|
||||
V2TIM_EXPORT @interface V2TIMUserFullInfo : V2TIMUserInfo
|
||||
|
||||
/// 用户签名
|
||||
@property(nonatomic,strong,nullable) NSString *selfSignature;
|
||||
|
||||
/// 用户性别
|
||||
@property(nonatomic,assign) V2TIMGender gender;
|
||||
|
||||
/// 用户角色
|
||||
@property(nonatomic,assign) uint32_t role;
|
||||
|
||||
/// 用户等级
|
||||
@property(nonatomic,assign) uint32_t level;
|
||||
|
||||
/// 出生日期
|
||||
@property(nonatomic,assign) uint32_t birthday;
|
||||
|
||||
/// 用户好友验证方式
|
||||
@property(nonatomic,assign) V2TIMFriendAllowType allowType;
|
||||
|
||||
/// 用户自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 用户自定义字段) 配置用户自定义字段,然后再调用该接口进行设置,key 值不需要加 Tag_Profile_Custom_ 前缀。
|
||||
@property(nonatomic,strong,nullable) NSDictionary<NSString *,NSData *> * customInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMUserSearchParam : NSObject
|
||||
/// 搜索的关键字列表,关键字列表最多支持 5 个,keyword 会自动匹配用户 ID、昵称。
|
||||
@property(nonatomic, strong,nullable) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索。
|
||||
/// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
|
||||
@property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
|
||||
|
||||
/// 用户性别(如果不设置,默认男性和女性都会返回)
|
||||
@property(nonatomic,assign) V2TIMGender gender;
|
||||
|
||||
/// 用户最小生日(如果不设置,默认值为 0)
|
||||
@property(nonatomic,assign) uint32_t minBirthday;
|
||||
|
||||
/// 用户最大生日(如果不设置,默认 birthday >= minBirthday 的用户都会返回)
|
||||
@property(nonatomic,assign) uint32_t maxBirthday;
|
||||
|
||||
/// 每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20)
|
||||
@property(nonatomic,assign) NSUInteger searchCount;
|
||||
|
||||
/// 每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMUserSearchResult 中的返回值。
|
||||
@property(nonatomic,strong) NSString *searchCursor;
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMUserSearchResult : NSObject
|
||||
/// 是否已经返回全部满足搜索条件的用户列表
|
||||
@property(nonatomic,assign) BOOL isFinished;
|
||||
|
||||
/// 满足搜索条件的用户总数量
|
||||
@property(nonatomic,assign) NSUInteger totalCount;
|
||||
|
||||
/// 下一次云端搜索的起始位置
|
||||
@property(nonatomic,strong,nullable) NSString *nextCursor;
|
||||
|
||||
/// 当前一次云端搜索返回的用户列表
|
||||
@property(nonatomic,strong) NSArray<V2TIMUserFullInfo *> *userList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户状态
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMUserStatus : NSObject
|
||||
|
||||
/// 用户的 ID
|
||||
@property (nonatomic, copy, readonly, nullable) NSString *userID;
|
||||
|
||||
/// 用户的状态
|
||||
@property (nonatomic, assign, readonly) V2TIMUserStatusType statusType;
|
||||
|
||||
/// 用户的自定义状态, 最大 100 字节
|
||||
@property (nonatomic, copy, nullable) NSString *customStatus;
|
||||
|
||||
/// 用户在线设备列表
|
||||
@property (nonatomic, strong, readonly) NSMutableArray<NSString *> *onlineDevices;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群成员资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群成员基本资料
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberInfo : NSObject
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* nickName;
|
||||
|
||||
/// 用户好友备注
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* friendRemark;
|
||||
|
||||
/// 群成员名片
|
||||
@property(nonatomic,strong,nullable) NSString* nameCard;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* faceURL;
|
||||
|
||||
/// 群成员在线终端列表
|
||||
@property(nonatomic,strong,readonly) NSMutableArray<NSString*>* onlineDevices;
|
||||
|
||||
@end
|
||||
|
||||
/// 群成员详细资料
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberFullInfo : V2TIMGroupMemberInfo
|
||||
/// 群成员自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群成员自定义字段) 配置用户自定义字段,然后再调用该接口进行设置。
|
||||
@property(nonatomic,strong,nullable) NSDictionary<NSString *,NSData *> * customInfo;
|
||||
|
||||
/// 群成员角色(V2TIMGroupMemberRole),修改群成员角色请调用 V2TIMManager+Group.h -> setGroupMemberRole 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t role;
|
||||
|
||||
/// 群成员禁言结束时间戳,禁言用户请调用 V2TIMManager+Group.h -> muteGroupMember 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t muteUntil;
|
||||
|
||||
/// 群成员入群时间,自动生成,不可修改
|
||||
@property(nonatomic,assign,readonly) time_t joinTime;
|
||||
|
||||
/// 群成员是否在线
|
||||
/// @note
|
||||
/// - 不支持直播群 AVChatRoom;
|
||||
/// - 该字段仅在调用 - getGroupMemberList:filter:nextSeq:succ:fail: 接口时有效;
|
||||
/// - 7.3 及其以上版本支持,需要您购买旗舰版套餐。
|
||||
@property(nonatomic,assign,readonly) BOOL isOnline;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// SDK 配置参数表
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMSDKConfig : NSObject
|
||||
|
||||
/// 本地写 log 文件的等级,默认 DEBUG 等级, IMSDK 的日志默认存储于 /Library/Caches/ 目录下
|
||||
@property(nonatomic,assign) V2TIMLogLevel logLevel;
|
||||
|
||||
/// log 监听回调(回调在主线程,日志回调可能比较频繁,请注意不要在回调里面同步处理太多耗时任务,可能会堵塞主线程)
|
||||
@property(nonatomic,copy,nullable) V2TIMLogListener logListener;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
framework module ImSDK_Plus {
|
||||
umbrella header "ImSDK_Plus.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPrivacyTracking</key>
|
||||
<false/>
|
||||
<key>NSPrivacyCollectedDataTypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyTrackingDomains</key>
|
||||
<array/>
|
||||
<key>NSPrivacyAccessedAPITypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>35F9.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>E174.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>C617.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>CA92.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1 @@
|
||||
A
|
||||
@@ -0,0 +1,19 @@
|
||||
// Copyright (c) 2025 Tencent. All rights reserved.
|
||||
|
||||
|
||||
#ifndef TIM_IM_SDK_PLUS_H_
|
||||
#define TIM_IM_SDK_PLUS_H_
|
||||
|
||||
#import "TIMErrorCode.h"
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+APNS.h"
|
||||
#import "V2TIMManager+Friendship.h"
|
||||
#import "V2TIMManager+Conversation.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
#import "V2TIMManager+Community.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
#import "V2TIMManager+Signaling.h"
|
||||
#import "V2TIMManager+VOIP.h"
|
||||
#import "V2TIMManager+LiveActivity.h"
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,446 @@
|
||||
// Copyright (c) 2020 Tencent. All rights reserved.
|
||||
|
||||
#ifndef TIM_ERROR_CODE_H_
|
||||
#define TIM_ERROR_CODE_H_
|
||||
|
||||
enum ERROR_CODE {
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (一)IM SDK 的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 通用错误码
|
||||
|
||||
ERR_SUCC = 0, ///< 无错误。
|
||||
ERR_IN_PROGESS = 6015, ///< 接口正在执行中,请您在收到回调之后,再次发起对当前接口的调用,即采用串行方式调用接口。
|
||||
ERR_INVALID_PARAMETERS = 6017, ///< 参数无效,请检查参数是否符合要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_IO_OPERATION_FAILED = 6022, ///< 操作本地 IO 错误,检查是否有读写权限,磁盘是否已满。
|
||||
ERR_INVALID_JSON = 6027, ///< 错误的 JSON 格式,请检查参数是否符合接口的要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_OUT_OF_MEMORY = 6028, ///< 内存不足,可能存在内存泄漏,iOS 平台使用 Instrument 工具,Android 平台使用 Profiler 工具,分析出什么地方的内存占用高。
|
||||
ERR_PARSE_RESPONSE_FAILED = 6001, ///< PB 解析失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SERIALIZE_REQ_FAILED = 6002, ///< PB 序列化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_NOT_INITIALIZED = 6013, ///< IM SDK 未初始化,初始化成功回调之后重试。
|
||||
ERR_LOADMSG_FAILED = 6005, ///< 加载本地数据库操作失败,可能存储文件有损坏,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服定位具体问题。
|
||||
ERR_DATABASE_OPERATE_FAILED = 6019, ///< 本地数据库操作失败,可能是部分目录无权限或者数据库文件已损坏。
|
||||
ERR_HTTP_NO_CLEARTEXT_TRAFFIC_PERMISSION = 6029, ///< 无 http 协议的访问权限,iOS 9.0 和 Android P 开始默认限制 http 协议,iOS 平台可配置 NSAppTransportSecurity 选项,Android 平台可配置 cleartextTrafficPermitted 选项,取消 http 协议的限制。
|
||||
ERR_SDK_COMM_CROSS_THREAD = 7001, ///< 跨线程错误,不能在跨越不同线程中执行,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_TINYID_EMPTY = 7002, ///< TinyId 为空,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_INVALID_IDENTIFIER = 7003, ///< Identifier 非法,必须不为空,要求可打印 ASCII 字符(0x20-0x7e),长度不超过32字节。
|
||||
ERR_SDK_COMM_FILE_NOT_FOUND = 7004, ///< 文件不存在,请检查文件路径是否正确。
|
||||
ERR_SDK_COMM_FILE_TOO_LARGE = 7005, ///< 文件大小超出了限制,图片、语音最大限制是28MB,视频、文件最大限制是100MB
|
||||
ERR_SDK_COMM_FILE_SIZE_EMPTY = 7006, ///< 空文件,要求文件大小不是0字节,如果上传图片、语音、视频或文件,请检查文件是否正确生成。
|
||||
ERR_SDK_COMM_FILE_OPEN_FAILED = 7007, ///< 文件打开失败,请检查文件是否存在,或者已被独占打开,引起 SDK 打开失败。
|
||||
ERR_SDK_COMM_API_CALL_FREQUENCY_LIMIT = 7008, ///< API 调用超频
|
||||
ERR_SDK_INTERFACE_NOT_SUPPORT = 7013, ///< 套餐包不支持该接口的使用,请升级到旗舰版套餐
|
||||
ERR_SDK_INVALID_OPERATION = 7014, ///< 非法请求
|
||||
ERR_SDK_BLOCKED_BY_SENSITIVE_WORD = 7015, ///< SDK 本地内容审核,命中敏感词
|
||||
|
||||
// 账号错误码
|
||||
|
||||
ERR_SDK_NOT_LOGGED_IN = 6014, ///< IM SDK 未登录,请先登录,成功回调之后重试,或者已被踢下线,可使用 TIMManager getLoginUser 检查当前是否在线。
|
||||
ERR_NO_PREVIOUS_LOGIN = 6026, ///< 自动登录时,并没有登录过该用户,这时候请调用 login 接口重新登录。
|
||||
ERR_USER_SIG_EXPIRED = 6206, ///< UserSig 过期,请重新获取有效的 UserSig 后再重新登录。
|
||||
ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, ///< 其他终端登录同一个账号,引起已登录的账号被踢,需重新登录。
|
||||
ERR_SDK_ACCOUNT_LOGIN_IN_PROCESS = 7501, ///< 登录正在执行中,例如,第一次 login 或 autoLogin 操作在回调前,后续的 login 或 autoLogin 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_LOGOUT_IN_PROCESS = 7502, ///< 登出正在执行中,例如,第一次 logout 操作在回调前,后续的 logout 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_TLS_INIT_FAILED = 7503, ///< TLS SDK 初始化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_NOT_INITIALIZED = 7504, ///< TLS SDK 未初始化,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_TRANSPKG_ERROR = 7505, ///< TLS SDK TRANS 包格式错误,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_DECRYPT_FAILED = 7506, ///< TLS SDK 解密失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_FAILED = 7507, ///< TLS SDK 请求失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_TIMEOUT = 7508, ///< TLS SDK 请求超时,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_INVALID_CONVERSATION = 6004, ///< 会话无效,getConversation 时检查是否已经登录,如未登录获取会话,会有此错误码返回。
|
||||
ERR_FILE_TRANS_AUTH_FAILED = 6006, ///< 文件传输鉴权失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_NO_SERVER = 6007, ///< 文件传输获取 Server 列表失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_UPLOAD_FAILED = 6008, ///< 文件传输上传失败,请检查网络是否连接
|
||||
ERR_IMAGE_UPLOAD_FAILED_NOTIMAGE = 6031, ///< 文件传输上传失败,请检查上传的图片是否能够正常打开。
|
||||
ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, ///< 文件传输下载失败,请检查网络,或者文件、语音是否已经过期,目前资源文件存储7天。
|
||||
ERR_HTTP_REQ_FAILED = 6010, ///< HTTP 请求失败,请检查 URL 地址是否合法,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_INVALID_MSG_ELEM = 6016, ///< IM SDK 无效消息 elem,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_INVALID_SDK_OBJECT = 6021, ///< 无效的对象,例如用户自己生成 TIMImage 对象,或内部赋值错误导致对象无效。
|
||||
ERR_INVALID_MSG_RECEIVER = 6032, ///< 无效的消息接收方,请在 IM 控制台检查消息的接收方是否存在。
|
||||
ERR_SDK_MSG_BODY_SIZE_LIMIT = 8001, ///< 消息长度超出限制,消息长度不要超过12k,消息长度是各个 elem 长度的总和,elem 长度是所有 elem 字段的长度总和。
|
||||
ERR_SDK_MSG_KEY_REQ_DIFFER_RSP = 8002, ///< 消息 KEY 错误,内部错误,网络请求包的 KEY 和 回复包的不一致。
|
||||
ERR_SDK_IMAGE_CONVERT_ERROR = 8003, ///< 万象优图 HTTP 请求失败。
|
||||
ERR_MERGER_MSG_LAYERS_OVER_LIMIT = 8005, ///< 合并消息嵌套层数超过上限(上限 100 层)。
|
||||
ERR_SDK_MSG_MODIFY_CONFLICT = 8006, ///< 消息修改冲突,您请求修改的消息已经被其他人修改。
|
||||
|
||||
ERR_SDK_SIGNALING_INVALID_INVITE_ID = 8010, ///< 信令请求 ID 无效或已经被处理过。
|
||||
ERR_SDK_SIGNALING_NO_PERMISSION = 8011, ///< 信令请求无权限,比如取消非自己发起的邀请。
|
||||
ERR_SDK_SIGNALING_ALREADY_EXISTS = 8012, ///< 信令邀请已存在。
|
||||
|
||||
// 群组错误码
|
||||
|
||||
ERR_SDK_GROUP_INVALID_ID = 8501, ///< 群组 ID 非法,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长48个字节,且前缀不能为 @TGS#(避免与服务端默认分配的群组 ID 混淆)。
|
||||
ERR_SDK_GROUP_INVALID_NAME = 8502, ///< 群名称非法,群名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_INTRODUCTION = 8503, ///< 群简介非法,群简介最长240字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_NOTIFICATION = 8504, ///< 群公告非法,群公告最长300字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_FACE_URL = 8505, ///< 群头像 URL 非法,群头像 URL 最长100字节,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_SDK_GROUP_INVALID_NAME_CARD = 8506, ///< 群名片非法,群名片最长50字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_MEMBER_COUNT_LIMIT = 8507, ///< 超过群组成员数的限制,在创建群和邀请成员时,指定的成员数超出限制,最大群成员数量:私有群是200人,公开群是2000人,聊天室是10000人,音视频聊天室和在线成员广播大群无限制。
|
||||
ERR_SDK_GROUP_JOIN_PRIVATE_GROUP_DENY = 8508, ///< 不允许申请加入 Private 群组,任意群成员可邀请入群,且无需被邀请人同意。
|
||||
ERR_SDK_GROUP_INVITE_SUPER_DENY = 8509, ///< 不允许邀请角色为群主的成员,请检查角色字段是否填写正确。
|
||||
ERR_SDK_GROUP_INVITE_NO_MEMBER = 8510, ///< 不允许邀请0个成员,请检查成员字段是否填写正确。
|
||||
ERR_SDK_GROUP_ATTR_FREQUENCY_LIMIT = 8511, ///< 群属性接口操作限制:增删改接口后台限制1秒5次,查接口 SDK 限制5秒20次。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SDK_FRIENDSHIP_INVALID_PROFILE_KEY = 9001, ///< 资料字段非法,资料支持标配字段及自定义字段,其中自定义字段的关键字,必须是英文字母,且长度不得超过8字节,自定义字段的值最长不能超过500字节。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_REMARK = 9002, ///< 备注字段非法,最大96字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_WORDING = 9003, ///< 请求添加好友的请求说明字段非法,最大120字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_SOURCE = 9004, ///< 请求添加好友的添加来源字段非法,来源需要添加“AddSource_Type_”前缀。
|
||||
ERR_SDK_FRIENDSHIP_FRIEND_GROUP_EMPTY = 9005, ///< 好友分组字段非法,必须不为空,每个分组的名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
|
||||
// 网络错误码
|
||||
|
||||
ERR_SDK_NET_ENCODE_FAILED = 9501, ///< 网络加密失败,内部错误。
|
||||
ERR_SDK_NET_DECODE_FAILED = 9502, ///< 网络数据解密失败,内部错误。
|
||||
ERR_SDK_NET_AUTH_INVALID = 9503, ///< 未完成鉴权,可能登录未完成,请在登录完成后再操作。
|
||||
ERR_SDK_NET_COMPRESS_FAILED = 9504, ///< 数据包压缩失败,内部错误。
|
||||
ERR_SDK_NET_UNCOMPRESS_FAILED = 9505, ///< 数据包解压失败,内部错误。
|
||||
ERR_SDK_NET_FREQ_LIMIT = 9506, ///< 调用频率限制,最大每秒发起 5 次请求。
|
||||
ERR_SDK_NET_REQ_COUNT_LIMIT = 9507, ///< 请求队列満,超过同时请求的数量限制,最大同时发起1000个请求。
|
||||
ERR_SDK_NET_DISCONNECT = 9508, ///< 网络已断开,未建立连接,或者建立 socket 连接时,检测到无网络。
|
||||
ERR_SDK_NET_ALLREADY_CONN = 9509, ///< 网络连接已建立,重复创建连接,内部错误。
|
||||
ERR_SDK_NET_CONN_TIMEOUT = 9510, ///< 建立网络连接超时,请等网络恢复后重试。
|
||||
ERR_SDK_NET_CONN_REFUSE = 9511, ///< 网络连接已被拒绝,请求过于频繁,服务端拒绝服务。
|
||||
ERR_SDK_NET_NET_UNREACH = 9512, ///< 没有到达网络的可用路由,请等网络恢复后重试。
|
||||
ERR_SDK_NET_SOCKET_NO_BUFF = 9513, ///< 系统中没有足够的缓冲区空间资源可用来完成调用,系统过于繁忙,内部错误。
|
||||
ERR_SDK_NET_RESET_BY_PEER = 9514, ///< 对端重置了连接,可能服务端过载,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_SOCKET_INVALID = 9515, ///< socket 套接字无效,内部错误。
|
||||
ERR_SDK_NET_HOST_GETADDRINFO_FAILED = 9516, ///< IP 地址解析失败,内部错误,可能是本地 imsdk_config 配置文件被损坏,读取到到 IP 地址非法。
|
||||
ERR_SDK_NET_CONNECT_RESET = 9517, ///< 网络连接到中间节点或服务端重置,引起连接失效,内部错误,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_WAIT_INQUEUE_TIMEOUT = 9518, ///< 请求包等待进入待发送队列超时,发送时网络连接建立比较慢 或 频繁断网重连时,会出现该错误,请检查网络连接是否正常。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT = 9519, ///< 请求包已进入 IM SDK 待发送队列,等待进入操作系统的网络层时超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT = 9520, ///< 请求包已由 IM SDK 待发送队列进入操作系统网络层,等待服务端回包超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_SEND_REMAINING_TIMEOUT = 9521, ///< 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误时检测有联网,内部错误。
|
||||
ERR_SDK_NET_PKG_SIZE_LIMIT = 9522, ///< 请求包长度大于限制,最大支持 1MB 。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT_NO_NETWORK = 9523, ///< 请求包已进入待发送队列,等待进入系统的网络 buffer 超时,数据包较多 或 发送线程处理不过来,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT_NO_NETWORK = 9524, ///< 请求包已进入系统的网络 buffer ,等待服务端回包超时,可能请求包没离开终端设备、中间路由丢弃、服务端意外丢包或回包被系统网络层丢弃,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_SEND_REMAINING_TIMEOUT_NO_NETWORK = 9525, ///< 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误码时检测到没有联网。
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (二)服务端的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 网络接入层的错误码
|
||||
|
||||
ERR_SVR_SSO_CONNECT_LIMIT = -302, // Server 的连接数量超出限制,服务端拒绝服务。
|
||||
ERR_SVR_SSO_VCODE = -10000, // 下发验证码标志错误。
|
||||
ERR_SVR_SSO_D2_EXPIRED = -10001, // Key 过期。Key 是根据 UserSig 生成的内部票据,Key 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_A2_UP_INVALID = -10003, // Ticket 过期。Ticket 是根据 UserSig 生成的内部票据,Ticket 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Ticket。
|
||||
ERR_SVR_SSO_A2_DOWN_INVALID = -10004, // 票据验证没通过或者被安全打击。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的票据。
|
||||
ERR_SVR_SSO_EMPTY_KEY = -10005, // 不允许空 Key。
|
||||
ERR_SVR_SSO_UIN_INVALID = -10006, // Key 中的账号和请求包头的账号不匹配。
|
||||
ERR_SVR_SSO_VCODE_TIMEOUT = -10007, // 验证码下发超时。
|
||||
ERR_SVR_SSO_NO_IMEI_AND_A2 = -10008, // 需要带上 Key 和 Ticket。
|
||||
ERR_SVR_SSO_COOKIE_INVALID = -10009, // Cookie 检查不匹配。
|
||||
ERR_SVR_SSO_DOWN_TIP = -10101, // 下发提示语时 Key 过期。Key 是根据 UserSig 生成的内部票据,Key 的有效期小于或等于 UserSig 的有效期。请重新调用 V2TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_DISCONNECT = -10102, // 网络连接断开。
|
||||
ERR_SVR_SSO_IDENTIFIER_INVALID = -10103, // 失效身份。
|
||||
ERR_SVR_SSO_CLIENT_CLOSE = -10104, // 终端自动退出。
|
||||
ERR_SVR_SSO_MSFSDK_QUIT = -10105, // MSFSDK 自动退出。
|
||||
ERR_SVR_SSO_D2KEY_WRONG = -10106, // 解密失败次数超过阈值,通知终端需要重置,请重新调用 TIMManager.getInstance().login 登录接口生成新的 Key。
|
||||
ERR_SVR_SSO_UNSURPPORT = -10107, // 不支持聚合,给终端返回统一的错误码。终端在该 TCP 长连接上停止聚合。
|
||||
ERR_SVR_SSO_PREPAID_ARREARS = -10108, // 预付费欠费。
|
||||
ERR_SVR_SSO_PACKET_WRONG = -10109, // 请求包格式错误。
|
||||
ERR_SVR_SSO_APPID_BLACK_LIST = -10110, // SDKAppID 黑名单。
|
||||
ERR_SVR_SSO_CMD_BLACK_LIST = -10111, // SDKAppID 设置 service cmd 黑名单。
|
||||
ERR_SVR_SSO_APPID_WITHOUT_USING = -10112, // SDKAppID 停用。
|
||||
ERR_SVR_SSO_FREQ_LIMIT = -10113, // 频率限制(用户),频率限制是设置针对某一个协议的每秒请求数的限制。
|
||||
ERR_SVR_SSO_OVERLOAD = -10114, // 过载丢包(系统),连接的服务端处理过多请求,处理不过来,拒绝服务。
|
||||
ERR_SVR_SSO_FREQUENCY_LIMIT = -20009, // 终端访问接口超频。
|
||||
|
||||
// 资源文件错误码
|
||||
|
||||
ERR_SVR_RES_NOT_FOUND = 114000, ///< 要发送的资源文件不存在。
|
||||
ERR_SVR_RES_ACCESS_DENY = 114001, ///< 要发送的资源文件不允许访问。
|
||||
ERR_SVR_RES_SIZE_LIMIT = 114002, ///< 文件大小超过限制。
|
||||
ERR_SVR_RES_SEND_CANCEL = 114003, ///< 用户取消发送,如发送过程中登出等原因。
|
||||
ERR_SVR_RES_READ_FAILED = 114004, ///< 读取文件内容失败。
|
||||
ERR_SVR_RES_TRANSFER_TIMEOUT = 114005, ///< 资源文件(如图片、文件、语音、视频)传输超时,一般是网络问题导致。
|
||||
ERR_SVR_RES_INVALID_PARAMETERS = 114011, ///< 参数非法。
|
||||
ERR_SVR_RES_INVALID_FILE_MD5 = 115066, ///< 文件 MD5 校验失败。
|
||||
ERR_SVR_RES_INVALID_PART_MD5 = 115068, ///< 分片 MD5 校验失败。
|
||||
|
||||
// 后台公共错误码
|
||||
|
||||
ERR_SVR_COMM_INVALID_HTTP_URL = 60002, ///< HTTP 解析错误 ,请检查 HTTP 请求 URL 格式。
|
||||
ERR_SVR_COMM_REQ_JSON_PARSE_FAILED = 60003, ///< HTTP 请求 JSON 解析错误,请检查 JSON 格式。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT = 60004, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT_EX = 60005, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_SDKAPPID = 60006, ///< SDKAppID 失效,请核对 SDKAppID 有效性。
|
||||
ERR_SVR_COMM_REST_FREQ_LIMIT = 60007, ///< REST 接口调用频率超过限制,请降低请求频率。
|
||||
ERR_SVR_COMM_REQUEST_TIMEOUT = 60008, ///< 服务请求超时或 HTTP 请求格式错误,请检查并重试。
|
||||
ERR_SVR_COMM_INVALID_RES = 60009, ///< 请求资源错误,请检查请求 URL。
|
||||
ERR_SVR_COMM_ID_NOT_ADMIN = 60010, ///< REST API 请求的 Identifier 字段请填写 App 管理员账号。
|
||||
ERR_SVR_COMM_SDKAPPID_FREQ_LIMIT = 60011, ///< SDKAppID 请求频率超限,请降低请求频率。
|
||||
ERR_SVR_COMM_SDKAPPID_MISS = 60012, ///< REST 接口需要带 SDKAppID,请检查请求 URL 中的 SDKAppID。
|
||||
ERR_SVR_COMM_RSP_JSON_PARSE_FAILED = 60013, ///< HTTP 响应包 JSON 解析错误。
|
||||
ERR_SVR_COMM_EXCHANGE_ACCOUNT_TIMEUT = 60014, ///< 置换账号超时。
|
||||
ERR_SVR_COMM_INVALID_ID_FORMAT = 60015, ///< 请求包体 Identifier 类型错误,请确认 Identifier 为字符串格式。
|
||||
ERR_SVR_COMM_SDKAPPID_FORBIDDEN = 60016, ///< SDKAppID 被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FORBIDDEN = 60017, ///< 请求被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT = 60018, ///< 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT_EX = 60019, ///< 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_INVALID_SERVICE = 60020, ///< 未购买套餐包或购买的套餐包正在配置中暂未生效,请五分钟后再次尝试。
|
||||
ERR_SVR_COMM_SENSITIVE_TEXT = 80001, ///< 文本安全打击,文本中可能包含敏感词汇。
|
||||
ERR_SVR_COMM_BODY_SIZE_LIMIT = 80002, ///< 发消息包体过长,目前支持最大12k消息包体长度,请减少包体大小重试。
|
||||
ERR_SVR_COMM_SENSITIVE_IMAGE = 80004, ///< 图片安全打击,图片中可能包含敏感内容。
|
||||
|
||||
// 账号错误码
|
||||
|
||||
ERR_SVR_ACCOUNT_USERSIG_EXPIRED = 70001, ///< UserSig 已过期,请重新生成 UserSig,建议 UserSig 有效期不小于24小时。
|
||||
ERR_SVR_ACCOUNT_USERSIG_EMPTY = 70002, ///< UserSig 长度为0,请检查传入的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED = 70003, ///< UserSig 校验失败,请确认下 UserSig 内容是否被截断,如缓冲区长度不够导致的内容截断。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED_EX = 70005, ///< UserSig 校验失败,可用工具自行验证生成的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_PUBLICKEY = 70009, ///< 用公钥验证 UserSig 失败,请确认生成的 UserSig 使用的私钥和 SDKAppID 是否对应。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_ID = 70013, ///< 请求的 Identifier 与生成 UserSig 的 Identifier 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_SDKAPPID = 70014, ///< 请求的 SDKAppID 与生成 UserSig 的 SDKAppID 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_PUBLICKEY_NOT_FOUND = 70016, ///< 验证 UserSig 时公钥不存在。请先登录控制台下载私钥,下载私钥的具体方法可参考 [下载签名用的私钥](https://cloud.tencent.com/document/product/269/32688#.E4.B8.8B.E8.BD.BD.E7.AD.BE.E5.90.8D.E7.94.A8.E7.9A.84.E7.A7.81.E9.92.A5) 。
|
||||
ERR_SVR_ACCOUNT_SDKAPPID_NOT_FOUND = 70020, ///< SDKAppID 未找到,请在云通信 IM 控制台确认应用信息。
|
||||
ERR_SVR_ACCOUNT_INVALID_USERSIG = 70052, ///< UserSig 已经失效,请重新生成,再次尝试。
|
||||
ERR_SVR_ACCOUNT_NOT_FOUND = 70107, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_ACCOUNT_SEC_RSTR = 70114, ///< 安全原因被限制。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_TIMEOUT = 70169, ///< 服务端内部超时,请重试。
|
||||
ERR_SVR_ACCOUNT_INVALID_COUNT = 70206, ///< 请求中批量数量不合法。
|
||||
ERR_SVR_ACCOUNT_INVALID_PARAMETERS = 70402, ///< 参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。
|
||||
ERR_SVR_ACCOUNT_ADMIN_REQUIRED = 70403, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_ACCOUNT_LOW_SDK_VERSION = 70404, ///< 您的SDK版本过低,请升级到最新版本.
|
||||
ERR_SVR_ACCOUNT_FREQ_LIMIT = 70050, ///< 因失败且重试次数过多导致被限制,请检查 UserSig 是否正确,一分钟之后再试。
|
||||
ERR_SVR_ACCOUNT_BLACKLIST = 70051, ///< 账号被拉入黑名单。
|
||||
ERR_SVR_ACCOUNT_COUNT_LIMIT = 70398, ///< 创建账号数量超过免费体验版数量限制,请升级为专业版。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_ERROR = 70500, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_ACCOUNT_USER_STATUS_DISABLED = 72001, ///< 用户状态能力需要登录 IM 控制台开启
|
||||
|
||||
// 资料错误码
|
||||
|
||||
ERR_SVR_PROFILE_INVALID_PARAMETERS = 40001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_PROFILE_ACCOUNT_MISS = 40002, ///< 请求参数错误,没有指定需要拉取资料的用户账号。
|
||||
ERR_SVR_PROFILE_ACCOUNT_NOT_FOUND = 40003, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_PROFILE_ADMIN_REQUIRED = 40004, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_PROFILE_SENSITIVE_TEXT = 40005, ///< 资料字段中包含敏感词。
|
||||
ERR_SVR_PROFILE_INTERNAL_ERROR = 40006, ///< 服务端内部错误,请稍后重试。
|
||||
ERR_SVR_PROFILE_READ_PERMISSION_REQUIRED = 40007, ///< 没有资料字段的读权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_WRITE_PERMISSION_REQUIRED = 40008, ///< 没有资料字段的写权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_TAG_NOT_FOUND = 40009, ///< 资料字段的 Tag 不存在。
|
||||
ERR_SVR_PROFILE_SIZE_LIMIT = 40601, ///< 资料字段的 Value 长度超过500字节。
|
||||
ERR_SVR_PROFILE_VALUE_ERROR = 40605, ///< 标配资料字段的 Value 错误,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_INVALID_VALUE_FORMAT = 40610, ///< 资料字段的 Value 类型不匹配,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_SUBSCRIPTION_DISABLED = 72012, ///< 用户资料变更订阅能力未开启,请参见 [订阅非好友用户资料](https://cloud.tencent.com/document/product/269/75416#53edea52-35ef-4d82-aae9-941ba690f051),登录 [IM 控制台](https://console.tencentcloud.com/im) 开启该功能。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SVR_FRIENDSHIP_INVALID_PARAMETERS = 30001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID = 30002, ///< SDKAppID 不匹配。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND = 30003, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_FRIENDSHIP_ADMIN_REQUIRED = 30004, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_FRIENDSHIP_SENSITIVE_TEXT = 30005, ///< 关系链字段中包含敏感词。
|
||||
ERR_SVR_FRIENDSHIP_INTERNAL_ERROR = 30006, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_FRIENDSHIP_NET_TIMEOUT = 30007, ///< 网络超时,请稍后重试。
|
||||
ERR_SVR_FRIENDSHIP_WRITE_CONFLICT = 30008, ///< 并发写导致写冲突,建议使用批量方式。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_DENY = 30009, ///< 后台禁止该用户发起加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_COUNT_LIMIT = 30010, ///< 自己的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_GROUP_COUNT_LIMIT = 30011, ///< 分组已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_LIMIT = 30012, ///< 未决数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_BLACKLIST_LIMIT = 30013, ///< 黑名单数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_FRIEND_LIMIT = 30014, ///< 对方的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_ALREADY_FRIENDS = 30015, ///< 已经存在好友关系。
|
||||
ERR_SVR_FRIENDSHIP_IN_SELF_BLACKLIST = 30515, ///< 请求添加好友时,对方在自己的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_DENY_ANY = 30516, ///< 请求添加好友时,对方的加好友验证方式是不允许任何人添加自己为好友。
|
||||
ERR_SVR_FRIENDSHIP_IN_PEER_BLACKLIST = 30525, ///< 请求添加好友时,自己在对方的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_NEED_CONFIRM = 30539, ///< A 请求加 B 为好友,B 的加好友验证方式被设置为“AllowType_Type_NeedConfirm”,这时 A 与 B 之间只能形成未决关系,该返回码用于标识加未决成功,以便与加好友成功的返回码区分开,调用方可以捕捉该错误给用户一个合理的提示。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_SEC_RSTR = 30540, ///< 添加好友请求被安全策略打击,请勿频繁发起添加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_NOT_FOUND = 30614, ///< 请求的未决不存在。
|
||||
ERR_SVR_FRIENDSHIP_DEL_NONFRIEND = 31704, ///< 与请求删除的账号之间不存在好友关系。
|
||||
ERR_SVR_FRIENDSHIP_DEL_FRIEND_SEC_RSTR = 31707, ///< 删除好友请求被安全策略打击,请勿频繁发起删除好友请求。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND_EX = 31804, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_FRIENDSHIP_SELF_FOLLOWING_COUNT_EXCEEDS_LIMIT = 32100, ///< 自己的关注数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32101, ///< 对方的粉丝数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_SELF_MUTUAL_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32102, ///< 自己的互关数量到达上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_MUTUAL_FOLLOWERS_COUNT_EXCEEDS_LIMIT = 32103, ///< 对方的互关数量到达上限。
|
||||
|
||||
// 最近联系人错误码
|
||||
|
||||
ERR_SVR_CONV_ACCOUNT_NOT_FOUND = 50001, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_CONV_INVALID_PARAMETERS = 50002, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_CONV_ADMIN_REQUIRED = 50003, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_CONV_INTERNAL_ERROR = 50004, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_CONV_NET_TIMEOUT = 50005, ///< 网络超时,请稍后重试。
|
||||
|
||||
ERR_SVR_CONV_CONV_MARK_REQ_COUNT_EXCEED_LIMIT = 51006, ///< 一次标记、分组、设置自定义数据的会话数超过了上限(最大支持 100 个)
|
||||
ERR_SVR_CONV_CONV_MARK_OPERATE_FAILED = 51007, ///< Group 会话操作异常,Server 内部错误或 Group 已经解散
|
||||
ERR_SVR_CONV_CONV_MARK_TOTAL_COUNT_EXCEED_LIMIT = 51008, ///< 标记、分组、设置自定义数据的总会话数超过了上限(最大支持 1000 个)
|
||||
ERR_SVR_CONV_CONV_GROUP_NOT_EXIST = 51009, ///< 会话分组不存在
|
||||
ERR_SVR_CONV_CONV_GROUP_TOTAL_COUNT_EXCEED_LIMIT = 51010, ///< 会话分组数超过了上限(最大支持 20 个)
|
||||
ERR_SVR_CONV_CONV_GROUP_NAME_EXCEED_LENGTH = 51011, ///< 会话分组名字节数超过了上限(最大支持 32 字节)
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_SVR_MSG_PKG_PARSE_FAILED = 20001, ///< 请求包非法,请检查发送方和接收方账号是否存在。
|
||||
ERR_SVR_MSG_INTERNAL_AUTH_FAILED = 20002, ///< 内部鉴权失败。
|
||||
ERR_SVR_MSG_INVALID_ID = 20003, ///< Identifier 无效或者 Identifier 未导入云通信 IM。
|
||||
ERR_SVR_MSG_NET_ERROR = 20004, ///< 网络异常,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR1 = 20005, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_MSG_PUSH_DENY = 20006, ///< 触发发送单聊消息之前回调,App 后台返回禁止下发该消息。
|
||||
ERR_SVR_MSG_IN_PEER_BLACKLIST = 20007, ///< 发送单聊消息,被对方拉黑,禁止发送。
|
||||
ERR_SVR_MSG_BOTH_NOT_FRIEND = 20009, ///< 消息发送双方互相不是好友,禁止发送(配置单聊消息校验好友关系才会出现)。
|
||||
ERR_SVR_MSG_NOT_PEER_FRIEND = 20010, ///< 发送单聊消息,自己不是对方的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_NOT_SELF_FRIEND = 20011, ///< 发送单聊消息,对方不是自己的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_SHUTUP_DENY = 20012, ///< 因禁言,禁止发送消息。
|
||||
ERR_SVR_MSG_REVOKE_TIME_LIMIT = 20016, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_MSG_DEL_RAMBLE_INTERNAL_ERROR = 20018, ///< 删除漫游内部错误。
|
||||
ERR_SVR_MSG_EXTENSION_CONFLICT = 23001, ///< 消息扩展操作冲突。
|
||||
ERR_SVR_MSG_EXTENSION_NOT_EXIST = 23004, ///< 删除的消息扩展不存在。
|
||||
ERR_SVR_MSG_REACTION_COUNT_LIMIT = 23005, ///< 单条消息 Reaction 数量超过最大限制。
|
||||
ERR_SVR_MSG_REACTION_USER_COUNT_LIMIT = 23006, ///< 单个 Reaction 用户数量超过最大限制。
|
||||
ERR_SVR_MSG_REACTION_ALREADY_CONTAIN_USER = 23007, ///< Reaction 已经包含当前操作用户。
|
||||
ERR_SVR_MSG_REACTION_NOT_EXISTS = 23008, ///< Reaction 不存在。
|
||||
ERR_SVR_MSG_REACTION_NOT_CONTAIN_USER = 23009, ///< Reaction 不包含当前操作用户。
|
||||
ERR_SVR_MSG_JSON_PARSE_FAILED = 90001, ///< JSON 格式解析失败,请检查请求包是否符合 JSON 规范。
|
||||
ERR_SVR_MSG_INVALID_JSON_BODY_FORMAT = 90002, ///< JSON 格式请求包中 MsgBody 不符合消息格式描述,或者 MsgBody 不是 Array 类型,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_INVALID_TO_ACCOUNT = 90003, ///< JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_RAND = 90005, ///< JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_TIMESTAMP = 90006, ///< JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_BODY_NOT_ARRAY = 90007, ///< JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型
|
||||
ERR_SVR_MSG_ADMIN_REQUIRED = 90009, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_MSG_INVALID_JSON_FORMAT = 90010, ///< JSON 格式请求包不符合消息格式描述,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_COUNT_LIMIT = 90011, ///< 批量发消息目标账号超过500,请减少 To_Account 中目标账号数量。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_NOT_FOUND = 90012, ///< To_Account 没有注册或不存在,请确认 To_Account 是否导入云通信 IM 或者是否拼写错误。
|
||||
ERR_SVR_MSG_TIME_LIMIT = 90026, ///< 消息离线存储时间错误(最多不能超过7天)。
|
||||
ERR_SVR_MSG_INVALID_SYNCOTHERMACHINE = 90031, ///< JSON 格式请求包体中 SyncOtherMachine 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_MSGLIFETIME = 90044, ///< JSON 格式请求包体中 MsgLifeTime 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_ACCOUNT_NOT_FOUND = 90048, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR2 = 90994, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR3 = 90995, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR4 = 91000, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR5 = 90992, ///< 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务端是否正常向云通信 IM 后台服务端返回回调结果。
|
||||
ERR_SVR_MSG_BODY_SIZE_LIMIT = 93000, ///< JSON 数据包超长,消息包体请不要超过12k。
|
||||
ERR_SVR_MSG_LONGPOLLING_COUNT_LIMIT = 91101, ///< Web 端长轮询被踢(Web 端同时在线实例个数超出限制)。
|
||||
// 120001 - 130000, ///< 单聊第三方回调返回的自定义错误码。
|
||||
|
||||
// 群组错误码
|
||||
|
||||
ERR_SVR_GROUP_INTERNAL_ERROR = 10002, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_GROUP_API_NAME_ERROR = 10003, ///< 请求中的接口名称错误,请核对接口名称并重试。
|
||||
ERR_SVR_GROUP_INVALID_PARAMETERS = 10004, ///< 参数非法,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_GROUP_ACOUNT_COUNT_LIMIT = 10005, ///< 请求包体中携带的账号数量过多。
|
||||
ERR_SVR_GROUP_FREQ_LIMIT = 10006, ///< 操作频率限制,请尝试降低调用的频率。
|
||||
ERR_SVR_GROUP_PERMISSION_DENY = 10007, ///< 操作权限不足,比如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限。
|
||||
ERR_SVR_GROUP_INVALID_REQ = 10008, ///< 请求非法,可能是请求中携带的签名信息验证不正确,请再次尝试或 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系技术客服。
|
||||
ERR_SVR_GROUP_SUPER_NOT_ALLOW_QUIT = 10009, ///< 该群不允许群主主动退出。
|
||||
ERR_SVR_GROUP_NOT_FOUND = 10010, ///< 群组不存在,或者曾经存在过,但是目前已经被解散。
|
||||
ERR_SVR_GROUP_JSON_PARSE_FAILED = 10011, ///< 解析 JSON 包体失败,请检查包体的格式是否符合 JSON 格式。
|
||||
ERR_SVR_GROUP_INVALID_ID = 10012, ///< 发起操作的 Identifier 非法,请检查发起操作的用户 Identifier 是否填写正确。
|
||||
ERR_SVR_GROUP_ALLREADY_MEMBER = 10013, ///< 被邀请加入的用户已经是群成员。
|
||||
ERR_SVR_GROUP_FULL_MEMBER_COUNT = 10014, ///< 群已满员,无法将请求中的用户加入群组,如果是批量加人,可以尝试减少加入用户的数量。
|
||||
ERR_SVR_GROUP_INVALID_GROUPID = 10015, ///< 群组 ID 非法,请检查群组 ID 是否填写正确。
|
||||
ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY = 10016, ///< App 后台通过第三方回调拒绝本次操作。
|
||||
ERR_SVR_GROUP_SHUTUP_DENY = 10017, ///< 因被禁言而不能发送消息,请检查发送者是否被设置禁言。
|
||||
ERR_SVR_GROUP_RSP_SIZE_LIMIT = 10018, ///< 应答包长度超过最大包长(1MB),请求的内容过多,请尝试减少单次请求的数据量。
|
||||
ERR_SVR_GROUP_ACCOUNT_NOT_FOUND = 10019, ///< 请求的用户账号不存在。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED = 10021, ///< 群组 ID 已被使用,请选择其他的群组 ID。
|
||||
ERR_SVR_GROUP_SEND_MSG_FREQ_LIMIT = 10023, ///< 发消息的频率超限,请延长两次发消息时间的间隔。
|
||||
ERR_SVR_GROUP_REQ_ALLREADY_BEEN_PROCESSED = 10024, ///< 此邀请或者申请请求已经被处理。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED_FOR_SUPER = 10025, ///< 群组 ID 已被使用,并且操作者为群主,可以直接使用。
|
||||
ERR_SVR_GROUP_SDKAPPID_DENY = 10026, ///< 该 SDKAppID 请求的命令字已被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_NOT_FOUND = 10030, ///< 请求撤回的消息不存在。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_TIME_LIMIT = 10031, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_DENY = 10032, ///< 请求撤回的消息不支持撤回操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REVOKE_MSG = 10033, ///< 群组类型不支持消息撤回操作。
|
||||
ERR_SVR_GROUP_REMOVE_MSG_DENY = 10034, ///< 该消息类型不支持删除操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REMOVE_MSG = 10035, ///< 音视频聊天室和在线成员广播大群不支持删除消息。
|
||||
ERR_SVR_GROUP_AVCHATROOM_COUNT_LIMIT = 10036, ///< 音视频聊天室创建数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买预付费套餐“IM音视频聊天室”。
|
||||
ERR_SVR_GROUP_COUNT_LIMIT = 10037, ///< 单个用户可创建和加入的群组数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“单人可创建与加入群组数”。
|
||||
ERR_SVR_GROUP_MEMBER_COUNT_LIMIT = 10038, ///< 群成员数量超过限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“扩展群人数上限”。
|
||||
ERR_SVR_GROUP_ATTRIBUTE_WRITE_CONFILCT = 10056, ///< 群属性写冲突,请先拉取最新的群属性后再尝试写操作,IMSDK 5.6 及其以上版本支持。
|
||||
ERR_SVR_GROUP_PINNED_MESSAGE_COUNT_LIMIT = 10070, ///< 置顶消息超出数量限制。
|
||||
ERR_SVR_GROUP_MESSAGE_ALREADY_PINNED = 10071, ///< 消息已经被置顶。
|
||||
ERR_SVR_COMMUNITY_GROUP_NOT_OPEN = 11000, ///< 社群功能未开通。
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (三)IM SDK V3 版本的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ERR_NO_SUCC_RESULT = 6003, ///< 批量操作无成功结果。
|
||||
ERR_TO_USER_INVALID = 6011, ///< 无效接收方。
|
||||
ERR_REQUEST_TIME_OUT = 6012, ///< 请求超时。
|
||||
ERR_INIT_CORE_FAIL = 6018, ///< INIT CORE 模块失败。
|
||||
ERR_EXPIRED_SESSION_NODE = 6020, ///< SessionNode 为 null 。
|
||||
ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, ///< 在登录完成前进行了登出(在登录时返回)。
|
||||
ERR_TLSSDK_NOT_INITIALIZED = 6024, ///< TLS SDK 未初始化。
|
||||
ERR_TLSSDK_USER_NOT_FOUND = 6025, ///< TLS SDK 没有找到相应的用户信息。
|
||||
ERR_BIND_FAIL_UNKNOWN = 6100, ///< QALSDK 未知原因BIND失败。
|
||||
ERR_BIND_FAIL_NO_SSOTICKET = 6101, ///< 缺少 SSO 票据。
|
||||
ERR_BIND_FAIL_REPEATD_BIND = 6102, ///< 重复 BIND。
|
||||
ERR_BIND_FAIL_TINYID_NULL = 6103, ///< TinyId 为空。
|
||||
ERR_BIND_FAIL_GUID_NULL = 6104, ///< GUID 为空。
|
||||
ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, ///< 解注册包失败。
|
||||
ERR_BIND_FAIL_REG_TIMEOUT = 6106, ///< 注册超时。
|
||||
ERR_BIND_FAIL_ISBINDING = 6107, ///< 正在 BIND 操作中。
|
||||
ERR_PACKET_FAIL_UNKNOWN = 6120, ///< 发包未知错误。
|
||||
ERR_PACKET_FAIL_REQ_NO_NET = 6121, ///< 发送请求包时没有网络。
|
||||
ERR_PACKET_FAIL_RESP_NO_NET = 6122, ///< 发送回复包时没有网络。
|
||||
ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, ///< 发送请求包时没有权限。
|
||||
ERR_PACKET_FAIL_SSO_ERR = 6124, ///< SSO 错误。
|
||||
ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, ///< 请求超时。
|
||||
ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, ///< 回复超时。
|
||||
ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, ///< 重发失败。
|
||||
ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, ///< 重发时没有真正发送。
|
||||
ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, ///< 保存被过滤。
|
||||
ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, ///< 发送过载。
|
||||
ERR_PACKET_FAIL_LOGIC_ERR = 6131, ///< 数据逻辑错误。
|
||||
ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, ///< proxy_manager 没有完成服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCING = 6151, ///< proxy_manager 正在进行服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, ///< proxy_manager 同步失败。
|
||||
ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, ///< proxy_manager 请求参数,在本地检查不合法。
|
||||
ERR_GROUP_INVALID_FIELD = 6160, ///< Group assistant 请求字段中包含非预设字段。
|
||||
ERR_GROUP_STORAGE_DISABLED = 6161, ///< Group assistant 群资料本地存储没有开启。
|
||||
ERR_LOADGRPINFO_FAILED = 6162, ///< 加载群资料失败。
|
||||
ERR_REQ_NO_NET_ON_REQ = 6200, ///< 请求的时候没有网络。
|
||||
ERR_REQ_NO_NET_ON_RSP = 6201, ///< 响应的时候没有网络。
|
||||
ERR_SERIVCE_NOT_READY = 6205, ///< QALSDK 服务未就绪。
|
||||
ERR_LOGIN_AUTH_FAILED = 6207, ///< 账号认证失败( TinyId 转换失败)。
|
||||
ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, ///< 在应用启动后没有尝试联网。
|
||||
ERR_REQ_FAILED = 6210, ///< QALSDK 执行失败。
|
||||
ERR_REQ_INVALID_REQ = 6211, ///< 请求非法,toMsgService 非法。
|
||||
ERR_REQ_OVERLOADED = 6212, ///< 请求队列满。
|
||||
ERR_REQ_KICK_OFF = 6213, ///< 已经被其他终端踢了。
|
||||
ERR_REQ_SERVICE_SUSPEND = 6214, ///< 服务被暂停。
|
||||
ERR_REQ_INVALID_SIGN = 6215, ///< SSO 签名错误。
|
||||
ERR_REQ_INVALID_COOKIE = 6216, ///< SSO cookie 无效。
|
||||
ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, ///< 登录时 TLS SDK 回包校验,包体长度错误。
|
||||
ERR_LOGIN_OPENMSG_TIMEOUT = 6218, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态超时。
|
||||
ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态时解析回包失败。
|
||||
ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, ///< 登录时 TLS SDK 解密失败。
|
||||
ERR_WIFI_NEED_AUTH = 6221, ///< WIFI 需要认证。
|
||||
ERR_USER_CANCELED = 6222, ///< 用户已取消。
|
||||
ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_LACK_UGC_EXT = 6224, ///< 缺少 UGC 扩展包。
|
||||
ERR_AUTOLOGIN_NEED_USERSIG = 6226, ///< 自动登录,本地票据过期,需要 UserSig 手动登录。
|
||||
ERR_QAL_NO_SHORT_CONN_AVAILABLE = 6300, ///< 没有可用的短连接 SSO 。
|
||||
ERR_REQ_CONTENT_ATTACK = 80101, ///< 消息内容安全打击。
|
||||
ERR_LOGIN_SIG_EXPIRE = 70101, ///< 登录返回,票据过期。
|
||||
ERR_SDK_HAD_INITIALIZED = 90101, ///< IM SDK 已经初始化无需重复初始化。
|
||||
ERR_OPENBDH_BASE = 115000, ///< OpenBDH 错误码基。
|
||||
ERR_REQUEST_NO_NET_ONREQ = 6250, ///< 请求时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_NO_NET_ONRSP = 6251, ///< 响应时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_FAILED = 6252, ///< QALSDK 执行失败。
|
||||
ERR_REQUEST_INVALID_REQ = 6253, ///< 请求非法,toMsgService 非法。
|
||||
ERR_REQUEST_OVERLOADED = 6254, ///< 请求队列満。
|
||||
ERR_REQUEST_KICK_OFF = 6255, ///< 已经被其他终端踢了。
|
||||
ERR_REQUEST_SERVICE_SUSPEND = 6256, ///< 服务被暂停。
|
||||
ERR_REQUEST_INVALID_SIGN = 6257, ///< SSO 签名错误。
|
||||
ERR_REQUEST_INVALID_COOKIE = 6258, ///< SSO cookie 无效。
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,111 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+APNS
|
||||
//
|
||||
// 消息推送接口,里面包含了消息的推送的开启逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
@class V2TIMAPNSConfig;
|
||||
V2TIM_EXPORT @protocol V2TIMAPNSListener;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (APNS)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 设置 APNS 推送
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 1.1 设置 APNS 监听
|
||||
*/
|
||||
- (void)setAPNSListener:(_Nullable id<V2TIMAPNSListener>)apnsListener NS_SWIFT_NAME(setAPNSListener(apnsListener:));
|
||||
|
||||
/**
|
||||
* 1.2 设置 APNS 推送
|
||||
*
|
||||
* config -> token:苹果后台对客户端的唯一标识,需要主动调用系统 API 获取,获取方法如下:
|
||||
*
|
||||
* <pre>
|
||||
* //获取 token 代码示例
|
||||
* if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
|
||||
* [[UIApplication sharedApplication] registerUserNotificationSettings:
|
||||
* [UIUserNotificationSettings settingsForTypes:
|
||||
* (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
|
||||
* [[UIApplication sharedApplication] registerForRemoteNotifications];
|
||||
* }
|
||||
* else{
|
||||
* [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
|
||||
* (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
|
||||
* }
|
||||
*
|
||||
* //收到 token 代码示例
|
||||
* -(void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
|
||||
* //回调的 deviceToken 就是需要的 token 信息
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* config -> busiId:推送证书 ID,上传推送证书(p.12)到 IM 控制台后生成。
|
||||
* 具体步骤请参考 [离线推送](https://cloud.tencent.com/document/product/269/9154)。
|
||||
*
|
||||
* @note
|
||||
* - 接口成功设置后会开启离线推送功能,如果您需要自定义推送的格式信息,请参考 V2TIMManager+Message.h 里面的 sendMessage 接口。
|
||||
* - 如果成功开启了离线推送,APP 进后台后,如果收到消息,会弹系统推送通知,APP 进前台后,如果收到消息,则不会弹系统推送通知。
|
||||
* - APP 进后台后 SDK 会默认设置应用角标为所有会话未读数之和,如果您需要自定义 APP 的未读数,请监听 V2TIMAPNSListener 回调设置。
|
||||
* - APP 在未初始化或未登录成功状态下 SDK 不会设置应用角标,这种情况下如需设置应用角标,请自行调用系统函数设置。
|
||||
* - 如果您想关闭离线推送,请把 config 设置为 nil。
|
||||
*/
|
||||
- (void)setAPNS:(V2TIMAPNSConfig* _Nullable)config succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setAPNS(config:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// APNS 监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMAPNSListener <NSObject>
|
||||
@optional
|
||||
/** 程序进后台后,自定义 APP 的未读数,如果不处理,APP 未读数默认为所有会话未读数之和
|
||||
* <pre>
|
||||
*
|
||||
* - (uint32_t)onSetAPPUnreadCount {
|
||||
* return 100; // 自定义未读数
|
||||
* }
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
- (uint32_t)onSetAPPUnreadCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// APNS 配置
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMAPNSConfig : NSObject
|
||||
|
||||
/**
|
||||
* APNS token
|
||||
*/
|
||||
@property(nonatomic,strong) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台证书 ID,接入 TPNS 时不需要填写
|
||||
*/
|
||||
@property(nonatomic,assign) int businessID;
|
||||
|
||||
/**
|
||||
* 是否接入配置 TPNS, token 是否是从 TPNS 获取
|
||||
* @note 该字段已废弃
|
||||
* - 如果您之前通过 TPNS 接入离线推送,并且在 TPNS 控制台配置推送信息,可以继续按照该方式接入推送功能;
|
||||
* - 如果您从未接入 TPNS,从未在 TPNS 控制台配置推送信息,IM 将不在支持 TPNS 方式接入离线推送功能, 推荐参照如下方式接入:
|
||||
* https://cloud.tencent.com/document/product/269/74284
|
||||
*/
|
||||
@property(nonatomic,assign) BOOL isTPNSToken __attribute__((deprecated("not supported anymore, please use APNs")));
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,482 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Community
|
||||
//
|
||||
// 社群接口,里面包含了创建话题、删除话题、修改话题、获取话题列表等逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMCommunityListener;
|
||||
@class V2TIMTopicInfo;
|
||||
@class V2TIMTopicInfoResult;
|
||||
@class V2TIMTopicOperationResult;
|
||||
@class V2TIMPermissionGroupInfo;
|
||||
@class V2TIMPermissionGroupOperationResult;
|
||||
@class V2TIMPermissionGroupInfoResult;
|
||||
@class V2TIMPermissionGroupMemberOperationResult;
|
||||
@class V2TIMPermissionGroupMemberInfoResult;
|
||||
@class V2TIMTopicPermissionOperationResult;
|
||||
@class V2TIMTopicPermissionResult;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Community)
|
||||
|
||||
/// 操作话题列表结果
|
||||
typedef void(^V2TIMTopicOperationResultSucc)(NSMutableArray<V2TIMTopicOperationResult *> *resultList);
|
||||
/// 获取话题列表结果
|
||||
typedef void(^V2TIMTopicInfoResultListSucc)(NSMutableArray<V2TIMTopicInfoResult *> *resultList);
|
||||
/// 创建话题成功回调
|
||||
typedef void (^V2TIMCreateTopicSucc)(NSString * _Nullable topicID);
|
||||
/// 创建权限组成功回调
|
||||
typedef void (^V2TIMCreatePermissionGroupSucc)(NSString * _Nullable permissionGroupID);
|
||||
/// 操作权限组结果
|
||||
typedef void (^V2TIMPermissionGroupOperationResultSucc)(NSMutableArray<V2TIMPermissionGroupOperationResult *> *resultList);
|
||||
/// 获取权限组列表结果
|
||||
typedef void (^V2TIMPermissionGroupInfoResultListSucc)(NSMutableArray<V2TIMPermissionGroupInfoResult *> *resultList);
|
||||
/// 操作权限组成员结果
|
||||
typedef void (^V2TIMPermissionGroupMemberOperationResultListSucc)(NSMutableArray<V2TIMPermissionGroupMemberOperationResult *> *resultList);
|
||||
/// 获取权限组成员结果
|
||||
typedef void (^V2TIMPermissionGroupMemberInfoResultListSucc)(NSString * _Nullable nextCursor, NSMutableArray<V2TIMGroupMemberFullInfo *> *resultList);
|
||||
/// 获取话题权限结果
|
||||
typedef void (^V2TIMTopicPermissionResultSucc)(NSMutableArray<V2TIMTopicPermissionResult *> *resultList);
|
||||
|
||||
/// 社群权限值
|
||||
typedef NS_ENUM(NSInteger, V2TIMCommunityPermissionValue) {
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO = 0x1, ///< 修改群资料权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER = 0x1 << 1, ///< 群成员管理权限,包含踢人,进群审核、修改成员资料等。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_INFO = 0x1 << 2, ///< 管理权限组资料权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。权限包含创建、修改、删除权限组;在权限组中添加、修改、删除话题权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_MEMBER = 0x1 << 3, ///< 权限组成员管理权限,包含邀请成员进权限组和把成员从权限组踢出等。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MANAGE_TOPIC_IN_COMMUNITY = 0x1 << 4, ///< 话题管理权限,包含创建、修改、删除话题等。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_MUTE_MEMBER = 0x1 << 5, ///< 对某群成员在社群下所有话题的禁言权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_SEND_MESSAGE = 0x1 << 6, ///< 群成员在社群下所有话题的发消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_AT_ALL = 0x1 << 7, ///< 在社群下所有话题发 at all 消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_GET_HISTORY_MESSAGE = 0x1 << 8, ///< 在社群下所有话题拉取入群前的历史消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE = 0x1 << 9, ///< 在社群下所有话题撤回他人消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
V2TIM_COMMUNITY_PERMISSION_BAN_MEMBER = 0x1 << 10, ///< 封禁社群成员权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
|
||||
};
|
||||
|
||||
/// 话题权限值
|
||||
typedef NS_ENUM(NSInteger, V2TIMTopicPermissionValue) {
|
||||
V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC = 0x1, ///< 管理当前话题的权限,包括修改当前话题的资料、删除当前话题。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC_PERMISSION = 0x1 << 1, ///< 在当前话题中管理话题权限,包括添加、修改、移除话题权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_MUTE_MEMBER = 0x1 << 2, ///< 在当前话题中禁言成员权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_SEND_MESSAGE = 0x1 << 3, ///< 在当前话题中发消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_GET_HISTORY_MESSAGE = 0x1 << 4, ///< 在当前话题中拉取入群前的历史消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE = 0x1 << 5, ///< 在当前话题中撤回他人消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
V2TIM_TOPIC_PERMISSION_AT_ALL = 0x1 << 6, ///< 在当前话题中发消息时有 at all 权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 社群监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 添加社群监听器
|
||||
*/
|
||||
- (void)addCommunityListener:(id<V2TIMCommunityListener>)listener NS_SWIFT_NAME(addCommunityListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除社群监听器
|
||||
*/
|
||||
- (void)removeCommunityListener:(id<V2TIMCommunityListener>)listener NS_SWIFT_NAME(removeCommunityListener(listener:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 社群接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 2.1 创建支持话题的社群
|
||||
*/
|
||||
- (void)createCommunity:(V2TIMGroupInfo*)info memberList:(NSArray<V2TIMCreateGroupMemberInfo *>* _Nullable)memberList succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createCommunity(info:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.1 获取当前用户已经加入的支持话题的社群列表
|
||||
*/
|
||||
- (void)getJoinedCommunityList:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getJoinedCommunityList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 创建话题
|
||||
*
|
||||
* @param groupID 社群 ID,必须以 @TGS#_ 开头。
|
||||
*/
|
||||
- (void)createTopicInCommunity:(NSString *)groupID topicInfo:(V2TIMTopicInfo *)topicInfo succ:(V2TIMCreateTopicSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createTopicInCommunity(groupID:topicInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 删除话题
|
||||
*/
|
||||
- (void)deleteTopicFromCommunity:(NSString *)groupID topicIDList:(NSArray<NSString *>*)topicIDList succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteTopicFromCommunity(groupID:topicIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.4 修改话题信息
|
||||
*/
|
||||
- (void)setTopicInfo:(V2TIMTopicInfo *)topicInfo succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setTopicInfo(topicInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 获取话题列表。
|
||||
* @note: topicIDList 传空时,获取此社群下的所有话题列表
|
||||
*/
|
||||
- (void)getTopicInfoList:(NSString *)groupID topicIDList:(NSArray<NSString *>* _Nullable)topicIDList succ:(V2TIMTopicInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getTopicInfoList(groupID:topicIDList:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 3.1 创建社群权限组(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)createPermissionGroupInCommunity:(V2TIMPermissionGroupInfo *)permissionGroupInfo succ:(V2TIMCreatePermissionGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createPermissionGroupInCommunity(permissionGroupInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.2 删除社群权限组(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)deletePermissionGroupFromCommunity:(NSString *)groupID permissionGroupIDList:(NSArray<NSString *>*)permissionGroupIDList succ:(V2TIMPermissionGroupOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deletePermissionGroupFromCommunity(groupID:permissionGroupIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.3 修改社群权限组(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)modifyPermissionGroupInfoInCommunity:(V2TIMPermissionGroupInfo *)permissionGroupInfo succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(modifyPermissionGroupInfoInCommunity(permissionGroupInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 获取已加入的社群权限组列表(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)getJoinedPermissionGroupListInCommunity:(NSString *)groupID succ:(V2TIMPermissionGroupInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getJoinedPermissionGroupListInCommunity(groupID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 获取社群权限组列表(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
* - permissionGroupIDList 为空时,获取所有的权限组列表;不为空时,获取指定的权限组列表
|
||||
*/
|
||||
- (void)getPermissionGroupListInCommunity:(NSString *)groupID permissionGroupIDList:(NSArray<NSString *>* _Nullable)permissionGroupIDList succ:(V2TIMPermissionGroupInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getPermissionGroupListInCommunity(groupID:permissionGroupIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 向社群权限组添加成员(7.7 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)addCommunityMembersToPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID memberList:(NSArray<NSString *>*)memberList succ:(V2TIMPermissionGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addCommunityMembersToPermissionGroup(groupID:permissionGroupID:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.7 从社群权限组删除成员(7.8 及其以上版本支持)
|
||||
*/
|
||||
- (void)removeCommunityMembersFromPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID memberList:(NSArray<NSString *>*)memberList succ:(V2TIMPermissionGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(removeCommunityMembersFromPermissionGroup(groupID:permissionGroupID:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.8 获取社群权限组成员列表(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)getCommunityMemberListInPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID nextCursor:(NSString * _Nullable)nextCursor succ:(V2TIMPermissionGroupMemberInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getCommunityMemberListInPermissionGroup(groupID:permissionGroupID:nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.9 向权限组添加话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)addTopicPermissionToPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addTopicPermissionToPermissionGroup(groupID:permissionGroupID:topicPermissionMap:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.10 从权限组中删除话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)deleteTopicPermissionFromPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicIDList:(NSArray<NSString *>*)topicIDList succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteTopicPermissionFromPermissionGroup(groupID:permissionGroupID:topicIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.11 修改权限组中的话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)modifyTopicPermissionInPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap succ:(V2TIMTopicOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(modifyTopicPermissionInPermissionGroup(groupID:permissionGroupID:topicPermissionMap:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.12 获取权限组中的话题权限(7.8 及其以上版本支持)
|
||||
* @note
|
||||
* - 该功能为旗舰版功能,需要您购买旗舰版套餐。
|
||||
*/
|
||||
- (void)getTopicPermissionInPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID topicIDList:(NSArray<NSString *>*)topicIDList succ:(V2TIMTopicPermissionResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getTopicPermissionInPermissionGroup(groupID:permissionGroupID:topicIDList:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 社群回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 资料关系链回调
|
||||
V2TIM_EXPORT @protocol V2TIMCommunityListener <NSObject>
|
||||
@optional
|
||||
|
||||
/// 话题创建回调
|
||||
- (void)onCreateTopic:(NSString * _Nullable)groupID topicID:(NSString * _Nullable)topicID NS_SWIFT_NAME(onCreateTopic(groupID:topicID:));
|
||||
|
||||
/// 话题被删除回调
|
||||
- (void)onDeleteTopic:(NSString * _Nullable)groupID topicIDList:(NSArray<NSString *> *)topicIDList NS_SWIFT_NAME(onDeleteTopic(groupID:topicIDList:));
|
||||
|
||||
/// 话题更新回调
|
||||
- (void)onChangeTopicInfo:(NSString * _Nullable)groupID topicInfo:(V2TIMTopicInfo *)topicInfo NS_SWIFT_NAME(onChangeTopicInfo(groupID:topicInfo:));
|
||||
|
||||
/// 收到 RESTAPI 下发的话题自定义系统消息
|
||||
- (void)onReceiveTopicRESTCustomData:(NSString * _Nullable)topicID data:(NSData * _Nullable)data NS_SWIFT_NAME(onReceiveTopicRESTCustomData(topicID:data:));
|
||||
|
||||
/// 权限组创建通知
|
||||
- (void)onCreatePermissionGroup:(NSString * _Nullable)groupID permissionGroupInfo:(V2TIMPermissionGroupInfo *)permissionGroupInfo NS_SWIFT_NAME(onCreatePermissionGroup(groupID:permissionGroupInfo:));
|
||||
|
||||
/// 权限组删除通知
|
||||
- (void)onDeletePermissionGroup:(NSString * _Nullable)groupID permissionGroupIDList:(NSArray<NSString *> *)permissionGroupIDList NS_SWIFT_NAME(onDeletePermissionGroup(groupID:permissionGroupIDList:));
|
||||
|
||||
/// 权限组更新通知
|
||||
- (void)onChangePermissionGroupInfo:(NSString * _Nullable)groupID permissionGroupInfo:(V2TIMPermissionGroupInfo *)permissionGroupInfo NS_SWIFT_NAME(onChangePermissionGroupInfo(groupID:permissionGroupInfo:));
|
||||
|
||||
/// 添加成员到权限组通知
|
||||
- (void)onAddMembersToPermissionGroup:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID memberIDList:(NSArray<NSString *> *)memberIDList NS_SWIFT_NAME(onAddMembersToPermissionGroup(groupID:permissionGroupID:memberIDList:));
|
||||
|
||||
/// 从权限组中删除成员通知
|
||||
- (void)onRemoveMembersFromPermissionGroup:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID memberIDList:(NSArray<NSString *> *)memberIDList NS_SWIFT_NAME(onRemoveMembersFromPermissionGroup(groupID:permissionGroupID:memberIDList:));
|
||||
|
||||
/// 话题权限添加通知
|
||||
- (void)onAddTopicPermission:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap NS_SWIFT_NAME(onAddTopicPermission(groupID:permissionGroupID:topicPermissionMap:));
|
||||
|
||||
/// 话题权限删除通知
|
||||
- (void)onDeleteTopicPermission:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID topicIDList:(NSArray<NSString *>*)topicIDList NS_SWIFT_NAME(onDeleteTopicPermission(groupID:permissionGroupID:topicIDList:));
|
||||
|
||||
/// 话题权限修改通知
|
||||
- (void)onModifyTopicPermission:(NSString * _Nullable)groupID permissionGroupID:(NSString * _Nullable)permissionGroupID topicPermissionMap:(NSDictionary<NSString *, NSNumber *>*)topicPermissionMap NS_SWIFT_NAME(onModifyTopicPermission(groupID:permissionGroupID:topicPermissionMap:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题基本资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicInfo : NSObject
|
||||
|
||||
/// 话题 ID,只能在创建话题或者修改话题信息的时候设置。组成方式为:社群 ID + @TOPIC#_xxx,例如社群 ID 为 @TGS#_123,则话题 ID 为 @TGS#_123@TOPIC#_xxx
|
||||
@property(nonatomic, strong, nullable) NSString *topicID;
|
||||
|
||||
/// 话题类型(默认为 Public 话题)(从 8.4 版本开始支持)
|
||||
/// "Public" :公开话题,社群内成员可以自由进出发言。
|
||||
/// "Private" :私密话题,有自己的成员列表(成员上限 10000 人),社群成员需要加入话题才能发言(私密话题需要购买企业版套餐包)。
|
||||
@property(nonatomic, strong, nullable) NSString *topicType;
|
||||
|
||||
/// 话题名称,最长 150 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *topicName;
|
||||
|
||||
/// 话题头像,最长 500 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *topicFaceURL;
|
||||
|
||||
/// 话题介绍,最长 400 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *introduction;
|
||||
|
||||
/// 话题公告,最长 400 字节,使用 UTF-8 编码
|
||||
@property(nonatomic, strong, nullable) NSString *notification;
|
||||
|
||||
/// 话题全员禁言
|
||||
@property(nonatomic, assign) BOOL isAllMuted;
|
||||
|
||||
/// 当前用户在话题中的禁言时间,单位:秒
|
||||
@property(nonatomic, assign, readonly) uint32_t selfMuteTime;
|
||||
|
||||
/// 话题自定义字段
|
||||
@property(nonatomic, strong, nullable) NSString *customString;
|
||||
|
||||
/// 话题消息接收选项,修改话题消息接收选项请调用 setGroupReceiveMessageOpt 接口
|
||||
@property(nonatomic, assign, readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/// 话题草稿
|
||||
@property(nonatomic, strong, nullable) NSString *draftText;
|
||||
|
||||
/// 话题消息未读数量
|
||||
@property(nonatomic, assign, readonly) uint64_t unreadCount;
|
||||
|
||||
/// 话题 lastMessage
|
||||
@property(nonatomic,strong,readonly, nullable) V2TIMMessage *lastMessage;
|
||||
|
||||
/// 话题已读消息的 sequence,从 7.8 版本开始支持
|
||||
@property(nonatomic, assign, readonly) uint64_t readSequence;
|
||||
|
||||
/// 话题 at 信息列表
|
||||
@property(nonatomic, strong, readonly, nullable) NSArray<V2TIMGroupAtInfo *> *groupAtInfolist;
|
||||
|
||||
/// 话题创建时间,单位:秒
|
||||
@property(nonatomic, assign, readonly) uint32_t createTime;
|
||||
|
||||
/// 申请加入话题是否需要管理员审批(私密话题有效,默认不需要审批,可以自由加入)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, assign) V2TIMGroupAddOpt topicAddOpt;
|
||||
|
||||
/// 邀请加入话题是否需要管理员审批(私密话题有效,默认不需要审批,可以自由加入)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, assign) V2TIMGroupAddOpt topicApproveOpt;
|
||||
|
||||
/// 话题默认群成员(私密话题有效,最大支持 100 个群成员,只能在创建话题的时候设置)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, strong, nullable) NSArray<V2TIMCreateGroupMemberInfo *> *memberList;
|
||||
|
||||
/// 话题成员的最大个数(私密话题有效,最大支持 10000,默认 10000,只能在创建话题的时候设置)(从 8.4 版本开始支持)
|
||||
@property(nonatomic, assign) uint32_t memberMaxCount;
|
||||
|
||||
/// 话题默认权限,7.8 版本开始支持
|
||||
/// 群成员在没有加入任何权限组时的默认权限,仅在社群资料 V2TIMGroupInfo 中 enablePermissionGroup = true 打开权限组之后生效
|
||||
@property(nonatomic, assign) uint64_t defaultPermissions;
|
||||
|
||||
/// 登录用户在话题中的消息接收选项是否继承社群。该功能仅增强版 SDK 8.1 及以上版本支持。
|
||||
- (BOOL)isInheritMessageReceiveOptionFromCommunity;
|
||||
|
||||
/**
|
||||
* 设置登录用户在话题中的消息接收选项是否继承社群。该功能仅增强版 SDK 8.1 及以上版本支持。
|
||||
*/
|
||||
- (void)setInheritMessageReceiveOptionFromCommunity:(BOOL)isInherit succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题处理结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicOperationResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic, assign) int errorCode;
|
||||
|
||||
/// 错误信息
|
||||
@property(nonatomic, strong, nullable) NSString *errorMsg;
|
||||
|
||||
/// 话题 ID
|
||||
@property(nonatomic, strong, nullable) NSString *topicID;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic, assign) int errorCode;
|
||||
|
||||
/// 错误信息
|
||||
@property(nonatomic, strong, nullable) NSString *errorMsg;
|
||||
|
||||
/// 话题资料
|
||||
@property(nonatomic, strong) V2TIMTopicInfo *topicInfo;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组信息
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupInfo : NSObject
|
||||
|
||||
/// 群 ID
|
||||
@property(nonatomic, strong, nullable) NSString *groupID;
|
||||
|
||||
/// 权限组 ID
|
||||
@property(nonatomic, strong, nullable) NSString *permissionGroupID;
|
||||
|
||||
/// 权限组名称
|
||||
@property(nonatomic, strong, nullable) NSString *permissionGroupName;
|
||||
|
||||
/// 群权限
|
||||
@property(nonatomic, assign) uint64_t groupPermission;
|
||||
|
||||
/// 自定义数据
|
||||
@property(nonatomic, strong, nullable) NSString *customData;
|
||||
|
||||
/// 成员人数
|
||||
@property(nonatomic, assign, readonly) uint64_t memberCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组信息获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong) V2TIMPermissionGroupInfo *info;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组处理结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupOperationResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong,nullable) NSString *permissionGroupID;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 权限组成员处理结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMPermissionGroupMemberOperationResult : NSObject
|
||||
|
||||
/// 成员 userID
|
||||
@property(nonatomic,strong,nullable) NSString *memberID;
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 话题权限获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMTopicPermissionResult : NSObject
|
||||
|
||||
/// 话题
|
||||
@property(nonatomic,strong,nullable) NSString *topicID;
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 话题权限
|
||||
@property(nonatomic,assign) uint64_t topicPermission;
|
||||
|
||||
/// 社群 ID
|
||||
@property(nonatomic,strong,nullable) NSString *groupID;
|
||||
|
||||
/// 权限组 ID
|
||||
@property(nonatomic,strong,nullable) NSString *permissionGroupID;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,505 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Conversation
|
||||
//
|
||||
// 会话接口,里面包含了会话的获取,删除,更新的逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMConversationListener;
|
||||
@class V2TIMConversation;
|
||||
@class V2TIMConversationListFilter;
|
||||
@class V2TIMConversationOperationResult;
|
||||
@class V2TIMGroupAtInfo;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 消息会话相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Conversation)
|
||||
|
||||
/// 获取会话列表成功的回调,nextSeq:下一次分页拉取的游标 isFinished:会话列表是否已经拉取完毕
|
||||
typedef void(^V2TIMConversationResultSucc)(NSArray<V2TIMConversation *>* list, uint64_t nextSeq, BOOL isFinished);
|
||||
/// 获取单个会话成功回调
|
||||
typedef void(^V2TIMConversationSucc)(V2TIMConversation *conv);
|
||||
/// 搜索会话列表成功回调
|
||||
typedef void(^V2TIMConversationListSucc)(NSArray<V2TIMConversation *>*list);
|
||||
/// 获取会话总未读数回调
|
||||
typedef void(^V2TIMTotalUnreadMessageCountSucc)(UInt64 totalUnreadCount);
|
||||
/// 获取会话分组列表成功回调
|
||||
typedef void (^V2TIMConversationGroupListSucc)(NSArray<NSString *> * groupList);
|
||||
/// 会话操作成功回调
|
||||
typedef void (^V2TIMConversationOperationResultSucc)(NSArray<V2TIMConversationOperationResult *> *result);
|
||||
|
||||
/// 会话类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMConversationType) {
|
||||
V2TIM_UNKNOWN = 0, ///< 未知
|
||||
V2TIM_C2C = 1, ///< 单聊
|
||||
V2TIM_GROUP = 2, ///< 群聊
|
||||
};
|
||||
|
||||
/// @ 类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupAtType) {
|
||||
V2TIM_AT_ME = 1, ///< @ 我
|
||||
V2TIM_AT_ALL = 2, ///< @ 群里所有人
|
||||
V2TIM_AT_ALL_AT_ME = 3, ///< @ 群里所有人并且单独 @ 我
|
||||
};
|
||||
|
||||
/// 会话标记类型
|
||||
typedef NS_ENUM(NSUInteger, V2TIMConversationMarkType) {
|
||||
V2TIM_CONVERSATION_MARK_TYPE_STAR = 0x1, ///< 会话标星
|
||||
V2TIM_CONVERSATION_MARK_TYPE_UNREAD = 0x1 << 1, ///< 会话标记未读(重要会话)
|
||||
V2TIM_CONVERSATION_MARK_TYPE_FOLD = 0x1 << 2, ///< 会话折叠
|
||||
V2TIM_CONVERSATION_MARK_TYPE_HIDE = 0x1 << 3, ///< 会话隐藏
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话基础接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 1.1 添加会话监听器
|
||||
*/
|
||||
- (void)addConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(addConversationListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除会话监听器
|
||||
*/
|
||||
- (void)removeConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(removeConversationListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.3 获取会话列表
|
||||
*
|
||||
* - 一个会话对应一个聊天窗口,比如跟一个好友的 1v1 聊天,或者一个聊天群,都是一个会话。
|
||||
* - 由于历史的会话数量可能很多,所以该接口希望您采用分页查询的方式进行调用,每次分页拉取的个数建议为 100 个。
|
||||
* - 该接口拉取的是本地缓存的会话,如果服务器会话有更新,SDK 内部会自动同步,然后在 @ref V2TIMConversationListener 回调告知客户。
|
||||
* - 如果会话全部拉取完毕,成功回调里面 V2TIMConversationResult 中的 isFinished 获取字段值为 YES。
|
||||
*
|
||||
* @note 会话排序规则
|
||||
* - 5.5.892 及以后版本, 该接口获取的会话列表默认已经按照会话 orderKey 做了排序,orderKey 值越大,代表该会话排序越靠前。
|
||||
* - 5.5.892 以前版本,该接口获取的会话列表默认已经按照会话 lastMessage -> timestamp 做了排序,timestamp 越大,会话越靠前。
|
||||
*
|
||||
* @param nextSeq 分页拉取的游标,第一次默认取传 0,后续分页拉传上一次分页拉取成功回调里的 nextSeq
|
||||
* @param count 分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话
|
||||
*/
|
||||
- (void)getConversationList:(uint64_t)nextSeq count:(int)count succ:(V2TIMConversationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationList(nextSeq:count:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.4 获取单个会话
|
||||
*
|
||||
* @param conversationID 会话唯一 ID, C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)getConversation:(NSString *)conversationID succ:(V2TIMConversationSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversation(conversationID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.5 获取指定会话列表
|
||||
*
|
||||
* @param conversationIDList 会话唯一 ID 列表,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)getConversationList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationList(conversationIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.6 获取会话列表高级接口(从 6.5 版本开始支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
* @param nextSeq 分页拉取的游标
|
||||
* @param count 分页拉取的个数
|
||||
*
|
||||
*/
|
||||
- (void)getConversationListByFilter:(V2TIMConversationListFilter *)filter nextSeq:(uint64_t)seq count:(uint32_t)count succ:(V2TIMConversationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationListByFilter(filter:nextSeq:count:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.7 删除会话以及该会话中的历史消息
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*
|
||||
* @note
|
||||
* - 该会话以及会话中的历史消息,会被 SDK 从本地和服务端一同删除掉,并且不可恢复。
|
||||
*/
|
||||
- (void)deleteConversation:(NSString *)conversationID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteConversation(conversation:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.8 删除会话列表(7.1 及以上版本支持)
|
||||
*
|
||||
* @param conversationIDList 会话唯一 ID 列表,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param clearMessage 是否删除会话中的消息;设置为 NO 时,保留会话消息;设置为 YES 时,本地和服务器的消息会一起删除,并且不可恢复
|
||||
*
|
||||
* @note 每次最多支持删除 100 个会话
|
||||
*/
|
||||
- (void)deleteConversationList:(NSArray<NSString *> *)conversationIDList clearMessage:(BOOL)clearMessage succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteConversationList(conversationIDList:clearMessage:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.9 设置会话草稿
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*
|
||||
* 只在本地保存,不会存储 Server,不能多端同步,程序卸载重装会失效。
|
||||
*/
|
||||
- (void)setConversationDraft:(NSString *)conversationID draftText:(NSString * _Nullable)draftText succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setConversationDraft(conversationID:draftText:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.10 设置会话自定义数据(从 6.5 版本开始支持)
|
||||
*
|
||||
* @param customData 自定义数据,最大支持 256 bytes
|
||||
*/
|
||||
- (void)setConversationCustomData:(NSArray<NSString *> *)conversationIDList customData:(NSData * _Nullable)customData succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(setConversationCustomData(conversationIDList:customData:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.11 设置会话置顶(5.3.425 及以上版本支持)
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param isPinned 是否置顶
|
||||
*/
|
||||
- (void)pinConversation:(NSString *)conversationID isPinned:(BOOL)isPinned succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(pinConversation(conversationID:isPinned:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.12 标记会话(从 6.5 版本开始支持,需要您购买旗舰版套餐)
|
||||
*
|
||||
* @param conversationIDList 会话列表
|
||||
* @param markType 会话标记类型,取值详见 @V2TIMConversationMarkType。
|
||||
* @param enableMark YES:设置标记 NO:取消标记
|
||||
*
|
||||
* 如果已有标记不能满足您的需求,您可以自定义扩展标记,扩展标记需要满足以下两个条件:
|
||||
* 1、扩展标记值不能和 V2TIMConversationMarkType 已有的标记值冲突
|
||||
* 2、扩展标记值必须是 0x1LL << n 的位移值(32 <= n < 64,即 n 必须大于等于 32 并且小于 64),比如扩展标记值 0x1LL << 32 表示 "iPhone 在线"
|
||||
*
|
||||
* @note: 扩展标记值不能设置为 0x1 << 32,要设置为 0x1LL << 32,明确告诉编译器是 64 位的整型常量。
|
||||
*
|
||||
*/
|
||||
- (void)markConversation:(NSArray<NSString *> *)conversationIDList markType:(NSNumber *)markType enableMark:(BOOL)enableMark succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(markConversation(conversationIDList:markType:enableMark:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.13 获取所有会话的未读消息总数(5.3.425 及以上版本支持)
|
||||
* @note
|
||||
* - 调用该接口以后,任意会话的未读数发生变化时,SDK 都会给您抛 onTotalUnreadMessageCountChanged 回调。
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)getTotalUnreadMessageCount:(V2TIMTotalUnreadMessageCountSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getTotalUnreadMessageCount(succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.14 获取根据 filter 过滤的会话未读总数(7.0 及以上版本支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
*
|
||||
* @note
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)getUnreadMessageCountByFilter:(V2TIMConversationListFilter *)filter succ:(V2TIMTotalUnreadMessageCountSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getUnreadMessageCountByFilter(filter:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.15 注册监听指定 filter 的会话未读总数变化(7.0 及以上版本支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
*
|
||||
* @note
|
||||
* - 当您调用这个接口以后,该 filter 下的未读数发生变化时,SDK 会给您抛 onUnreadMessageCountChangedByFilter 回调。
|
||||
*/
|
||||
- (void)subscribeUnreadMessageCountByFilter:(V2TIMConversationListFilter *)filter NS_SWIFT_NAME(subscribeUnreadMessageCountByFilter(filter:));
|
||||
|
||||
/**
|
||||
* 1.16 取消监听指定 filter 的会话未读总数变化(7.0 及以上版本支持)
|
||||
*
|
||||
* @param filter 会话 filter
|
||||
*
|
||||
*/
|
||||
- (void)unsubscribeUnreadMessageCountByFilter:(V2TIMConversationListFilter *)filter NS_SWIFT_NAME(unsubscribeUnreadMessageCountByFilter(filter:));
|
||||
|
||||
/**
|
||||
* 1.17 清理会话的未读消息计数(7.1 及以上版本支持)
|
||||
*
|
||||
* @param conversationID 会话唯一 ID, C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param cleanTimestamp 清理时间戳,单位为秒,仅对单聊会话生效,指定清理哪一个 timestamp 之前的未读消息计数;当传入为 0 时,对应会话所有的未读消息将被清理,会话的未读数会清 0
|
||||
* @param cleanSequence 清理 sequence,仅对群聊会话生效,指定清理哪一个 sequence 之前的未读消息计数;当传入为 0 时,对应会话所有的未读消息将被清理,会话的未读数会清 0
|
||||
*
|
||||
* @note
|
||||
* - 当您想清理所有单聊会话的未读消息计数,conversationID 请传入 @"c2c",即不指定具体的 userID;
|
||||
* - 当您想清理所有群聊会话的未读消息计数,conversationID 请传入 @"group",即不指定具体的 groupID;
|
||||
* - 当您想清理所有会话的未读消息计数,conversationID 请传入 @“” 或者 nil;
|
||||
* - 该接口调用成功后,SDK 会通过 onConversationChanged 回调将对应会话的最新未读数通知给您。
|
||||
*/
|
||||
- (void)cleanConversationUnreadMessageCount:(NSString * _Nullable)conversationID cleanTimestamp:(uint64_t)cleanTimestamp cleanSequence:(uint64_t)cleanSequence succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(cleanConversationUnreadMessageCount(conversationID:cleanTimestamp:cleanSequence:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.18 设置会话监听器(待废弃接口,请使用 addConversationListener 和 removeConversationListener 接口)
|
||||
*/
|
||||
- (void)setConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(setConversationListener(listener:)) __attribute__((deprecated("use addConversationListener: instead")));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话分组相关接口 (从 6.5 版本开始支持,需要您购买旗舰版套餐)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 2.1 创建会话分组
|
||||
*
|
||||
* @param groupName 分组名(必填参数,长度要 > 0,最大支持 32 bytes)
|
||||
* @param conversationIDList 会话 ID 列表(必填参数,不能为空)
|
||||
*
|
||||
* @note 会话分组最大支持 20 个,不再使用的分组请及时删除。
|
||||
*/
|
||||
- (void)createConversationGroup:(NSString *)groupName conversationIDList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createConversationGroup(groupName:conversationIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 获取会话分组列表
|
||||
*
|
||||
* @note 该接口获取的是本地缓存的会话分组,建议在 onSyncServerFinish 之后调用。
|
||||
*/
|
||||
- (void)getConversationGroupList:(V2TIMConversationGroupListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getConversationGroupList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 删除会话分组
|
||||
*/
|
||||
- (void)deleteConversationGroup:(NSString *)groupName succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteConversationGroup(groupName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.4 重命名会话分组
|
||||
*/
|
||||
- (void)renameConversationGroup:(NSString*)oldName newName:(NSString*)newName succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(renameConversationGroup(oldName:newName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 添加会话到一个会话分组
|
||||
*/
|
||||
- (void)addConversationsToGroup:(NSString *)groupName conversationIDList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addConversationsToGroup(groupName:conversationIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.6 从一个会话分组中删除会话
|
||||
*/
|
||||
- (void)deleteConversationsFromGroup:(NSString *)groupName conversationIDList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteConversationsFromGroup(groupName:conversationIDList:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话变更监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMConversationListener <NSObject>
|
||||
@optional
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 会话基础通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 同步服务器会话开始,SDK 会在登录成功或者断网重连后自动同步服务器会话,您可以监听这个事件做一些 UI 进度展示操作。
|
||||
*/
|
||||
- (void)onSyncServerStart;
|
||||
|
||||
/**
|
||||
* 同步服务器会话完成,如果会话有变更,会通过 onNewConversation | onConversationChanged 回调告知客户
|
||||
*/
|
||||
- (void)onSyncServerFinish;
|
||||
|
||||
/**
|
||||
* 同步服务器会话失败
|
||||
*/
|
||||
- (void)onSyncServerFailed;
|
||||
|
||||
/**
|
||||
* 有新的会话(比如收到一个新同事发来的单聊消息、或者被拉入了一个新的群组中),可以根据会话的 orderKey 重新对会话列表做排序。
|
||||
*/
|
||||
- (void)onNewConversation:(NSArray<V2TIMConversation*> *) conversationList NS_SWIFT_NAME(onNewConversation(conversationList:));
|
||||
|
||||
/**
|
||||
* 某些会话的关键信息发生变化(未读计数发生变化、最后一条消息被更新等等),可以根据会话的 orderKey 重新对会话列表做排序。
|
||||
*/
|
||||
- (void)onConversationChanged:(NSArray<V2TIMConversation*> *) conversationList NS_SWIFT_NAME(onConversationChanged(conversationList:));
|
||||
|
||||
/**
|
||||
* 会话被删除的通知(7.2 及以上版本支持)
|
||||
*
|
||||
* @note
|
||||
* conversationIDList 表示被删除的会话唯一 ID 列表。C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)onConversationDeleted:(NSArray<NSString *> *)conversationIDList NS_SWIFT_NAME(onConversationDeleted(conversationIDList:));
|
||||
|
||||
/**
|
||||
* 全部会话未读总数变更的通知(5.3.425 及以上版本支持)
|
||||
* @note
|
||||
* - 当您调用 getTotalUnreadMessageCount 获取全部会话未读总数以后,任意会话的未读数发生变化时,SDK 都会通过该回调把最新的未读总数通知给您。
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)onTotalUnreadMessageCountChanged:(UInt64)totalUnreadCount NS_SWIFT_NAME(onTotalUnreadMessageCountChanged(totalUnreadCount:));
|
||||
|
||||
/**
|
||||
* 根据 filter 过滤的未读消息总数变更通知(7.0 及以上版本支持)
|
||||
* @note
|
||||
* - 您可以调用 subscribeUnreadMessageCountByFilter 注册监听指定 filter 下的未读总数变化,SDK 通过这个回调把最新的未读总数通知给您。
|
||||
* - 您可以注册监听多个不同 filter 下的未读总数变化,这个回调的 filter 参数就是注册监听时指定的 filter,该 filter 携带了 conversationType、conversationGroup 和 markType 三个字段,通过判断这三字段是不是都相同,来区分出不同的 filter。
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE_EXCEPT_AT 的会话。
|
||||
*/
|
||||
- (void)onUnreadMessageCountChangedByFilter:(V2TIMConversationListFilter *)filter totalUnreadCount:(UInt64)totalUnreadCount NS_SWIFT_NAME(onUnreadMessageCountChangedByFilter(filter:totalUnreadCount:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 会话分组相关通知(从 6.5 版本开始支持)
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 会话分组被创建
|
||||
*/
|
||||
- (void)onConversationGroupCreated:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList NS_SWIFT_NAME(onConversationGroupCreated(groupName:conversationList:));
|
||||
|
||||
/**
|
||||
* 会话分组被删除
|
||||
*/
|
||||
- (void)onConversationGroupDeleted:(NSString * _Nullable)groupName NS_SWIFT_NAME(onConversationGroupDeleted(groupName:));
|
||||
|
||||
/**
|
||||
* 会话分组名变更
|
||||
*/
|
||||
- (void)onConversationGroupNameChanged:(NSString * _Nullable)oldName newName:(NSString * _Nullable)newName NS_SWIFT_NAME(onConversationGroupNameChanged(oldName:newName:));
|
||||
|
||||
/**
|
||||
* 会话分组新增会话
|
||||
*/
|
||||
- (void)onConversationsAddedToGroup:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList NS_SWIFT_NAME(onConversationsAddedToGroup(groupName:conversationList:));
|
||||
|
||||
/**
|
||||
* 会话分组删除会话
|
||||
* @note
|
||||
* - reason 表示会话从所在分组删除的原因,其取值有:
|
||||
* - 当 reason 为 0 时,表示由用户主动调用 deleteConversationsFromGroup 触发
|
||||
* - 当 reason 为 1 时,表示添加到分组的会话数量超过 1000,最早添加进分组的会话被淘汰
|
||||
*/
|
||||
- (void)onConversationsDeletedFromGroup:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList reason:(uint32_t)reason NS_SWIFT_NAME(onConversationsDeletedFromGroup(groupName:conversationList:reason:));
|
||||
|
||||
/**
|
||||
* 会话分组删除会话(待废弃接口,请使用 onConversationsDeletedFromGroup:conversationList:reason: 接口)
|
||||
*/
|
||||
- (void)onConversationsDeletedFromGroup:(NSString * _Nullable)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList NS_SWIFT_NAME(onConversationsDeletedFromGroup(groupName:conversationList:)) __attribute__((deprecated("use onConversationsDeletedFromGroup:conversationList:reason: instead")));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话对象 V2TIMConversation
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 会话对象
|
||||
V2TIM_EXPORT @interface V2TIMConversation : NSObject
|
||||
|
||||
/// 会话类型
|
||||
@property(nonatomic,assign,readonly) V2TIMConversationType type;
|
||||
|
||||
/// 会话唯一 ID,如果是 C2C 单聊,组成方式为 c2c_userID,如果是群聊,组成方式为 group_groupID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *conversationID;
|
||||
|
||||
/// 如果会话类型为 C2C 单聊,userID 会存储对方的用户ID,否则为 nil
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *userID;
|
||||
|
||||
/// 如果会话类型为群聊,groupID 会存储当前群的群 ID,否则为 nil
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *groupID;
|
||||
|
||||
/// 如果会话类型为群聊,groupType 为当前群类型,否则为 nil
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *groupType;
|
||||
|
||||
/// 会话展示名称(群组:群名称 >> 群 ID;C2C:对方好友备注 >> 对方昵称 >> 对方的 userID)
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *showName;
|
||||
|
||||
/// 会话展示头像(群组:群头像;C2C:对方头像)
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *faceUrl;
|
||||
|
||||
/// 会话未读消息数量,直播群(AVChatRoom)不支持未读计数,默认为 0
|
||||
@property(nonatomic,assign,readonly) int unreadCount;
|
||||
|
||||
/// 消息接收选项(接收 | 接收但不提醒 | 不接收)
|
||||
@property(nonatomic,assign,readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/**
|
||||
* 会话最后一条消息
|
||||
* @note 5.5.892 以前版本,请您使用 lastMessage -> timestamp 对会话做排序,timestamp 越大,会话越靠前
|
||||
*/
|
||||
@property(nonatomic,strong,readonly,nullable) V2TIMMessage *lastMessage;
|
||||
|
||||
/// 群会话 @ 信息列表,用于展示 "有人@我" 或 "@所有人" 这两种提醒状态
|
||||
@property(nonatomic,strong,readonly,nullable) NSArray<V2TIMGroupAtInfo *> *groupAtInfolist;
|
||||
|
||||
/// 草稿信息,设置草稿信息请调用 setConversationDraft() 接口
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *draftText;
|
||||
|
||||
/// 上次设置草稿时的 UTC 时间戳
|
||||
@property(nonatomic,strong,readonly,nullable) NSDate *draftTimestamp;
|
||||
|
||||
/// 是否置顶
|
||||
@property(nonatomic,assign,readonly) BOOL isPinned;
|
||||
|
||||
/**
|
||||
* 排序字段(5.5.892 及以后版本支持)
|
||||
* @note
|
||||
* - 排序字段 orderKey 是按照会话的激活时间线性递增的一个数字(注意:不是时间戳,因为同一时刻可能会有多个会话被同时激活)
|
||||
* - 5.5.892 及其以后版本,推荐您使用该字段对所有会话进行排序,orderKey 值越大,代表该会话排序越靠前
|
||||
* - 当您 “清空会话所有消息” 或者 “逐个删除会话的所有消息” 之后,会话的 lastMessage 变为空,但会话的 orderKey 不会改变;如果想保持会话的排序位置不变,可以使用该字段对所有会话进行排序
|
||||
*/
|
||||
@property(nonatomic,assign,readonly) NSUInteger orderKey;
|
||||
|
||||
/// 会话标记列表,取值详见 @V2TIMConversationMarkType(从 6.5 版本开始支持)
|
||||
@property(nonatomic,strong,readonly,nullable) NSArray<NSNumber *> * markList;
|
||||
|
||||
/// 会话自定义数据(从 6.5 版本开始支持)
|
||||
@property(nonatomic,strong,readonly,nullable) NSData *customData;
|
||||
|
||||
/// 会话所属分组列表(从 6.5 版本开始支持)
|
||||
@property(nonatomic,strong,readonly,nullable) NSArray<NSString *> *conversationGroupList;
|
||||
|
||||
/// 最新已读消息的 UTC 时间戳,仅对单聊会话生效(从 7.1 版本开始支持)
|
||||
@property(nonatomic,assign,readonly) NSUInteger c2cReadTimestamp;
|
||||
|
||||
/// 已读消息的 sequence,仅对群聊会话生效(从 7.1 版本开始支持)
|
||||
@property(nonatomic,assign,readonly) NSUInteger groupReadSequence;
|
||||
|
||||
@end
|
||||
|
||||
/// 会话 filter
|
||||
V2TIM_EXPORT @interface V2TIMConversationListFilter : NSObject
|
||||
|
||||
/// C2C 或群会话(填 0 代表不过滤此项)
|
||||
@property(nonatomic,assign) V2TIMConversationType type;
|
||||
|
||||
/// 会话分组名称
|
||||
/// 不设置表示不过滤此项,设置为 @"" 代表过滤不属于任何分组的会话
|
||||
@property(nonatomic,strong,nullable) NSString *conversationGroup;
|
||||
|
||||
/// 标记类型,取值详见 @V2TIMConversationMarkType
|
||||
/// 不设置表示不过滤此项,设置为 0 代表过滤不含任何标记的会话
|
||||
@property(nonatomic,assign) NSUInteger markType;
|
||||
|
||||
/// 会话未读数
|
||||
/// 不设置表示不过滤此项,设置为 YES 代表过滤含未读数的会话;设置为 NO 代表过滤不含未读数的会话
|
||||
@property(nonatomic,assign) BOOL hasUnreadCount;
|
||||
|
||||
/// 会话 @ 信息
|
||||
/// 不设置表示不过滤此项,设置为 YES 代表过滤含群 @ 消息的会话;设置为 NO 代表过滤不含群 @ 消息的会话
|
||||
@property(nonatomic,assign) BOOL hasGroupAtInfo;
|
||||
@end
|
||||
|
||||
/// @ 信息
|
||||
V2TIM_EXPORT @interface V2TIMGroupAtInfo : NSObject
|
||||
/// @ 消息序列号,即带有 “@我” 或者 “@所有人” 标记的消息的序列号
|
||||
@property(nonatomic,assign,readonly) uint64_t seq;
|
||||
|
||||
/// @ 提醒类型,分成 “@我” 、“@所有人” 以及 “@我并@所有人” 三类
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupAtType atType;
|
||||
|
||||
@end
|
||||
|
||||
/// 会话操作结果
|
||||
V2TIM_EXPORT @interface V2TIMConversationOperationResult : NSObject
|
||||
|
||||
/// 会话 ID
|
||||
@property(nonatomic,strong,nullable) NSString* conversationID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,838 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Friendship
|
||||
//
|
||||
// 关系链接口,里面包含了好友的添加、删除,黑名单的添加、删除等逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMFriendshipListener;
|
||||
@class V2TIMFriendOperationResult;
|
||||
@class V2TIMFriendInfoResult;
|
||||
@class V2TIMFriendInfo;
|
||||
@class V2TIMFriendCheckResult;
|
||||
@class V2TIMFriendApplicationResult;
|
||||
@class V2TIMFriendAddApplication;
|
||||
@class V2TIMFriendApplication;
|
||||
@class V2TIMFriendGroup;
|
||||
@class V2TIMFriendSearchParam;
|
||||
@class V2TIMOfficialAccountInfo;
|
||||
@class V2TIMOfficialAccountInfoResult;
|
||||
@class V2TIMFollowOperationResult;
|
||||
@class V2TIMFollowInfo;
|
||||
@class V2TIMFollowTypeCheckResult;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Friendship)
|
||||
|
||||
/// 获取好友列表成功回调
|
||||
typedef void (^V2TIMFriendInfoListSucc)(NSArray<V2TIMFriendInfo *> *infoList);
|
||||
/// 获取指定好友信息成功回调
|
||||
typedef void (^V2TIMFriendInfoResultListSucc)(NSArray<V2TIMFriendInfoResult *> *resultList);
|
||||
/// 好友操作成功回调
|
||||
typedef void (^V2TIMFriendOperationResultSucc)(V2TIMFriendOperationResult *result);
|
||||
/// 好友列表操作成功回调
|
||||
typedef void (^V2TIMFriendOperationResultListSucc)(NSArray<V2TIMFriendOperationResult *> *resultList);
|
||||
/// 好友检查成功回调
|
||||
typedef void (^V2TIMFriendCheckResultListSucc)(NSArray<V2TIMFriendCheckResult *> *resultList);
|
||||
/// 获取群分组列表成功回调
|
||||
typedef void (^V2TIMFriendGroupListSucc)(NSArray<V2TIMFriendGroup *> *groups);
|
||||
/// 获取好友申请列表成功回调
|
||||
typedef void (^V2TIMFriendApplicationResultSucc)(V2TIMFriendApplicationResult *result);
|
||||
/// 获取公众号列表成功回调
|
||||
typedef void (^V2TIMOfficialAccountInfoResultListSucc)(NSArray<V2TIMOfficialAccountInfoResult *> *resultList);
|
||||
/// 关注/取关用户操作成功的回调
|
||||
typedef void (^V2TIMFollowOperationResultListSucc)(NSArray<V2TIMFollowOperationResult *> *resultList);
|
||||
/// 获取自己 关注/粉丝/互关 列表成功的回调
|
||||
typedef void (^V2TIMUserInfoResultSucc)(NSString * _Nullable nextCursor, NSArray<V2TIMUserFullInfo *> *userInfoList);
|
||||
/// 获取用户关注数量信息成功的回调
|
||||
typedef void (^V2TIMFollowInfoResultListSucc)(NSArray<V2TIMFollowInfo *> *resultList);
|
||||
/// 用户关注类型检查成功回调
|
||||
typedef void (^V2TIMFollowTypeCheckResultListSucc)(NSArray<V2TIMFollowTypeCheckResult *> *resultList);
|
||||
|
||||
/// 好友申请类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendApplicationType) {
|
||||
V2TIM_FRIEND_APPLICATION_COME_IN = 1, ///< 别人发给我的
|
||||
V2TIM_FRIEND_APPLICATION_SEND_OUT = 2, ///< 我发给别人的
|
||||
V2TIM_FRIEND_APPLICATION_BOTH = 3, ///< 别人发给我的 和 我发给别人的。仅拉取时有效
|
||||
};
|
||||
|
||||
/// 好友类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendType) {
|
||||
V2TIM_FRIEND_TYPE_SINGLE = 1, ///< 单向好友
|
||||
V2TIM_FRIEND_TYPE_BOTH = 2, ///< 双向好友
|
||||
};
|
||||
|
||||
/// 好友关系类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendRelationType) {
|
||||
V2TIM_FRIEND_RELATION_TYPE_NONE = 0x0, ///< 不是好友
|
||||
V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST = 0x1, ///< 对方在我的好友列表中
|
||||
V2TIM_FRIEND_RELATION_TYPE_IN_OTHER_FRIEND_LIST = 0x2, ///< 我在对方的好友列表中
|
||||
V2TIM_FRIEND_RELATION_TYPE_BOTH_WAY = 0x3, ///< 互为好友
|
||||
};
|
||||
|
||||
/// 好友申请接受类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendAcceptType) {
|
||||
V2TIM_FRIEND_ACCEPT_AGREE = 0, ///< 接受加好友(建立单向好友)
|
||||
V2TIM_FRIEND_ACCEPT_AGREE_AND_ADD = 1, ///< 接受加好友并加对方为好友(建立双向好友)
|
||||
};
|
||||
|
||||
/// 关注类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFollowType) {
|
||||
V2TIM_FOLLOW_TYPE_NONE = 0x0, ///< 无任何关注关系
|
||||
V2TIM_FOLLOW_TYPE_IN_MY_FOLLOWING_LIST = 0x1, ///< 对方在我的关注列表中
|
||||
V2TIM_FOLLOW_TYPE_IN_MY_FOLLOWERS_LIST = 0x2, ///< 对方在我的粉丝列表中
|
||||
V2TIM_FOLLOW_TYPE_IN_BOTH_FOLLOWERS_LIST = 0x3, ///< 对方与我互相关注
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关系链和用户资料监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 添加关系链监听器
|
||||
*/
|
||||
- (void)addFriendListener:(id<V2TIMFriendshipListener>)listener NS_SWIFT_NAME(addFriendListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除关系链监听器
|
||||
*/
|
||||
- (void)removeFriendListener:(id<V2TIMFriendshipListener>)listener NS_SWIFT_NAME(removeFriendListener(listener:));
|
||||
|
||||
/**
|
||||
* 设置关系链监听器(待废弃接口,请使用 addFriendListener 和 removeFriendListener 接口)
|
||||
*/
|
||||
- (void)setFriendListener:(id<V2TIMFriendshipListener>)listener __attribute__((deprecated("use addFriendListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友添加、删除、列表获取、资料设置相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 获取好友列表
|
||||
*/
|
||||
- (void)getFriendList:(V2TIMFriendInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getFriendList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 获取指定好友资料
|
||||
* @param userIDList 好友 userID 列表
|
||||
* - ID 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
*/
|
||||
- (void)getFriendsInfo:(NSArray<NSString *> *)userIDList succ:(V2TIMFriendInfoResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.3 设置指定好友资料
|
||||
*/
|
||||
- (void)setFriendInfo:(V2TIMFriendInfo *)info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setFriendInfo(info:succ:fail:));
|
||||
|
||||
|
||||
/**
|
||||
* 2.4 搜索好友(5.4.666 及以上版本支持)
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17474)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
* - 该接口返回的是本地存储的用户资料,包含好友和非好友资料,您可以根据 V2TIMFriendInfoResult 中的 getRelation 来判断是否为好友。
|
||||
*/
|
||||
- (void)searchFriends:(V2TIMFriendSearchParam *)searchParam succ:(V2TIMFriendInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchFriends(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 添加好友
|
||||
*/
|
||||
- (void)addFriend:(V2TIMFriendAddApplication *)application succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addFriend(application:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.6 删除好友
|
||||
* @param userIDList 要删除的好友 userID 列表
|
||||
* - ID 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
* @param deleteType 删除类型(单向好友、双向好友)
|
||||
*/
|
||||
- (void)deleteFromFriendList:(NSArray *)userIDList deleteType:(V2TIMFriendType)deleteType succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteFromFriendList(userIDList:deleteType:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.7 检查指定用户的好友关系
|
||||
* @param userIDList 要检查的 userID 列表
|
||||
* @param checkType 检查类型 (单向好友检查、双向好友检查)
|
||||
* @param succ 成功后的回调
|
||||
* @param fail 失败后的回调
|
||||
*
|
||||
* @note checkType 的使用需要注意:
|
||||
* - checkType 如果传入 V2TIM_FRIEND_TYPE_SINGLE,结果返回:V2TIM_FRIEND_RELATION_TYPE_NONE、V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST 两种情况
|
||||
* - checkType 如果传入 V2TIM_FRIEND_TYPE_BOTH,结果返回:V2TIM_FRIEND_RELATION_TYPE_NONE、V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST、
|
||||
* V2TIM_FRIEND_RELATION_TYPE_IN_OTHER_FRIEND_LIST、V2TIM_FRIEND_RELATION_TYPE_BOTH_WAY 四种情况
|
||||
*/
|
||||
- (void)checkFriend:(NSArray<NSString *> *)userIDList checkType:(V2TIMFriendType)checkType succ:(V2TIMFriendCheckResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(checkFriend(userIDList:checkType:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友申请、删除相关逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 3.1 获取好友申请列表
|
||||
*
|
||||
* @note
|
||||
* - 好友申请列表包括发起的好友申请和收到的好友申请。
|
||||
* - 最多支持100个。
|
||||
*/
|
||||
- (void)getFriendApplicationList:(V2TIMFriendApplicationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getFriendApplicationList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.2 同意好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
* @param acceptType 建立单向/双向好友关系
|
||||
*/
|
||||
- (void)acceptFriendApplication:(V2TIMFriendApplication *)application type:(V2TIMFriendAcceptType)acceptType succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(acceptFriendApplication(application:acceptType:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.3 同意好友申请,并设置备注
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
* @param acceptType 建立单向/双向好友关系
|
||||
* - @ref V2TIMFriendApplication.V2TIM_FRIEND_ACCEPT_AGREE:同意添加单向好友
|
||||
* - @ref V2TIMFriendApplication.V2TIM_FRIEND_ACCEPT_AGREE_AND_ADD:同意并添加为双向好友
|
||||
* @param remark 好友备注
|
||||
*/
|
||||
- (void)acceptFriendApplication:(V2TIMFriendApplication *)application type:(V2TIMFriendAcceptType)acceptType remark:(NSString* _Nullable)remark succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(acceptFriendApplication(application:acceptType:remark:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 拒绝好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
*/
|
||||
- (void)refuseFriendApplication:(V2TIMFriendApplication *)application succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(refuseFriendApplication(application:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 删除好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
*/
|
||||
- (void)deleteFriendApplication:(V2TIMFriendApplication *)application succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteFriendApplication(application:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 设置好友申请已读
|
||||
*/
|
||||
- (void)setFriendApplicationRead:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setFriendApplicationRead(succ:fail:));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 黑名单
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 添加用户到黑名单
|
||||
*/
|
||||
- (void)addToBlackList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addToBlackList(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.2 把用户从黑名单中删除
|
||||
*/
|
||||
- (void)deleteFromBlackList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteFromBlackList(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.3 获取黑名单列表
|
||||
*/
|
||||
- (void)getBlackList:(V2TIMFriendInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getBlackList(succ:fail:));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友分组
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 5.1 新建好友分组
|
||||
*
|
||||
* @param groupName 分组名称
|
||||
* @param userIDList 要添加到分组中的好友
|
||||
*/
|
||||
- (void)createFriendGroup:(NSString *)groupName userIDList:(NSArray * _Nullable)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createFriendGroup(groupName:userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.2 获取分组信息
|
||||
*
|
||||
* @param groupNameList 要获取信息的好友分组名称列表,传入 nil 获得所有分组信息
|
||||
*/
|
||||
- (void)getFriendGroupList:(NSArray * _Nullable)groupNameList succ:(V2TIMFriendGroupListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getFriendGroupList(groupNameList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.3 删除好友分组
|
||||
*/
|
||||
- (void)deleteFriendGroup:(NSArray *)groupNameList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteFriendGroup(groupNameList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.4 修改好友分组的名称
|
||||
*/
|
||||
- (void)renameFriendGroup:(NSString*)oldName newName:(NSString*)newName succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(renameFriendGroup(oldName:newName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.5 添加好友到一个好友分组
|
||||
*/
|
||||
- (void)addFriendsToFriendGroup:(NSString *)groupName userIDList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(addFriendsToFriendGroup(groupName:userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.6 从好友分组中删除好友
|
||||
*/
|
||||
- (void)deleteFriendsFromFriendGroup:(NSString *)groupName userIDList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(deleteFriendsFromFriendGroup(groupName:userIDList:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 公众号订阅、取消订阅、获取公众号列表接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 6.1 订阅公众号(7.6 及其以上版本支持)
|
||||
*/
|
||||
- (void)subscribeOfficialAccount:(NSString *)officialAccountID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(subscribeOfficialAccount(officialAccountID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 6.2 取消订阅公众号(7.6 及其以上版本支持)
|
||||
*/
|
||||
- (void)unsubscribeOfficialAccount:(NSString *)officialAccountID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(unsubscribeOfficialAccount(officialAccountID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 6.3 获取公众号列表(7.6 及其以上版本支持)
|
||||
* @note officialAccountIDList 传空时,获取订阅的公众号列表
|
||||
*/
|
||||
- (void)getOfficialAccountsInfo:(NSArray<NSString *> * _Nullable)officialAccountIDList succ:(V2TIMOfficialAccountInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getOfficialAccountsInfo(officialAccountIDList:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关注/粉丝 相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 7.1 关注用户(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 一次最多支持关注 20 个用户。
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)followUser:(NSArray<NSString *> *)userIDList succ:(V2TIMFollowOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(followUser(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.2 取消关注用户(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 一次最多支持取消关注 20 个用户。
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)unfollowUser:(NSArray<NSString *> *)userIDList succ:(V2TIMFollowOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(unfollowUser(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.3 获取我的关注列表(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*
|
||||
* @param nextCursor 分页拉取标志,第一次拉取填 nil 或 @"",回调成功如果 nextCursor 不为 @"",需要分页,可以传入该值再次拉取,直至 nextCursor 返回为 @""
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getMyFollowingList:(NSString * _Nullable)nextCursor succ:(V2TIMUserInfoResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getMyFollowingList(nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.4 获取我的粉丝列表(从 7.8 版本开始支持)
|
||||
*
|
||||
* @param nextCursor 分页拉取标志,第一次拉取填 nil 或 @"",回调成功如果 nextCursor 不为 @"",需要分页,可以传入该值再次拉取,直至 nextCursor 返回为 @""
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getMyFollowersList:(NSString * _Nullable)nextCursor succ:(V2TIMUserInfoResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getMyFollowersList(nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.5 获取我的互关列表(从 7.8 版本开始支持)
|
||||
*
|
||||
* @param nextCursor 分页拉取标志,第一次拉取填 nil 或 @"",回调成功如果 nextCursor 不为 @"",需要分页,可以传入该值再次拉取,直至 nextCursor 返回为 @""
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getMutualFollowersList:(NSString * _Nullable)nextCursor succ:(V2TIMUserInfoResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getMutualFollowersList(nextCursor:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.6 获取指定用户的 关注/粉丝/互关 数量信息(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getUserFollowInfo:(NSArray *)userIDList succ:(V2TIMFollowInfoResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getUserFollowInfo(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 7.7 检查指定用户的关注类型(从 7.8 版本开始支持)
|
||||
*
|
||||
* @note
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)checkFollowType:(NSArray<NSString *> *)userIDList succ:(V2TIMFollowTypeCheckResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(checkFollowType(userIDList:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 资料关系链回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 资料关系链回调
|
||||
V2TIM_EXPORT @protocol V2TIMFriendshipListener <NSObject>
|
||||
@optional
|
||||
/**
|
||||
* 好友申请新增通知,两种情况会收到这个回调:
|
||||
* 1. 自己申请加别人好友
|
||||
* 2. 别人申请加自己好友
|
||||
*/
|
||||
- (void)onFriendApplicationListAdded:(NSArray<V2TIMFriendApplication *> *)applicationList NS_SWIFT_NAME(onFriendApplicationListAdded(applicationList:));
|
||||
|
||||
/**
|
||||
* 好友申请删除通知,四种情况会收到这个回调:
|
||||
* 1. 调用 deleteFriendApplication 主动删除好友申请
|
||||
* 2. 调用 refuseFriendApplication 拒绝好友申请
|
||||
* 3. 调用 acceptFriendApplication 同意好友申请
|
||||
* 4. 申请加别人好友被拒绝
|
||||
*/
|
||||
- (void)onFriendApplicationListDeleted:(NSArray *)userIDList NS_SWIFT_NAME(onFriendApplicationListDeleted(userIDList:));
|
||||
|
||||
/**
|
||||
* 好友申请已读通知,如果调用 setFriendApplicationRead 设置好友申请列表已读,会收到这个回调(主要用于多端同步)
|
||||
*/
|
||||
- (void)onFriendApplicationListRead NS_SWIFT_NAME(onFriendApplicationListRead());
|
||||
|
||||
/**
|
||||
* 好友新增通知
|
||||
*/
|
||||
- (void)onFriendListAdded:(NSArray<V2TIMFriendInfo *>*)infoList NS_SWIFT_NAME(onFriendListAdded(infoList:));
|
||||
|
||||
/**
|
||||
* 好友删除通知,两种情况会收到这个回调:
|
||||
* 1. 自己删除好友(单向和双向删除都会收到回调)
|
||||
* 2. 好友把自己删除(双向删除会收到)
|
||||
*/
|
||||
- (void)onFriendListDeleted:(NSArray*)userIDList NS_SWIFT_NAME(onFriendListDeleted(userIDList:));
|
||||
|
||||
/**
|
||||
* 黑名单新增通知
|
||||
*/
|
||||
- (void)onBlackListAdded:(NSArray<V2TIMFriendInfo *>*)infoList NS_SWIFT_NAME(onBlackListAdded(infoList:));
|
||||
|
||||
/**
|
||||
* 黑名单删除通知
|
||||
*/
|
||||
- (void)onBlackListDeleted:(NSArray*)userIDList NS_SWIFT_NAME(onBlackListDeleted(userIDList:));
|
||||
|
||||
/**
|
||||
* 好友资料变更通知
|
||||
*/
|
||||
- (void)onFriendProfileChanged:(NSArray<V2TIMFriendInfo *> *)infoList NS_SWIFT_NAME(onFriendProfileChanged(infoList:));
|
||||
|
||||
/**
|
||||
* 好友分组被创建
|
||||
*/
|
||||
- (void)onFriendGroupCreated:(NSString * _Nullable)groupName friendInfoList:(NSArray<V2TIMFriendInfo *> *)friendInfoList NS_SWIFT_NAME(onFriendGroupCreated(groupName:friendInfoList:));
|
||||
|
||||
/**
|
||||
* 好友分组被删除
|
||||
*/
|
||||
- (void)onFriendGroupDeleted:(NSArray<NSString *> *)groupNameList NS_SWIFT_NAME(onFriendGroupDeleted(groupNameList:));
|
||||
|
||||
/**
|
||||
* 好友分组名变更
|
||||
*/
|
||||
- (void)onFriendGroupNameChanged:(NSString * _Nullable)oldGroupName newGroupName:(NSString * _Nullable)newGroupName NS_SWIFT_NAME(onFriendGroupNameChanged(oldGroupName:newGroupName:));
|
||||
|
||||
/**
|
||||
* 好友分组新增好友
|
||||
*/
|
||||
- (void)onFriendsAddedToGroup:(NSString * _Nullable)groupName friendInfoList:(NSArray<V2TIMFriendInfo *> *)friendInfoList NS_SWIFT_NAME(onFriendsAddedToGroup(groupName:friendInfoList:));
|
||||
|
||||
/**
|
||||
* 好友分组删除好友
|
||||
*/
|
||||
- (void)onFriendsDeletedFromGroup:(NSString * _Nullable)groupName friendIDList:(NSArray<NSString *> *)friendIDList NS_SWIFT_NAME(onFriendsDeletedFromGroup(groupName:friendIDList:));
|
||||
|
||||
/**
|
||||
* 订阅公众号通知
|
||||
*/
|
||||
- (void)onOfficialAccountSubscribed:(V2TIMOfficialAccountInfo *)officialAccountInfo NS_SWIFT_NAME(onOfficialAccountSubscribed(officialAccountInfo:));
|
||||
|
||||
/**
|
||||
* 取消订阅公众号通知
|
||||
*/
|
||||
- (void)onOfficialAccountUnsubscribed:(NSString * _Nullable)officialAccountID NS_SWIFT_NAME(onOfficialAccountUnsubscribed(officialAccountID:));
|
||||
|
||||
/**
|
||||
* 订阅的公众号被删除通知
|
||||
*/
|
||||
- (void)onOfficialAccountDeleted:(NSString * _Nullable)officialAccountID NS_SWIFT_NAME(onOfficialAccountDeleted(officialAccountID:));
|
||||
|
||||
/**
|
||||
* 订阅的公众号资料更新通知
|
||||
*/
|
||||
- (void)onOfficialAccountInfoChanged:(V2TIMOfficialAccountInfo *)officialAccountInfo NS_SWIFT_NAME(onOfficialAccountInfoChanged(officialAccountInfo:));
|
||||
|
||||
/**
|
||||
* 关注列表变更通知
|
||||
*/
|
||||
- (void)onMyFollowingListChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList isAdd:(BOOL)isAdd NS_SWIFT_NAME(onMyFollowingListChanged(userInfoList:isAdd:));
|
||||
|
||||
/**
|
||||
* 粉丝列表变更通知
|
||||
*/
|
||||
- (void)onMyFollowersListChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList isAdd:(BOOL)isAdd NS_SWIFT_NAME(onMyFollowersListChanged(userInfoList:isAdd:));
|
||||
|
||||
/**
|
||||
* 互关列表变更通知
|
||||
*/
|
||||
- (void)onMutualFollowersListChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList isAdd:(BOOL)isAdd NS_SWIFT_NAME(onMutualFollowersListChanged(userInfoList:isAdd:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友资料获取结果
|
||||
V2TIM_EXPORT @interface V2TIMFriendInfoResult : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 返结果表述
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 好友类型
|
||||
@property(nonatomic,assign) V2TIMFriendRelationType relation;
|
||||
|
||||
/// 好友个人资料,如果不是好友,除了 userID 字段,其他字段都为空
|
||||
@property(nonatomic,strong) V2TIMFriendInfo *friendInfo;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友资料
|
||||
V2TIM_EXPORT @interface V2TIMFriendInfo : NSObject
|
||||
|
||||
/// 好友 ID
|
||||
@property(nonatomic,strong,nullable) NSString *userID;
|
||||
|
||||
/**
|
||||
* 好友备注
|
||||
*
|
||||
* @note
|
||||
* - 备注长度最长不得超过 96 个字节;
|
||||
* - 字段描述详见 [控制台](https://cloud.tencent.com/document/product/269/1501#.E6.A0.87.E9.85.8D.E5.A5.BD.E5.8F.8B.E5.AD.97.E6.AE.B5)。
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString *friendRemark;
|
||||
|
||||
/// 添加好友的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint64_t friendAddTime;
|
||||
|
||||
/// 好友自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 好友自定义字段) 配置好友自定义字段,然后再调用该接口进行设置,key 值不需要加 Tag_SNS_Custom_ 前缀。
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *> *friendCustomInfo;
|
||||
|
||||
/**
|
||||
* 好友所在分组列表
|
||||
*
|
||||
* @note
|
||||
* - 最多支持 32 个分组;
|
||||
* - 不允许分组名为空;
|
||||
* - 分组名长度不得超过 30 个字节;
|
||||
* - 同一个好友可以有多个不同的分组。
|
||||
* - 字段描述详见 [控制台](https://cloud.tencent.com/document/product/269/1501#.E6.A0.87.E9.85.8D.E5.A5.BD.E5.8F.8B.E5.AD.97.E6.AE.B5)。
|
||||
*/
|
||||
@property(nonatomic,strong,readonly) NSArray *friendGroups;
|
||||
|
||||
/// 好友个人资料
|
||||
@property(nonatomic,strong,readonly) V2TIMUserFullInfo *userFullInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友申请相关对象
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 加好友
|
||||
V2TIM_EXPORT @interface V2TIMFriendAddApplication : NSObject
|
||||
|
||||
/// 用户 userID(必填)
|
||||
@property (nonatomic,strong) NSString* userID;
|
||||
|
||||
/// 备注(备注最大96字节)
|
||||
@property (nonatomic,strong,nullable) NSString* friendRemark;
|
||||
|
||||
/// 预分组名(最大96字节)
|
||||
@property (nonatomic,strong,nullable) NSString* friendGroup;
|
||||
|
||||
/// 请求说明(最大120字节)
|
||||
@property (nonatomic,strong,nullable) NSString* addWording;
|
||||
|
||||
/// 添加来源
|
||||
@property (nonatomic,strong,nullable) NSString* addSource;
|
||||
|
||||
/// 加好友方式
|
||||
@property (nonatomic,assign) V2TIMFriendType addType;
|
||||
|
||||
@end
|
||||
|
||||
/// 好友申请列表
|
||||
V2TIM_EXPORT @interface V2TIMFriendApplicationResult : NSObject
|
||||
|
||||
/// 好友申请未读数量
|
||||
@property(nonatomic,assign) uint64_t unreadCount;
|
||||
|
||||
/// 好友申请列表
|
||||
@property(nonatomic,strong) NSMutableArray<V2TIMFriendApplication *> * applicationList;
|
||||
|
||||
@end
|
||||
|
||||
/// 好友申请
|
||||
V2TIM_EXPORT @interface V2TIMFriendApplication : NSObject
|
||||
|
||||
/// 用户标识
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* nickName;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* faceUrl;
|
||||
|
||||
/// 添加好友的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint64_t addTime;
|
||||
|
||||
/// 来源
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* addSource;
|
||||
|
||||
/// 加好友附言
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* addWording;
|
||||
|
||||
/// 好友申请类型
|
||||
@property(nonatomic,assign,readonly) V2TIMFriendApplicationType type;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友关系链检查结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友关系链检查结果
|
||||
V2TIM_EXPORT @interface V2TIMFriendCheckResult : NSObject
|
||||
|
||||
/// 用户id
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 检查结果
|
||||
@property(nonatomic,assign) V2TIMFriendRelationType relationType;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友操作结果(添加、删除、加黑名单、添加分组等)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友操作结果(添加、删除、加黑名单、添加分组等)
|
||||
V2TIM_EXPORT @interface V2TIMFriendOperationResult : NSObject
|
||||
|
||||
/// 用户Id
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友分组
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友分组
|
||||
V2TIM_EXPORT @interface V2TIMFriendGroup : NSObject
|
||||
/// 好友分组名称
|
||||
@property(nonatomic,strong,nullable) NSString* groupName;
|
||||
|
||||
/// 分组成员数量
|
||||
@property(nonatomic,assign) uint64_t userCount;
|
||||
|
||||
/// 分组成员列表
|
||||
@property(nonatomic,strong) NSMutableArray* friendList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMFriendSearchParam : NSObject
|
||||
|
||||
/// 搜索的关键字列表,关键字列表最多支持 5 个
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 设置是否搜索 userID
|
||||
@property(nonatomic, assign) BOOL isSearchUserID;
|
||||
|
||||
/// 是否设置搜索昵称
|
||||
@property(nonatomic, assign) BOOL isSearchNickName;
|
||||
|
||||
/// 是否设置搜索备注
|
||||
@property(nonatomic, assign) BOOL isSearchRemark;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 公众号资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMOfficialAccountInfo : NSObject
|
||||
|
||||
/// 公众号 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* officialAccountID;
|
||||
|
||||
/// 公众号名称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* officialAccountName;
|
||||
|
||||
/// 公众号头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* faceUrl;
|
||||
|
||||
/// 公众号所有者
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* ownerUserID;
|
||||
|
||||
/// 公众号组织
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* organization;
|
||||
|
||||
/// 公众号简介
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* introduction;
|
||||
|
||||
/// 公众号自定义数据
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* customData;
|
||||
|
||||
/// 公众号创建时间,单位:秒
|
||||
@property(nonatomic,assign,readonly) uint64_t createTime;
|
||||
|
||||
/// 公众号订阅者数量
|
||||
@property(nonatomic,assign,readonly) uint64_t subscriberCount;
|
||||
|
||||
/// 订阅公众号的时间,单位:秒
|
||||
@property(nonatomic,assign,readonly) uint64_t subscribeTime;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 公众号资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 公众号资料获取结果
|
||||
V2TIM_EXPORT @interface V2TIMOfficialAccountInfoResult : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 返回结果表述
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 公众号资料
|
||||
@property(nonatomic,strong) V2TIMOfficialAccountInfo *officialAccountInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关注/取关用户的操作结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 关注/取关用户的操作结果
|
||||
V2TIM_EXPORT @interface V2TIMFollowOperationResult : NSObject
|
||||
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户关注数量信息获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 用户关注数量信息获取结果
|
||||
V2TIM_EXPORT @interface V2TIMFollowInfo : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回结果表述
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString *userID;
|
||||
|
||||
/// 用户的关注数量
|
||||
@property(nonatomic,assign) uint64_t followingCount;
|
||||
|
||||
/// 用户的粉丝数量
|
||||
@property(nonatomic,assign) uint64_t followersCount;
|
||||
|
||||
/// 用户的互关数量
|
||||
@property(nonatomic,assign) uint64_t mutualFollowersCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 指定用户的关注类型检查结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 指定用户的关注类型检查结果
|
||||
V2TIM_EXPORT @interface V2TIMFollowTypeCheckResult : NSObject
|
||||
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultInfo;
|
||||
|
||||
/// 关注类型
|
||||
@property(nonatomic,assign) V2TIMFollowType followType;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,752 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Group
|
||||
//
|
||||
// 群组高级接口,里面包含了群组的高级功能,比如群成员邀请、非群成员申请进群等操作接口。
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
@class V2TIMGroupMemberOperationResult;
|
||||
@class V2TIMGroupApplicationResult;
|
||||
@class V2TIMCreateGroupMemberInfo;
|
||||
@class V2TIMGroupInfo;
|
||||
@class V2TIMGroupInfoResult;
|
||||
@class V2TIMGroupApplication;
|
||||
@class V2TIMGroupSearchParam;
|
||||
@class V2TIMGroupSearchResult;
|
||||
@class V2TIMGroupMemberSearchParam;
|
||||
@class V2TIMGroupMemberSearchResult;
|
||||
@class V2TIMGroupAtInfo;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群相关的高级接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Group)
|
||||
|
||||
/// 获取已加入群列表成功回调
|
||||
typedef void (^V2TIMGroupInfoListSucc)(NSArray<V2TIMGroupInfo *> *groupList);
|
||||
/// 获取指定群列表成功回调
|
||||
typedef void (^V2TIMGroupInfoResultListSucc)(NSArray<V2TIMGroupInfoResult *> *groupResultList);
|
||||
/// 云端搜索群组的结果回调
|
||||
typedef void (^V2TIMGroupSearchResultSucc)(V2TIMGroupSearchResult *searchResult);
|
||||
/// 获取群属性列表成功回调
|
||||
typedef void (^V2TIMGroupAttributeListSucc)(NSMutableDictionary<NSString *,NSString *> *groupAttributeList);
|
||||
/// 获取群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoListSucc)(NSArray<V2TIMGroupMemberFullInfo *> *memberList);
|
||||
/// 获取指定群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoResultSucc)(uint64_t nextSeq, NSArray<V2TIMGroupMemberFullInfo *> *memberList);
|
||||
/// 搜索本地群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoListSearchSucc)(NSDictionary<NSString *, NSArray<V2TIMGroupMemberFullInfo *> *> *memberList);
|
||||
/// 搜索云端群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberSearchResultSucc)(V2TIMGroupMemberSearchResult *searchResult);
|
||||
/// 群成员操作成功回调
|
||||
typedef void (^V2TIMGroupMemberOperationResultListSucc)(NSArray<V2TIMGroupMemberOperationResult*> * resultList);
|
||||
/// 获取好友申请列表成功回调
|
||||
typedef void (^V2TIMGroupApplicationResultSucc)(V2TIMGroupApplicationResult *result);
|
||||
/// 获取群在线人数成功回调
|
||||
typedef void (^V2TIMGroupOnlineMemberCountSucc)(NSInteger count);
|
||||
/// 群计数器操作成功的回调
|
||||
typedef void (^V2TIMGroupCounterResultSucc)(NSDictionary<NSString *, NSNumber *> *groupCounters);
|
||||
|
||||
/// 加群选项
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupAddOpt) {
|
||||
V2TIM_GROUP_ADD_FORBID = 0, ///< 禁止加群
|
||||
V2TIM_GROUP_ADD_AUTH = 1, ///< 需要管理员审批
|
||||
V2TIM_GROUP_ADD_ANY = 2, ///< 任何人可以加入
|
||||
};
|
||||
|
||||
/// 群组操作结果
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberResult) {
|
||||
V2TIM_GROUP_MEMBER_RESULT_FAIL = 0, ///< 操作失败
|
||||
V2TIM_GROUP_MEMBER_RESULT_SUCC = 1, ///< 操作成功
|
||||
V2TIM_GROUP_MEMBER_RESULT_INVALID = 2, ///< 无效操作,加群时已经是群成员,移除群组时不在群内
|
||||
V2TIM_GROUP_MEMBER_RESULT_PENDING = 3, ///< 等待处理,邀请入群时等待审批
|
||||
V2TIM_GROUP_MEMBER_RESULT_OVERLIMIT = 4, ///< 操作失败,创建群指定初始群成员列表或邀请入群时,被邀请者加入的群总数超限
|
||||
};
|
||||
|
||||
/// 群成员角色过滤方式
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberFilter) {
|
||||
V2TIM_GROUP_MEMBER_FILTER_ALL = 0x00, ///< 全部成员
|
||||
V2TIM_GROUP_MEMBER_FILTER_OWNER = 0x01, ///< 群主
|
||||
V2TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02, ///< 管理员
|
||||
V2TIM_GROUP_MEMBER_FILTER_COMMON = 0x04, ///< 普通成员
|
||||
};
|
||||
|
||||
/// 群组未决请求类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationType) {
|
||||
V2TIM_GROUP_JOIN_APPLICATION_NEED_APPROVED_BY_ADMIN = 0x0, ///< 需要群主或管理员审批的申请加群请求
|
||||
V2TIM_GROUP_INVITE_APPLICATION_NEED_APPROVED_BY_INVITEE = 0x1, ///< 需要被邀请者同意的邀请入群请求
|
||||
V2TIM_GROUP_INVITE_APPLICATION_NEED_APPROVED_BY_ADMIN = 0x2, ///< 需要群主或管理员审批的邀请入群请求
|
||||
};
|
||||
|
||||
/// 群组已决标志
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationHandleStatus) {
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_UNHANDLED = 0, ///< 未处理
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_HANDLED_BY_OTHER = 1, ///< 被他人处理
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_HANDLED_BY_SELF = 2, ///< 自己已处理
|
||||
};
|
||||
|
||||
/// 群组已决结果
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationHandleResult) {
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_RESULT_REFUSE = 0, ///< 拒绝申请
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_RESULT_AGREE = 1, ///< 同意申请
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 创建自定义群组(高级版本:可以指定初始的群成员)
|
||||
*
|
||||
* @param info 自定义群组信息,可以设置 groupID | groupType | groupName | notification | introduction | faceURL 字段
|
||||
* @param memberList 指定初始的群成员(直播群 AVChatRoom 不支持指定初始群成员,memberList 请传 nil)
|
||||
*
|
||||
* @note
|
||||
* - 后台限制邀请的群成员个数不能超过 20
|
||||
* - 其他限制请参考 V2TIMManager.h -> createGroup 注释
|
||||
*/
|
||||
- (void)createGroup:(V2TIMGroupInfo*)info memberList:(NSArray<V2TIMCreateGroupMemberInfo *>* _Nullable )memberList succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createGroup(info:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 1.2 获取当前用户已经加入的群列表
|
||||
*
|
||||
* @note
|
||||
* - 直播群(AVChatRoom)不支持该 API
|
||||
* - 该接口有频限检测,SDK 限制调用频率为 1 秒 10 次,超过限制后会报 ERR_SDK_COMM_API_CALL_FREQUENCY_LIMIT (7008)错误
|
||||
*/
|
||||
- (void)getJoinedGroupList:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getJoinedGroupList(succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群资料管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 拉取群资料
|
||||
*
|
||||
* @param groupIDList 群组 ID 列表
|
||||
*/
|
||||
- (void)getGroupsInfo:(NSArray<NSString *> *)groupIDList succ:(V2TIMGroupInfoResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.2 搜索本地群资料(5.4.666 及以上版本支持)
|
||||
* @note 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17474)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchGroups:(V2TIMGroupSearchParam *)searchParam succ:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchGroups(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 搜索云端群资料(8.4 及以上版本支持)
|
||||
* @note 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchCloudGroups:(V2TIMGroupSearchParam *)searchParam succ:(V2TIMGroupSearchResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchCloudGroups(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.4 修改群资料
|
||||
*/
|
||||
- (void)setGroupInfo:(V2TIMGroupInfo *)info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupInfo(info:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.5 初始化群属性,会清空原有的群属性列表
|
||||
*
|
||||
* @note
|
||||
* attributes 的使用限制如下:
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型;
|
||||
* - key 最多支持 16 个,长度限制为 32 字节;
|
||||
* - value 长度限制为 4k;
|
||||
* - 总的 attributes(包括 key 和 value)限制为 16k;
|
||||
* - initGroupAttributes、setGroupAttributes、deleteGroupAttributes 接口合并计算, SDK 限制为 5 秒 10 次,超过后回调 8511 错误码;后台限制 1 秒 5 次,超过后返回 10049 错误码;
|
||||
* - getGroupAttributes 接口 SDK 限制 5 秒 20 次;
|
||||
* - 从 5.6 版本开始,当每次APP启动后初次修改群属性时,请您先调用 getGroupAttributes 拉取到最新的群属性之后,再发起修改操作;
|
||||
* - 从 5.6 版本开始,当多个用户同时修改同一个群属性时,只有第一个用户可以执行成功,其它用户会收到 10056 错误码;收到这个错误码之后,请您调用 getGroupAttributes 把本地保存的群属性更新到最新之后,再发起修改操作。
|
||||
*/
|
||||
- (void)initGroupAttributes:(NSString*)groupID attributes:(NSDictionary<NSString *,NSString *> *)attributes succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(initGroupAttributes(groupID:attributes:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.6 设置群属性,已有该群属性则更新其 value 值,没有该群属性则添加该群属性。
|
||||
* @note
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型。
|
||||
*/
|
||||
- (void)setGroupAttributes:(NSString*)groupID attributes:(NSDictionary<NSString *,NSString *> *)attributes succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupAttributes(groupID:attributes:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.7 删除群指定属性,keys 传 nil 则清空所有群属性。
|
||||
* @note
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型。
|
||||
*/
|
||||
- (void)deleteGroupAttributes:(NSString*)groupID keys:(NSArray<NSString *> * _Nullable)keys succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(deleteGroupAttributes(groupID:keys:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.8 获取群指定属性,keys 传 nil 则获取所有群属性。
|
||||
* @note
|
||||
* - 6.7 及其以前版本,只支持 AVChatRoom 直播群;
|
||||
* - 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
|
||||
* - 从 7.0 版本开始,除了话题外,群属性支持所有的群类型。
|
||||
*/
|
||||
- (void)getGroupAttributes:(NSString*)groupID keys:(NSArray<NSString *> * _Nullable)keys succ:(V2TIMGroupAttributeListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.9 获取指定群在线人数
|
||||
*
|
||||
* @param groupID 群id
|
||||
* @param succ 成功回调
|
||||
* @param fail 失败回调
|
||||
*
|
||||
* @note
|
||||
* - IMSDK 7.3 以前的版本仅支持直播群( AVChatRoom);
|
||||
* - IMSDK 7.3 及其以后的版本支持所有群类型。
|
||||
*/
|
||||
- (void)getGroupOnlineMemberCount:(NSString*)groupID succ:(V2TIMGroupOnlineMemberCountSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupOnlineMemberCount(groupID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.10 设置群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @note
|
||||
* - 该计数器的 key 如果存在,则直接更新计数器的 value 值;如果不存在,则添加该计数器的 key-value;
|
||||
* - 当群计数器设置成功后,在 succ 回调中会返回最终成功设置的群计数器信息;
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)setGroupCounters:(NSString *)groupID counters:(NSDictionary<NSString *, NSNumber *> *)counters succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(setGroupCounters(groupID:counters:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.11 获取群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @note
|
||||
* - 如果 keys 为空,则表示获取群内的所有计数器;
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)getGroupCounters:(NSString *)groupID keys:(NSArray<NSString *> * _Nullable)keys succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupCounters(groupID:keys:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.12 递增群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @param groupID 群 ID
|
||||
* @param key 群计数器的 key
|
||||
* @param value 群计数器的递增的变化量,计数器 key 对应的 value 变更方式为: new_value = old_value + value
|
||||
* @param succ 成功后的回调,会返回当前计数器做完递增操作后的 value
|
||||
* @param fail 失败的回调
|
||||
*
|
||||
* @note
|
||||
* - 该计数器的 key 如果存在,则直接在当前值的基础上根据传入的 value 作递增操作;反之,添加 key,并在默认值为 0 的基础上根据传入的 value 作递增操作;
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)increaseGroupCounter:(NSString *)groupID key:(NSString *)key value:(NSInteger)value succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(increaseGroupCounter(groupID:key:value:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.13 递减群计数器(7.0 及其以上版本支持)
|
||||
*
|
||||
* @param groupID 群 ID
|
||||
* @param key 群计数器的 key
|
||||
* @param value 群计数器的递减的变化量,计数器 key 对应的 value 变更方式为: new_value = old_value - value
|
||||
* @param succ 成功后的回调,会返回当前计数器做完递减操作后的 value
|
||||
* @param fail 失败的回调
|
||||
*
|
||||
* @note
|
||||
* - 该计数器的 key 如果存在,则直接在当前值的基础上根据传入的 value 作递减操作;反之,添加 key,并在默认值为 0 的基础上根据传入的 value 作递减操作
|
||||
* - 除了社群和话题,群计数器支持所有的群组类型。
|
||||
*/
|
||||
- (void)decreaseGroupCounter:(NSString *)groupID key:(NSString *)key value:(NSInteger)value succ:(V2TIMGroupCounterResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(decreaseGroupCounter(groupID:key:value:succ:fail:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群成员管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 3.1 获取群成员列表
|
||||
*
|
||||
* @param filter 指定群成员类型。
|
||||
* @param nextSeq 分页拉取标志,第一次拉取填 0,回调成功如果 nextSeq 不为零,需要分页,传入再次拉取,直至为 0。
|
||||
*
|
||||
* @note
|
||||
* - 普通群(工作群、会议群、公开群)的限制:
|
||||
* 1. filter 只能设置为 V2TIMGroupMemberFilter 定义的数值,SDK 会返回指定角色的成员。
|
||||
*
|
||||
* - 直播群(AVChatRoom)的限制:
|
||||
* 1. 如果设置 filter 为 V2TIMGroupMemberFilter 定义的数值,SDK 返回全部成员。返回的人数规则为:拉取最近入群群成员最多 1000 人,新进来的成员排在前面,需要升级旗舰版,并且在 [控制台](https://console.cloud.tencent.com/im) 开启“直播群在线成员列表”开关(6.3 及以上版本支持)。
|
||||
* 2. 如果设置 filter 为群成员自定义标记,旗舰版支持拉取指定标记的成员列表。标记群成员的设置请参考 markGroupMemberList:memberList:markType:enableMark:succ:fail: API。
|
||||
* 3. 程序重启后,请重新加入群组,否则拉取群成员会报 10007 错误码。
|
||||
* 4. 群成员资料信息仅支持 userID | nickName | faceURL | role 字段。
|
||||
*
|
||||
* - 社群(Community)的限制:
|
||||
* 1. 如果设置 filter 为 V2TIMGroupMemberFilter 定义的数值,SDK 返回指定角色的成员。
|
||||
* 2. 如果设置 filter 为群成员自定义标记,旗舰版支持拉取指定标记的成员列表(7.5 及以上版本支持)。标记群成员的设置请参考 markGroupMemberList:memberList:markType:enableMark:succ:fail: API。
|
||||
*/
|
||||
- (void)getGroupMemberList:(NSString*)groupID filter:(uint32_t)filter nextSeq:(uint64_t)nextSeq succ:(V2TIMGroupMemberInfoResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.2 指定的群成员资料
|
||||
*/
|
||||
- (void)getGroupMembersInfo:(NSString*)groupID memberList:(NSArray<NSString*>*)memberList succ:(V2TIMGroupMemberInfoListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupMembersInfo(groupID:memberList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.3 搜索本地群成员资料(5.4.666 及以上版本支持)
|
||||
*
|
||||
* @param searchParam 搜索参数
|
||||
* @note 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17474)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchGroupMembers:(V2TIMGroupMemberSearchParam *)searchParam succ:(V2TIMGroupMemberInfoListSearchSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchGroupMembers(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 搜索云端群成员资料(8.4 及以上版本支持)
|
||||
*
|
||||
* @param searchParam 搜索参数
|
||||
* @note 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)searchCloudGroupMembers:(V2TIMGroupMemberSearchParam *)searchParam succ:(V2TIMGroupMemberSearchResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchCloudGroupMembers(searchParam:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 修改指定的群成员资料
|
||||
*/
|
||||
- (void)setGroupMemberInfo:(NSString*)groupID info:(V2TIMGroupMemberFullInfo *)info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupMemberInfo(groupID:info:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 禁言群成员(只有管理员或群主能够调用)
|
||||
*
|
||||
* @param seconds 禁言时间长度,单位秒,表示调用该接口成功后多少秒内不允许被禁言用户再发言。
|
||||
*/
|
||||
- (void)muteGroupMember:(NSString*)groupID member:(NSString*)userID muteTime:(uint32_t)seconds succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(muteGroupMember(groupID:memberUserID:muteTimeSeconds:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.7 禁言全体群成员,只有管理员或群主能够调用(7.5 及以上版本支持)
|
||||
*
|
||||
* @param groupID 群组 ID
|
||||
* @param isMute YES 表示禁言,NO 表示解除禁言
|
||||
*
|
||||
* @note
|
||||
* - 禁言全体群成员没有时间限制,设置 isMute 为 NO 则解除禁言。
|
||||
* - 禁言或解除禁言后,会触发 V2TIMGroupListener 中的 onAllGroupMembersMuted:isMute: 回调。
|
||||
* - 群主和管理员可以禁言普通成员。普通成员不能操作禁言/解除禁言。
|
||||
*/
|
||||
- (void)muteAllGroupMembers:(NSString*)groupID isMute:(BOOL)isMute succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(muteAllGroupMembers(groupID:isMute:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.8 邀请他人入群
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 工作群(Work):群里的任何人都可以邀请其他人进群。
|
||||
* - 会议群(Meeting)和公开群(Public):默认不允许邀请加入群,您可以修改群资料 V2TIMGroupInfo 的 groupApproveOpt 字段打开邀请入群方式。打开该选项之后,群里的任何人都可以邀请其他人进群。
|
||||
* - 直播群(AVChatRoom):不支持此功能。
|
||||
* - 后台限制单次邀请的群成员个数不能超过 20。
|
||||
*/
|
||||
- (void)inviteUserToGroup:(NSString*)groupID userList:(NSArray<NSString *>*)userList succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(inviteUserToGroup(groupID:userList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.9 踢人
|
||||
*
|
||||
* @param groupID 群 id
|
||||
* @param memberList 被踢用户的 userID 列表
|
||||
* @param reason 被踢的原因
|
||||
* @param duration 指定自被踢出群组开始算起,禁止被踢用户重新申请加群的时长,单位:秒
|
||||
* @param succ 成功后的回调
|
||||
* @param fail 失败后的回调
|
||||
*
|
||||
* @note
|
||||
* - 从 7.2 版本开始,支持设置一个时长参数,用于指定用户从被踢出群组开始算起,禁止重新申请加群的时长;
|
||||
* - 工作群(Work):只有群主或 APP 管理员可以踢人;
|
||||
* - 公开群(Public)、会议群(Meeting):群主、管理员和 APP 管理员可以踢人;
|
||||
* - 直播群(AVChatRoom):6.6 之前版本只支持禁言(muteGroupMember),不支持踢人。6.6 及以上版本支持禁言和踢人。需要您购买旗舰版套餐;
|
||||
* - 该接口其他使用限制请查阅:https://cloud.tencent.com/document/product/269/75400#.E8.B8.A2.E4.BA.BA。
|
||||
*/
|
||||
- (void)kickGroupMember:(NSString *)groupID memberList:(NSArray<NSString *> *)memberList reason:(NSString * _Nullable)reason duration:(uint32_t)duration succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(kickGroupMember(groupID:memberList:reason:duration:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.10 切换群成员的角色
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 工作群(Work)不支持设置群成员角色。
|
||||
* - 只有群主才能对群成员进行普通成员和管理员之间的角色切换。
|
||||
* - 转让群组请调用 @ref transferGroupOwner 接口。
|
||||
* - 会议群(Meeting)切换群成员角色之后,不会有 onGrantAdministrator 和 onRevokeAdministrator 通知回调。
|
||||
* - 切换的角色支持普通群成员( V2TIM_GROUP_MEMBER_ROLE_MEMBER) 和管理员(V2TIM_GROUP_MEMBER_ROLE_ADMIN)。
|
||||
*/
|
||||
- (void)setGroupMemberRole:(NSString*)groupID member:(NSString *)userID newRole:(uint32_t)role succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupMemberRole(groupID:memberUserID:newRole:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.11 标记群成员(需要您购买旗舰版套餐)
|
||||
*
|
||||
* @param groupID 群 ID。
|
||||
* @param memberList 群成员 ID 列表。
|
||||
* @param markType 标记类型。数字类型,大于等于 1000,您可以自定义,一个群组里最多允许定义 10 个标记。
|
||||
* @param enableMark YES 表示添加标记,NO 表示移除标记。
|
||||
* @note
|
||||
* - 直播群从 6.6 版本开始支持。
|
||||
* - 社群从 7.5 版本开始支持。
|
||||
* - 只有群主才有权限标记群组中其他人。
|
||||
*/
|
||||
- (void)markGroupMemberList:(NSString *)groupID memberList:(NSArray<NSString *> *)memberList markType:(uint32_t)markType enableMark:(BOOL)enableMark succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(markGroupMemberList(groupID:memberList:markType:enableMark:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.12 转让群主
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 普通类型的群(Work、Public、Meeting):只有群主才有权限进行群转让操作。
|
||||
* - 直播群(AVChatRoom):不支持转让群主。
|
||||
*/
|
||||
- (void)transferGroupOwner:(NSString*)groupID member:(NSString*)userID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(transferGroupOwner(groupID:memberUserID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.13 踢人(直播群踢人从 6.6 版本开始支持,需要您购买旗舰版套餐)
|
||||
*
|
||||
* @note 使用限制如下:
|
||||
* - 待废弃接口,请使用 kickGroupMember:memberList:reason:duration:succ:fail: 接口;
|
||||
* - 工作群(Work):只有群主或 APP 管理员可以踢人;
|
||||
* - 公开群(Public)、会议群(Meeting):群主、管理员和 APP 管理员可以踢人;
|
||||
* - 直播群(AVChatRoom):6.6 之前版本只支持禁言(muteGroupMember),不支持踢人。6.6 及以上版本支持禁言和踢人;
|
||||
* - 该接口其他使用限制请查阅:https://cloud.tencent.com/document/product/269/75400#.E8.B8.A2.E4.BA.BA。
|
||||
*/
|
||||
- (void)kickGroupMember:(NSString *)groupID memberList:(NSArray<NSString *> *)memberList reason:(NSString * _Nullable)reason succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail __attribute__((deprecated("use kickGroupMember:memberList:reason:succ:fail:")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 加群申请
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 获取加群申请列表
|
||||
* @note 最多支持50个
|
||||
*/
|
||||
- (void)getGroupApplicationList:(V2TIMGroupApplicationResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getGroupApplicationList(succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.2 同意某一条加群申请
|
||||
*/
|
||||
- (void)acceptGroupApplication:(V2TIMGroupApplication *)application reason:(NSString* _Nullable)reason succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(acceptGroupApplication(application:reason:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.3 拒绝某一条加群申请
|
||||
*/
|
||||
- (void)refuseGroupApplication:(V2TIMGroupApplication *)application reason:(NSString* _Nullable)reason succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(refuseGroupApplication(application:reason:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.4 标记申请列表为已读
|
||||
*/
|
||||
- (void)setGroupApplicationRead:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setGroupApplicationRead(succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群基本资料(可以通过 getGroupInfo 获取,不支持由客户自行创建)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群资料
|
||||
V2TIM_EXPORT @interface V2TIMGroupInfo : NSObject
|
||||
|
||||
/**
|
||||
* 群组 ID
|
||||
*
|
||||
* @note 自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长 48 个字节,且前缀不能为 @TGS#(避免与默认分配的群组 ID 混淆)
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* groupID;
|
||||
|
||||
/// 群类型
|
||||
@property(nonatomic,strong,nullable) NSString* groupType;
|
||||
|
||||
/**
|
||||
* 社群是否支持创建话题
|
||||
* @note 只在群类型为 Community 时有效
|
||||
*/
|
||||
@property(nonatomic,assign) BOOL isSupportTopic;
|
||||
|
||||
/**
|
||||
* 群名称
|
||||
*
|
||||
* @note 群名称最长 100 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* groupName;
|
||||
|
||||
/**
|
||||
* 群公告
|
||||
*
|
||||
* @note 群公告最长 400 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* notification;
|
||||
|
||||
/**
|
||||
* 群简介
|
||||
*
|
||||
* @note 群简介最长 400 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* introduction;
|
||||
|
||||
/**
|
||||
* 群头像
|
||||
*
|
||||
* @note 群头像 URL 最长 500 字节,使用 UTF-8 编码
|
||||
*/
|
||||
@property(nonatomic,strong,nullable) NSString* faceURL;
|
||||
|
||||
/// 是否全员禁言
|
||||
@property(nonatomic,assign) BOOL allMuted;
|
||||
|
||||
///设置群自定义字段需要两个步骤:
|
||||
///1.在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群自定义字段) 配置群自定义字段的 key 值,Key 为 String 类型,长度不超过 16 字节。
|
||||
///2.调用 setGroupInfo 接口设置该字段,value 为 NSData 数据,长度不超过 512 字节。
|
||||
///@note 该字段主要用于 V1 和 V2 版本的兼容,如果您直接使用的是 V2 版本的 API ,建议使用 initGroupAttributes 接口设置群属性,其设置更灵活(无需控制台配置),支持的存储也更大(最大支持 16K)
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *>* customInfo;
|
||||
|
||||
/// 群创建人/管理员
|
||||
@property(nonatomic,strong,readonly,nullable) NSString *owner;
|
||||
|
||||
/// 创建群组的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint32_t createTime;
|
||||
|
||||
/// 申请进群是否需要管理员审批:工作群(Work)默认值为 V2TIM_GROUP_ADD_FORBID,即默认不允许申请入群,您可以修改该字段打开申请入群方式。
|
||||
@property(nonatomic,assign) V2TIMGroupAddOpt groupAddOpt;
|
||||
|
||||
/// 邀请进群是否需要管理员审批 (从 7.1 版本开始支持)
|
||||
/// - 除工作群(Work)之外的其他群类型默认值都为 V2TIM_GROUP_ADD_FORBID,即默认不允许邀请入群,您可以修改该字段打开邀请入群方式。
|
||||
/// - 直播群、社群和话题默认不允许邀请入群,也不支持修改。
|
||||
@property(nonatomic,assign) V2TIMGroupAddOpt groupApproveOpt;
|
||||
|
||||
/// 上次修改群信息的 UTC 时间戳
|
||||
@property(nonatomic,assign,readonly) uint32_t lastInfoTime;
|
||||
|
||||
/// 群最近一次发消息时间
|
||||
@property(nonatomic,assign,readonly) uint32_t lastMessageTime;
|
||||
|
||||
/// 已加入的群成员数量
|
||||
@property(nonatomic,assign,readonly) uint32_t memberCount;
|
||||
|
||||
/// 在线的群成员数量(待废弃字段,请使用 getGroupOnlineMemberCount:succ:fail: 接口获取群在线人数)
|
||||
@property(nonatomic,assign,readonly) uint32_t onlineCount __attribute__((deprecated("use getGroupOnlineMemberCount:succ:fail: instead")));
|
||||
|
||||
/// 最多允许加入的群成员数量
|
||||
/// @note 各类群成员人数限制详见: https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E9.99.90.E5.88.B6.E5.B7.AE.E5.BC.82
|
||||
@property(nonatomic,assign,readonly) uint32_t memberMaxCount;
|
||||
|
||||
/// 当前用户在此群组中的角色(V2TIMGroupMemberRole),切换角色请调用 setGroupMemberRole 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t role;
|
||||
|
||||
/// 当前用户在此群组中的消息接收选项,修改群消息接收选项请调用 setGroupReceiveMessageOpt 接口
|
||||
@property(nonatomic,assign,readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/// 当前用户加入此群的 UTC 时间戳,不支持设置,系统自动生成
|
||||
@property(nonatomic,assign,readonly) uint32_t joinTime;
|
||||
|
||||
/// 是否开启权限组能力,仅支持社群,7.8 版本开始支持
|
||||
/// 开启后,管理员角色的权限失效,用群权限、话题权限和权限组能力来对社群、话题进行管理。
|
||||
@property(nonatomic,assign) BOOL enablePermissionGroup;
|
||||
|
||||
/// 群权限,仅支持社群,7.8 版本开始支持
|
||||
/// 群成员在没有加入任何权限组时的默认权限,仅在 enablePermissionGroup = true 打开权限组之后生效
|
||||
@property(nonatomic,assign) uint64_t defaultPermissions;
|
||||
|
||||
@end
|
||||
|
||||
/// 获取群组资料结果
|
||||
V2TIM_EXPORT @interface V2TIMGroupInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong,nullable) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong) V2TIMGroupInfo *info;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群申请信息(可以通过 getGroupApplicationList 获取,不支持由客户自行创建)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群申请信息
|
||||
V2TIM_EXPORT @interface V2TIMGroupApplication : NSObject
|
||||
|
||||
/// 群组 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* groupID;
|
||||
|
||||
/// 请求者 userID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* fromUser;
|
||||
|
||||
/// 请求者昵称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* fromUserNickName;
|
||||
|
||||
/// 请求者头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* fromUserFaceUrl;
|
||||
|
||||
/// 判决者id,有人请求加群:0,邀请其他人加群:被邀请人用户 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* toUser;
|
||||
|
||||
/// 申请时间
|
||||
@property(nonatomic,assign,readonly) uint64_t addTime;
|
||||
|
||||
/// 申请或邀请附加信息
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* requestMsg;
|
||||
|
||||
/// 审批信息:同意或拒绝信息
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* handledMsg;
|
||||
|
||||
/// 请求类型
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationType applicationType;
|
||||
|
||||
/// 处理标志
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationHandleStatus handleStatus;
|
||||
|
||||
/// 处理结果
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationHandleResult handleResult;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 邀请其他人入群的操作结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 邀请其他人入群的操作结果
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberOperationResult : NSObject
|
||||
|
||||
/// 被操作成员
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 返回状态
|
||||
@property(nonatomic,assign) V2TIMGroupMemberResult result;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 创建群时指定群成员
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 创建群时指定群成员
|
||||
V2TIM_EXPORT @interface V2TIMCreateGroupMemberInfo : NSObject
|
||||
|
||||
/// 被操作成员
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/** 群成员类型,需要注意一下事项:
|
||||
* 1. role 不设置或则设置为 V2TIM_GROUP_MEMBER_UNDEFINED,进群后默认为群成员。
|
||||
* 2. 工作群(Work)不支持设置 role 为管理员。
|
||||
* 3. 所有的群都不支持设置 role 为群主。
|
||||
*/
|
||||
@property(nonatomic,assign) uint32_t role;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 加群申请列表(包含已处理和待处理的)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 加群申请列表
|
||||
V2TIM_EXPORT @interface V2TIMGroupApplicationResult : NSObject
|
||||
|
||||
/// 未读的申请数量
|
||||
@property(nonatomic,assign) uint64_t unreadCount;
|
||||
|
||||
/// 加群申请的列表
|
||||
@property(nonatomic,strong) NSMutableArray<V2TIMGroupApplication *> * applicationList;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMGroupSearchParam : NSObject
|
||||
/// 搜索关键字列表,最多支持5个。
|
||||
/// 如果是本地搜索,您需主动设置 keyword 是否匹配群 ID、群名称。
|
||||
/// 如果是云端搜索,keyword 会自动匹配群 ID、群名称。
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 设置是否搜索群 ID(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchGroupID;
|
||||
|
||||
/// 设置是否搜索群名称(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchGroupName;
|
||||
|
||||
/// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索(仅云端搜索有效)
|
||||
/// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
|
||||
@property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
|
||||
|
||||
/// 设置每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20,仅云端搜索有效)
|
||||
@property(nonatomic,assign) NSUInteger searchCount;
|
||||
|
||||
/// 设置每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMGroupSearchResult 中的返回值(仅云端搜索有效)
|
||||
@property(nonatomic,strong) NSString *searchCursor;
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMGroupSearchResult : NSObject
|
||||
/// 满足搜索条件的群列表是否已经全部返回
|
||||
@property(nonatomic,assign) BOOL isFinished;
|
||||
|
||||
/// 满足搜索条件的群总数量
|
||||
@property(nonatomic,assign) NSUInteger totalCount;
|
||||
|
||||
/// 下一次云端搜索的起始位置
|
||||
@property(nonatomic,strong,nullable) NSString *nextCursor;
|
||||
|
||||
/// 当前一次云端搜索返回的群列表
|
||||
@property(nonatomic,strong) NSArray<V2TIMGroupInfo *> *groupList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群成员搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberSearchParam : NSObject
|
||||
/// 搜索关键字列表,最多支持 5 个
|
||||
/// 如果是本地搜索,您需主动设置 keyword 是否匹配群成员 ID、昵称、备注、群名片。
|
||||
/// 如果是云端搜索,keyword 会自动匹配群成员 ID、昵称、群名片。
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 指定群 ID 列表,若为 null 则搜索全部群中的群成员
|
||||
@property(nonatomic, strong,nullable) NSArray<NSString *> *groupIDList;
|
||||
|
||||
/// 设置是否搜索群成员 userID(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberUserID;
|
||||
|
||||
/// 设置是否搜索群成员昵称(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberNickName;
|
||||
|
||||
/// 设置是否搜索群成员备注(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberRemark;
|
||||
|
||||
/// 设置是否搜索群成员名片(仅本地搜索有效)
|
||||
@property(nonatomic, assign) BOOL isSearchMemberNameCard;
|
||||
|
||||
/// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索(仅云端搜索有效)
|
||||
/// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
|
||||
@property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
|
||||
|
||||
/// 设置每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20,仅云端搜索有效)
|
||||
@property(nonatomic,assign) NSUInteger searchCount;
|
||||
|
||||
/// 设置每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMGroupMemberSearchResult 中的返回值(仅云端搜索有效)
|
||||
@property(nonatomic,strong) NSString *searchCursor;
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberSearchResult : NSObject
|
||||
/// 满足搜索条件的群成员列表是否已经全部返回
|
||||
@property(nonatomic,assign) BOOL isFinished;
|
||||
|
||||
/// 满足搜索条件的群成员总数量
|
||||
@property(nonatomic,assign) NSUInteger totalCount;
|
||||
|
||||
/// 下一次云端搜索的起始位置
|
||||
@property(nonatomic,strong,nullable) NSString *nextCursor;
|
||||
|
||||
/// 当前一次云端搜索返回的群成员列表
|
||||
@property(nonatomic,strong) NSDictionary<NSString *, NSArray<V2TIMGroupMemberFullInfo *> *> *memberList;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,43 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+LiveActivity
|
||||
//
|
||||
// 消息 LiveActivity 推送接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
@class V2TIMLiveActivityConfig;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (LiveActivity)
|
||||
|
||||
/**
|
||||
* 1.1 设置 LiveActivity 远端推送配置;当 config 为 nil 时,清除所有的远端推送配置
|
||||
*/
|
||||
- (void)setLiveActivity:(V2TIMLiveActivityConfig * _Nullable)config succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setLiveActivity(config:succ:fail:));
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMLiveActivityConfig : NSObject
|
||||
|
||||
/**
|
||||
* 创建 LiveActivity 时自定义的 activityID,用来标识该 LiveActivity
|
||||
*/
|
||||
@property(nonatomic,strong) NSString *activityID;
|
||||
|
||||
/**
|
||||
* LiveActivity token
|
||||
*/
|
||||
@property (nonatomic, strong, nullable) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台上传的 P8 证书 ID
|
||||
*/
|
||||
@property (nonatomic, assign) int businessID;
|
||||
|
||||
@end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,168 @@
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 信令
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 信令信息
|
||||
@class V2TIMSignalingInfo;
|
||||
/// 信令监听
|
||||
V2TIM_EXPORT @protocol V2TIMSignalingListener;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (Signaling)
|
||||
|
||||
/**
|
||||
* 获取信令信息成功回调
|
||||
*/
|
||||
typedef void (^V2TIMSignalingInfoSucc)(V2TIMSignalingInfo * signalInfo);
|
||||
|
||||
/**
|
||||
* 添加信令监听
|
||||
*/
|
||||
- (void)addSignalingListener:(id<V2TIMSignalingListener>)listener NS_SWIFT_NAME(addSignalingListener(listener:));
|
||||
|
||||
/**
|
||||
* 移除信令监听
|
||||
*/
|
||||
- (void)removeSignalingListener:(id<V2TIMSignalingListener>)listener NS_SWIFT_NAME(removeSignalingListener(listener:));
|
||||
|
||||
/**
|
||||
* 邀请某个人
|
||||
*
|
||||
* @param invitee 被邀请人用户 ID
|
||||
* @param data 自定义数据
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
|
||||
* @param onlineUserOnly 是否只有在线用户才能收到邀请,如果设置为 YES,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)。
|
||||
* @param offlinePushInfo 苹果 APNS 离线推送时携带的标题和声音,其中 desc 为必填字段,推送的时候会默认展示 desc 信息。
|
||||
* @return inviteID 邀请 ID,如果邀请失败,返回 nil
|
||||
*
|
||||
*/
|
||||
- (NSString* _Nullable)invite:(NSString *)invitee
|
||||
data:(NSString * _Nullable)data
|
||||
onlineUserOnly:(BOOL)onlineUserOnly
|
||||
offlinePushInfo:(V2TIMOfflinePushInfo * _Nullable)offlinePushInfo
|
||||
timeout:(int)timeout
|
||||
succ:(_Nullable V2TIMSucc)succ
|
||||
fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(invite(invitee:data:onlineUserOnly:offlinePushInfo:timeout:succ:fail:));
|
||||
/**
|
||||
* 邀请群内的某些人
|
||||
*
|
||||
* @param groupID 发起邀请所在群组
|
||||
* @param inviteeList 被邀请人列表,inviteeList 必须已经在 groupID 群里,否则邀请无效
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
|
||||
* @param onlineUserOnly 是否只有在线用户才能收到邀请,如果设置为 YES,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)。
|
||||
* @return inviteID 邀请 ID,如果邀请失败,返回 nil
|
||||
*
|
||||
* @note 群邀请暂不支持离线推送,如果您需要离线推送,可以针对被邀请的用户单独发离线推送自定义消息。
|
||||
*/
|
||||
- (NSString* _Nullable)inviteInGroup:(NSString *)groupID
|
||||
inviteeList:(NSArray *)inviteeList
|
||||
data:(NSString * _Nullable)data
|
||||
onlineUserOnly:(BOOL)onlineUserOnly
|
||||
timeout:(int)timeout
|
||||
succ:(_Nullable V2TIMSucc)succ
|
||||
fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(inviteInGroup(groupID:inviteeList:data:onlineUserOnly:timeout:succ:fail:));
|
||||
|
||||
/**
|
||||
* 邀请方取消邀请
|
||||
*
|
||||
* @param inviteID 邀请 ID
|
||||
*
|
||||
* @note 如果所有被邀请人都已经处理了当前邀请(包含超时),不能再取消当前邀请。
|
||||
*/
|
||||
- (void)cancel:(NSString *)inviteID data:(NSString * _Nullable)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(cancel(inviteID:data:succ:fail:));
|
||||
|
||||
/**
|
||||
* 接收方接受邀请
|
||||
*
|
||||
* @note 不能接受不是针对自己的邀请,请在收到 onReceiveNewInvitation 回调的时候先判断 inviteeList 有没有自己,如果没有自己,不能 accept 邀请。
|
||||
*/
|
||||
- (void)accept:(NSString *)inviteID data:(NSString * _Nullable)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(accept(inviteID:data:succ:fail:));
|
||||
|
||||
/**
|
||||
* 接收方拒绝邀请
|
||||
*
|
||||
* @note 不能拒绝不是针对自己的邀请,请在收到 onReceiveNewInvitation 回调的时候先判断 inviteeList 有没有自己,如果没有自己,不能 reject 邀请。
|
||||
*/
|
||||
- (void)reject:(NSString *)inviteID data:(NSString * _Nullable)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(reject(inviteID:data:succ:fail:));
|
||||
|
||||
/**
|
||||
* 获取信令信息
|
||||
*
|
||||
* 如果 invite 设置 onlineUserOnly 为 NO,每次信令操作(包括 invite、cancel、accept、reject、timeout)都会产生一条自定义消息,该消息会通过 V2TIMAdvancedMsgListener -> onRecvNewMessage 抛给用户,用户也可以通过历史消息拉取,如果需要根据信令信息做自定义化文本展示,可以调用下面接口获取信令信息。
|
||||
*
|
||||
* @param msg 消息对象
|
||||
* @return V2TIMSignalingInfo 信令信息,如果为 nil,则 msg 不是一条信令消息。
|
||||
*/
|
||||
- (V2TIMSignalingInfo * _Nullable)getSignallingInfo:(V2TIMMessage *)msg NS_SWIFT_NAME(getSignallingInfo(msg:));
|
||||
|
||||
/**
|
||||
* 添加邀请信令
|
||||
*
|
||||
* 主要用于邀请者在被邀请者离线期间,发送了群聊邀请,被邀请者上线后将该信令同步给 SDK,从而正常使用信令功能。
|
||||
*
|
||||
* 当被邀请者点击离线推送提示,拉起 App 时:
|
||||
* 1. 如果被邀请者离线期间,邀请者发送的是 1V1 信令,SDK 可以自动同步邀请信令。邀请未超时,回调 onReceiveNewInvitation。
|
||||
* 2. 如果被邀请者离线期间,邀请者发送的是群聊信令,不同 SDK 版本表现如下:
|
||||
* - 6.7 以前的版本:
|
||||
* SDK 无法自动同步邀请信令(信令本质上就是一条自定义消息,群离线消息在程序启动后无法自动同步)。
|
||||
* 如果被邀请者需要处理该邀请信令,可以让邀请者在发起信令时,向每个被邀请者额外发送一条 C2C 离线推送消息,消息携带 V2TIMSignalingInfo 信息。
|
||||
* 被邀请者收到离线推送时通过 addInvitedSignaling 将 V2TIMSignalingInfo 信息告知 SDK。
|
||||
* - 6.7 及以后的版本:
|
||||
* SDK 会自动同步最近 30 秒的消息。如果其中包含了未超时的邀请信令,回调 onReceiveNewInvitation。您无需再调用本接口同步邀请信令。
|
||||
*
|
||||
* @note 如果添加的信令信息已存在,fail callback 会抛 ERR_SDK_SIGNALING_ALREADY_EXISTS 错误码。
|
||||
*/
|
||||
- (void)addInvitedSignaling:(V2TIMSignalingInfo *)signallingInfo succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(addInvitedSignaling(signallingInfo:succ:fail:));
|
||||
|
||||
/**
|
||||
* 修改邀请信令(6.7 及其以上版本支持)
|
||||
*
|
||||
* @note 仅支持修改邀请信令的自定义字段 data。只有在线用户才能收到的邀请信令不能被修改。
|
||||
*/
|
||||
- (void)modifyInvitation:(NSString *)inviteID data:(NSString *)data succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(modifyInvitation(inviteID:data:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMSignalingListener <NSObject>
|
||||
@optional
|
||||
/// 收到邀请的回调
|
||||
-(void)onReceiveNewInvitation:(NSString *)inviteID inviter:(NSString * _Nullable)inviter groupID:(NSString * _Nullable)groupID inviteeList:(NSArray<NSString *> *)inviteeList data:(NSString * _Nullable)data NS_SWIFT_NAME(onReceiveNewInvitation(inviteID:inviter:groupID:inviteeList:data:));
|
||||
|
||||
/// 被邀请者接受邀请
|
||||
-(void)onInviteeAccepted:(NSString *)inviteID invitee:(NSString * _Nullable)invitee data:(NSString * _Nullable)data NS_SWIFT_NAME(onInviteeAccepted(inviteID:invitee:data:));
|
||||
|
||||
/// 被邀请者拒绝邀请
|
||||
-(void)onInviteeRejected:(NSString *)inviteID invitee:(NSString * _Nullable)invitee data:(NSString * _Nullable)data NS_SWIFT_NAME(onInviteeRejected(inviteID:invitee:data:));
|
||||
|
||||
/// 邀请被取消
|
||||
-(void)onInvitationCancelled:(NSString *)inviteID inviter:(NSString * _Nullable)inviter data:(NSString * _Nullable)data NS_SWIFT_NAME(onInvitationCancelled(inviteID:inviter:data:));
|
||||
|
||||
/// 邀请超时
|
||||
-(void)onInvitationTimeout:(NSString *)inviteID inviteeList:(NSArray<NSString *> *)inviteeList NS_SWIFT_NAME(onInvitationTimeout(inviteID:inviteeList:));
|
||||
|
||||
/// 邀请被修改(6.7 及其以上版本支持)
|
||||
-(void)onInvitationModified:(NSString *)inviteID data:(NSString * _Nullable)data NS_SWIFT_NAME(onInvitationModified(inviteID:data:));
|
||||
|
||||
@end
|
||||
|
||||
|
||||
// 操作类型
|
||||
typedef NS_ENUM(NSInteger,SignalingActionType) {
|
||||
SignalingActionType_Invite = 1, // 邀请方发起邀请
|
||||
SignalingActionType_Cancel_Invite = 2, // 邀请方取消邀请
|
||||
SignalingActionType_Accept_Invite = 3, // 被邀请方接受邀请
|
||||
SignalingActionType_Reject_Invite = 4, // 被邀请方拒绝邀请
|
||||
SignalingActionType_Invite_Timeout = 5, // 邀请超时
|
||||
};
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMSignalingInfo : NSObject
|
||||
@property(nonatomic,strong,nullable) NSString *inviteID;
|
||||
@property(nonatomic,strong,nullable) NSString *groupID;
|
||||
@property(nonatomic,strong,nullable) NSString *inviter;
|
||||
@property(nonatomic,strong) NSMutableArray *inviteeList;
|
||||
@property(nonatomic,strong,nullable) NSString *data;
|
||||
@property(nonatomic,assign) uint32_t timeout;
|
||||
@property(nonatomic,assign) SignalingActionType actionType;
|
||||
@end
|
||||
@@ -0,0 +1,37 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+VOIP
|
||||
//
|
||||
// 消息 VoIP 推送接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
@class V2TIMVOIPConfig;
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager (VOIP)
|
||||
|
||||
/**
|
||||
* 1.1 设置 VoIP 推送
|
||||
*/
|
||||
- (void)setVOIP:(V2TIMVOIPConfig * _Nullable)config succ:(V2TIMSucc _Nullable)succ fail:(V2TIMFail _Nullable)fail NS_SWIFT_NAME(setVOIP(config:succ:fail:));
|
||||
|
||||
@end
|
||||
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMVOIPConfig : NSObject
|
||||
|
||||
/**
|
||||
* VoIP device token
|
||||
*/
|
||||
@property (nonatomic, strong, nullable) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台上传的 VoIP 证书 ID
|
||||
*/
|
||||
@property (nonatomic, assign) NSInteger certificateID;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,843 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager
|
||||
//
|
||||
// TIM SDK 2.0 版的接口,相比于 1.0 版本更加简洁易用,接入速度更快,高级特性接口详见:
|
||||
// - V2TIMManager+Message.h 消息相关的高级功能接口,比如图片消息,视频消息,消息撤回,消息已读等功能。
|
||||
// - V2TIMManager+APNS.h 推送相关的高级功能接口,主要用于开启消息推送功能。
|
||||
// - V2TIMManager+Conversation.h 会话相关的高级功能接口,一个会话对应一个聊天窗口。
|
||||
// - V2TIMManager+Group.h 群组相关的高级功能接口,比如邀请人进群,处理加群请求等功能。
|
||||
// - V2TIMManager+Friendship.h 关系链相关的高级功能接口,比如黑名单,好友列表等功能。
|
||||
// - V2TIMManager+Community.h 社群相关的高级功能接口,比如创建话题,话题列表等功能。
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef ImSDK_V2TIMManager_h
|
||||
#define ImSDK_V2TIMManager_h
|
||||
|
||||
#if defined(BUILD_V2TIM_SDK)
|
||||
#define V2TIM_EXPORT __attribute__((visibility("default")))
|
||||
#else
|
||||
#define V2TIM_EXPORT
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#define V2TIM_EXTERN extern "C" V2TIM_EXPORT
|
||||
#else
|
||||
#define V2TIM_EXTERN extern V2TIM_EXPORT
|
||||
#endif
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@class V2TIMSDKConfig;
|
||||
@class V2TIMUserInfo;
|
||||
@class V2TIMUserFullInfo;
|
||||
@class V2TIMUserSearchParam;
|
||||
@class V2TIMUserSearchResult;
|
||||
@class V2TIMGroupMemberInfo;
|
||||
@class V2TIMGroupMemberFullInfo;
|
||||
@class V2TIMGroupChangeInfo;
|
||||
@class V2TIMGroupMemberChangeInfo;
|
||||
@class V2TIMUserReceiveMessageOptInfo;
|
||||
@class V2TIMTopicInfo;
|
||||
@class V2TIMUserStatus;
|
||||
@class V2TIMReceiveMessageOptInfo;
|
||||
|
||||
V2TIM_EXPORT @protocol V2TIMSDKListener;
|
||||
V2TIM_EXPORT @protocol V2TIMSimpleMsgListener;
|
||||
V2TIM_EXPORT @protocol V2TIMGroupListener;
|
||||
|
||||
V2TIM_EXTERN NSString *const GroupType_Work;
|
||||
V2TIM_EXTERN NSString *const GroupType_Public;
|
||||
V2TIM_EXTERN NSString *const GroupType_Meeting;
|
||||
V2TIM_EXTERN NSString *const GroupType_AVChatRoom;
|
||||
V2TIM_EXTERN NSString *const GroupType_Community;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// V2TIMManager
|
||||
//
|
||||
// IMSDK 主核心类,负责 IMSDK 的初始化、登录、消息收发,建群退群等功能
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMManager : NSObject
|
||||
|
||||
/// 成功通用回调
|
||||
typedef void (^V2TIMSucc)(void);
|
||||
/// 失败通用回调
|
||||
typedef void (^V2TIMFail)(int code, NSString * _Nullable desc);
|
||||
/// 创建群组成功回调
|
||||
typedef void (^V2TIMCreateGroupSucc)(NSString * _Nullable groupID);
|
||||
/// 获取用户资料成功回调
|
||||
typedef void (^V2TIMUserFullInfoListSucc)(NSArray <V2TIMUserFullInfo *> *infoList);
|
||||
/// 搜索云端用户的结果回调
|
||||
typedef void (^V2TIMUserSearchResultSucc)(V2TIMUserSearchResult *searchResult);
|
||||
/// 实验性 API 接口成功回调
|
||||
typedef void (^V2TIMCallExperimentalAPISucc)(NSObject * _Nullable result);
|
||||
/// 获取用户状态列表成功回调
|
||||
typedef void (^V2TIMUserStatusListSucc)(NSArray<V2TIMUserStatus *> *result);
|
||||
|
||||
/// 登录状态
|
||||
typedef NS_ENUM(NSInteger, V2TIMLoginStatus) {
|
||||
V2TIM_STATUS_LOGINED = 1, ///< 已登录
|
||||
V2TIM_STATUS_LOGINING = 2, ///< 登录中
|
||||
V2TIM_STATUS_LOGOUT = 3, ///< 无登录
|
||||
};
|
||||
|
||||
/// 日志级别
|
||||
typedef NS_ENUM(NSInteger, V2TIMLogLevel) {
|
||||
V2TIM_LOG_NONE = 0, ///< 不输出任何 sdk log
|
||||
V2TIM_LOG_DEBUG = 3, ///< 输出 DEBUG,INFO,WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_INFO = 4, ///< 输出 INFO,WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_WARN = 5, ///< 输出 WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_ERROR = 6, ///< 输出 ERROR 级别的 log
|
||||
};
|
||||
|
||||
/// 消息优先级
|
||||
typedef NS_ENUM(NSInteger, V2TIMMessagePriority) {
|
||||
V2TIM_PRIORITY_DEFAULT = 0, ///< 默认
|
||||
V2TIM_PRIORITY_HIGH = 1, ///< 高优先级,一般用于礼物等重要消息
|
||||
V2TIM_PRIORITY_NORMAL = 2, ///< 常规优先级,一般用于普通消息
|
||||
V2TIM_PRIORITY_LOW = 3, ///< 低优先级,一般用于点赞消息
|
||||
};
|
||||
|
||||
/// 性别
|
||||
typedef NS_ENUM(NSInteger, V2TIMGender) {
|
||||
V2TIM_GENDER_UNKNOWN = 0, ///< 未知性别
|
||||
V2TIM_GENDER_MALE = 1, ///< 男性
|
||||
V2TIM_GENDER_FEMALE = 2, ///< 女性
|
||||
};
|
||||
|
||||
/// 好友验证方式
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendAllowType) {
|
||||
V2TIM_FRIEND_ALLOW_ANY = 0, ///< 同意任何用户加好友
|
||||
V2TIM_FRIEND_NEED_CONFIRM = 1, ///< 需要验证
|
||||
V2TIM_FRIEND_DENY_ANY = 2, ///< 拒绝任何人加好友
|
||||
};
|
||||
|
||||
/// 群成员角色
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberRole) {
|
||||
V2TIM_GROUP_MEMBER_UNDEFINED = 0, ///< 未定义(没有获取该字段)
|
||||
V2TIM_GROUP_MEMBER_ROLE_MEMBER = 200, ///< 群成员
|
||||
V2TIM_GROUP_MEMBER_ROLE_ADMIN = 300, ///< 群管理员
|
||||
V2TIM_GROUP_MEMBER_ROLE_SUPER = 400, ///< 群主
|
||||
};
|
||||
|
||||
/// 用户状态类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMUserStatusType) {
|
||||
V2TIM_USER_STATUS_UNKNOWN = 0, ///< 未知状态
|
||||
V2TIM_USER_STATUS_ONLINE = 1, ///< 在线状态
|
||||
V2TIM_USER_STATUS_OFFLINE = 2, ///< 离线状态
|
||||
V2TIM_USER_STATUS_UNLOGINED = 3, ///< 未登录(如主动调用 logout 接口,或者账号注册后还未登录)
|
||||
};
|
||||
|
||||
/// 搜索关键字匹配类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMKeywordListMatchType) {
|
||||
V2TIM_KEYWORD_LIST_MATCH_TYPE_OR = 0,
|
||||
V2TIM_KEYWORD_LIST_MATCH_TYPE_AND = 1
|
||||
};
|
||||
|
||||
/// 日志回调
|
||||
typedef void (^V2TIMLogListener)(V2TIMLogLevel logLevel, NSString * _Nullable logContent);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 初始化
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 获取 V2TIMManager 管理器实例
|
||||
*/
|
||||
+ (V2TIMManager*)sharedInstance;
|
||||
/**
|
||||
* 1.2 初始化 SDK
|
||||
*
|
||||
* @param sdkAppID 应用 ID,必填项,可以在 [控制台](https://console.cloud.tencent.com/im) 中获取
|
||||
* @param config 配置信息
|
||||
* @return YES:成功;NO:失败
|
||||
*/
|
||||
- (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config;
|
||||
|
||||
/**
|
||||
* 1.3 添加 IM 监听
|
||||
*/
|
||||
- (void)addIMSDKListener:(id<V2TIMSDKListener>)listener NS_SWIFT_NAME(addIMSDKListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.4 移除 IM 监听
|
||||
*/
|
||||
- (void)removeIMSDKListener:(id<V2TIMSDKListener>)listener NS_SWIFT_NAME(removeIMSDKListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.5 反初始化 SDK
|
||||
*/
|
||||
- (void)unInitSDK;
|
||||
|
||||
/**
|
||||
* 1.6 获取版本号
|
||||
*
|
||||
* @return 返回版本号,字符串表示,例如 5.0.10
|
||||
*/
|
||||
- (NSString*)getVersion;
|
||||
|
||||
/**
|
||||
* 1.7 获取服务器时间戳
|
||||
*
|
||||
* @return UTC 时间戳,单位 s
|
||||
*/
|
||||
- (uint64_t)getServerTime;
|
||||
|
||||
/**
|
||||
* 初始化 SDK(待废弃接口,请使用 initSDK 和 addIMSDKListener 接口)
|
||||
*/
|
||||
- (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config listener:(_Nullable id<V2TIMSDKListener>)listener __attribute__((deprecated("use initSDK:config: and addIMSDKListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 登录登出
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 登录
|
||||
*
|
||||
* 登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参考 [UserSig 后台 API](https://cloud.tencent.com/document/product/269/32688)。
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 登陆时票据过期:login 函数的 V2TIMFail 会返回 ERR_USER_SIG_EXPIRED(6206)或者 ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001) 错误码,此时请您生成新的 userSig 重新登录。
|
||||
* - 在线时票据过期:用户在线期间也可能收到 V2TIMSDKListener -> onUserSigExpired 回调,此时也是需要您生成新的 userSig 并重新登录。
|
||||
* - 在线时被踢下线:用户在线情况下被踢,SDK 会通过 V2TIMSDKListener -> onKickedOffline 回调通知给您,此时可以 UI 提示用户,并再次调用 login() 重新登录。
|
||||
* - 同平台多设备在线:该功能为IM旗舰版功能,购买[旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17487)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17224#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)login:(NSString *)userID userSig:(NSString *)userSig succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(login(userID:userSig:succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.2 登出
|
||||
*
|
||||
* 退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
|
||||
*/
|
||||
- (void)logout:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(logout(succ:fail:));
|
||||
|
||||
/**
|
||||
* 2.3 获取登录用户
|
||||
*/
|
||||
- (NSString * _Nullable)getLoginUser;
|
||||
|
||||
/**
|
||||
* 2.4 获取登录状态
|
||||
*
|
||||
* 如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。
|
||||
*/
|
||||
- (V2TIMLoginStatus)getLoginStatus;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 消息收发
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 3.1 设置基本消息(文本消息和自定义消息)的事件监听器
|
||||
*
|
||||
* @note 图片消息、视频消息、语音消息等高级消息的监听,请参考 V2TIMManager+Message.h -> addAdvancedMsgListener 接口。
|
||||
*/
|
||||
- (void)addSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(addSimpleMsgListener(listener:));
|
||||
|
||||
/**
|
||||
* 3.2 移除基本消息(文本消息和自定义消息)的事件监听器
|
||||
*/
|
||||
- (void)removeSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(removeSimpleMsgListener(listener:));
|
||||
|
||||
/**
|
||||
* 3.3 发送单聊普通文本消息(最大支持 12KB)
|
||||
*
|
||||
* 文本消息支持云端的脏词过滤,如果用户发送的消息中有敏感词,V2TIMFail 回调将会返回 80001 错误码。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendC2CTextMessage:(NSString *)text to:(NSString *)userID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendC2CTextMessage(text:to:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.4 发送单聊自定义(信令)消息(最大支持 12KB)
|
||||
*
|
||||
* 自定义消息本质就是一端二进制 buffer,您可以在其上自由组织自己的消息格式(常用于发送信令),但是自定义消息不支持云端敏感词过滤。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendC2CCustomMessage:(NSData *)customData to:(NSString *)userID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendC2CCustomMessage(customData:to:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.5 发送群聊普通文本消息(最大支持 12KB)
|
||||
*
|
||||
* @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
|
||||
* - HIGH :云端会优先传输,适用于在群里发送重要消息,比如主播发送的文本消息等。
|
||||
* - NORMAL :云端按默认优先级传输,适用于在群里发送普通消息,比如观众发送的弹幕消息等。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendGroupTextMessage:(NSString *)text to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendGroupTextMessage(text:to:priority:succ:fail:));
|
||||
|
||||
/**
|
||||
* 3.6 发送群聊自定义(信令)消息(最大支持 12KB)
|
||||
*
|
||||
* @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
|
||||
* - HIGH :云端会优先传输,适用于在群里发送重要信令,比如连麦邀请,PK邀请、礼物赠送等关键性信令。
|
||||
* - NORMAL :云端按默认优先级传输,适用于在群里发送非重要信令,比如观众的点赞提醒等等。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendGroupCustomMessage:(NSData *)customData to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(sendGroupCustomMessage(customData:to:priority:succ:fail:));
|
||||
|
||||
// 3.7 更多功能,详见 V2TIMManager+Message.h
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群相关操作
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 设置群组监听器
|
||||
*/
|
||||
- (void)addGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(addGroupListener(listener:));
|
||||
|
||||
/**
|
||||
* 4.2 设置群组监听器
|
||||
*/
|
||||
- (void)removeGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(removeGroupListener(listener:));
|
||||
|
||||
/**
|
||||
* 4.3 创建群组
|
||||
*
|
||||
* @param groupType 群类型,我们为您预定义好了几种常用的群类型,您也可以在控制台定义自己需要的群类型:
|
||||
* - "Work" :工作群,成员上限 200 人,不支持由用户主动加入,需要他人邀请入群,适合用于类似微信中随意组建的工作群(对应老版本的 Private 群)。
|
||||
* - "Public" :公开群,成员上限 2000 人,任何人都可以申请加群,但加群需群主或管理员审批,适合用于类似 QQ 中由群主管理的兴趣群。
|
||||
* - "Meeting" :会议群,成员上限 6000 人,任何人都可以自由进出,且加群无需被审批,适合用于视频会议和在线培训等场景(对应老版本的 ChatRoom 群)。
|
||||
* - "Community" :社群,成员上限 100000 人,任何人都可以自由进出,且加群无需被审批,适合用于知识分享和游戏交流等超大社区群聊场景。5.8 版本开始支持,需要您购买旗舰版套餐。
|
||||
* - "AVChatRoom" :直播群,人数无上限,任何人都可以自由进出,消息吞吐量大,适合用作直播场景中的高并发弹幕聊天室。
|
||||
*
|
||||
* @param groupID 自定义群组 ID,可以传 nil。传 nil 时系统会自动分配 groupID,并通过 succ 回调返回。
|
||||
* "Community" 类型自定义群组 ID 必须以 "@TGS#_" 作为前缀。
|
||||
* @param groupName 群名称,不能为 nil,最长 100 字节,使用 UTF-8 编码,1 个汉字占 3 个字节。
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 不支持在同一个 SDKAPPID 下创建两个相同 groupID 的群。
|
||||
* - 社群(Community)功能仅 5.8.1668 增强版及以上版本支持,需[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17213)并[申请开通](https://cloud.tencent.com/document/product/269/3916?from=17215)后方可使用。
|
||||
* - 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。
|
||||
*/
|
||||
- (void)createGroup:(NSString *)groupType groupID:(NSString* _Nullable)groupID groupName:(NSString *)groupName succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(createGroup(groupType:groupID:groupName:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.4 加入群组
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 工作群(Work):不能主动入群,只能通过群成员调用 V2TIMManager+Group.h -> inviteUserToGroup 接口邀请入群。
|
||||
* - 公开群(Public):申请入群后,需要管理员审批,管理员在收到 V2TIMGroupListener -> onReceiveJoinApplication 回调后调用 V2TIMManager+Group.h -> getGroupApplicationList 接口处理加群请求。
|
||||
* - 其他群:可以直接入群。
|
||||
* - 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。
|
||||
* - 直播群(AVChatRoom):直播群新成员可以查看入群前消息,该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17484)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17179#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
*/
|
||||
- (void)joinGroup:(NSString*)groupID msg:(NSString* _Nullable)msg succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(joinGroup(groupID:msg:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.5 退出群组
|
||||
*
|
||||
* @note 在公开群(Public)、会议(Meeting)和直播群(AVChatRoom)中,群主是不可以退群的,群主只能调用 dismissGroup 解散群组。
|
||||
*/
|
||||
- (void)quitGroup:(NSString*)groupID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(quitGroup(groupID:succ:fail:));
|
||||
|
||||
/**
|
||||
* 4.6 解散群组
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 好友工作群(Work)的解散最为严格,即使群主也不能随意解散,只能由您的业务服务器调用 [解散群组 REST API](https://cloud.tencent.com/document/product/269/1624) 解散。
|
||||
* - 其他类型群的群主可以解散群组。
|
||||
*/
|
||||
- (void)dismissGroup:(NSString*)groupID succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(dismissGroup(groupID:succ:fail:));
|
||||
|
||||
// 4.7 更多功能,详见 V2TIMManager+Group.h
|
||||
|
||||
/**
|
||||
* 设置群组监听器(待废弃接口,请使用 addGroupListener 和 removeGroupListener 接口)
|
||||
*/
|
||||
- (void)setGroupListener:(id<V2TIMGroupListener>)listener __attribute__((deprecated("use addGroupListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 资料相关操作
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 5.1 获取用户资料
|
||||
* @note
|
||||
* - 获取自己的资料,传入自己的 ID 即可。
|
||||
* - userIDList 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
*/
|
||||
- (void)getUsersInfo:(NSArray<NSString *> *)userIDList succ:(V2TIMUserFullInfoListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 5.2 修改个人资料
|
||||
*/
|
||||
- (void)setSelfInfo:(V2TIMUserFullInfo *)Info succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setSelfInfo(info:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.3 订阅用户资料,从 7.4 版本开始支持
|
||||
*
|
||||
* @param userIDList 待订阅的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 该接口用于订阅陌生人的资料变更事件,订阅成功后,当订阅用户资料发生变更,您可以通过监听 onUserInfoChanged 回调来感知
|
||||
* - 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
|
||||
* - 自己的资料变更通知不需要订阅,默认会通过 onSelfInfoUpdated 回调通知给您
|
||||
* - 好友的资料变更通知不需要订阅,默认会通过 onFriendInfoChange 回调通知给您
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)subscribeUserInfo:(NSArray *)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(subscribeUserInfo(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.4 取消订阅用户资料,从 7.4 版本开始支持
|
||||
*
|
||||
* @param userIDList 需要取消订阅的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 当 userIDList 为空时,取消当前所有的订阅
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)unsubscribeUserInfo:(NSArray * _Nullable)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(unsubscribeUserInfo(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.5 搜索云端用户资料(8.4 及以上版本支持)
|
||||
* @param searchParam 用户搜索参数,详见 V2TIMUserSearchParam 的定义
|
||||
* @note
|
||||
* - 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
|
||||
* - 如果您没有开通该服务,调用接口会返回 60020 错误码
|
||||
* - 该接口返回的是云端存储的用户资料,包括好友和非好友资料,您可以调用 checkFriend 接口来判断是否为好友。
|
||||
*/
|
||||
- (void)searchUsers:(V2TIMUserSearchParam *)searchParam succ:(V2TIMUserSearchResultSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(searchUsers(searchParam:succ:fail:));
|
||||
|
||||
|
||||
/**
|
||||
* 5.6 查询用户状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @param userIDList 需要获取的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 如果您想查询自己的自定义状态,您只需要传入自己的 userID 即可
|
||||
* - 当您批量查询时,接口只会返回查询成功的用户状态信息;当所有用户均查询失败时,接口会报错
|
||||
* - 查询其他用户状态为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)getUserStatus:(NSArray *)userIDList succ:(V2TIMUserStatusListSucc)succ fail:(V2TIMFail)fail NS_SWIFT_NAME(getUserStatus(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.7 设置自己的状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @param status 待设置的自定义状态
|
||||
*
|
||||
* @note 该接口只支持设置自己的自定义状态,即 V2TIMUserStatus.customStatus
|
||||
*/
|
||||
- (void)setSelfStatus:(V2TIMUserStatus *)status succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(setSelfStatus(status:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.8 订阅用户状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @param userIDList 待订阅的用户 ID
|
||||
*
|
||||
* @note
|
||||
* - 当成功订阅用户状态后,当对方的状态(包含在线状态、自定义状态)发生变更后,您可以监听 @onUserStatusChanged 回调来感知
|
||||
* - 如果您需要订阅好友列表的状态,您只需要在控制台上打开开关即可,无需调用该接口
|
||||
* - 该接口不支持订阅自己,您可以通过监听 @onUserStatusChanged 回调来感知自身的自定义状态的变更
|
||||
* - 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)subscribeUserStatus:(NSArray *)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(subscribeUserStatus(userIDList:succ:fail:));
|
||||
|
||||
/**
|
||||
* 5.9 取消订阅用户状态,从 6.3 版本开始支持
|
||||
*
|
||||
* @note
|
||||
* - 当 userIDList 为空或者 nil 时,取消当前所有的订阅
|
||||
* - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
|
||||
*/
|
||||
- (void)unsubscribeUserStatus:(NSArray * _Nullable)userIDList succ:(_Nullable V2TIMSucc)succ fail:(_Nullable V2TIMFail)fail NS_SWIFT_NAME(unsubscribeUserStatus(userIDList:succ:fail:));
|
||||
|
||||
// 5.10 更多功能,详见 V2TIMManager+Friendship.h
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 扩展接口
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 6.1 实验性 API 接口
|
||||
*
|
||||
* @param api 接口名称
|
||||
* @param param 接口参数
|
||||
*
|
||||
* @note 该接口提供一些实验性功能
|
||||
*/
|
||||
- (void)callExperimentalAPI:(NSString *)api
|
||||
param:(NSObject * _Nullable)param
|
||||
succ:(V2TIMCallExperimentalAPISucc)succ
|
||||
fail:(V2TIMFail)fail NS_SWIFT_NAME(callExperimentalAPI(api:param:succ:fail:));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 主核心回调,帮助您时刻关注 IMSDK 的在线状态
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 主核心回调
|
||||
V2TIM_EXPORT @protocol V2TIMSDKListener <NSObject>
|
||||
@optional
|
||||
/// SDK 正在连接到服务器
|
||||
- (void)onConnecting;
|
||||
|
||||
/// SDK 已经成功连接到服务器
|
||||
- (void)onConnectSuccess;
|
||||
|
||||
/// SDK 连接服务器失败
|
||||
- (void)onConnectFailed:(int)code err:(NSString* _Nullable)err;
|
||||
|
||||
/// 当前用户被踢下线,此时可以 UI 提示用户,并再次调用 V2TIMManager 的 login() 函数重新登录。
|
||||
- (void)onKickedOffline;
|
||||
|
||||
/// 在线时票据过期:此时您需要生成新的 userSig 并再次调用 V2TIMManager 的 login() 函数重新登录。
|
||||
- (void)onUserSigExpired;
|
||||
|
||||
/// 当前用户的资料发生了更新
|
||||
- (void)onSelfInfoUpdated:(V2TIMUserFullInfo *)Info NS_SWIFT_NAME(onSelfInfoUpdated(info:));
|
||||
|
||||
/**
|
||||
* 用户状态变更通知
|
||||
*
|
||||
* @note 收到通知的情况:
|
||||
* 1. 订阅过的用户发生了状态变更(包括在线状态和自定义状态),会触发该回调
|
||||
* 2. 在 IM 控制台打开了好友状态通知开关,即使未主动订阅,当好友状态发生变更时,也会触发该回调
|
||||
* 3. 同一个账号多设备登录,当其中一台设备修改了自定义状态,所有设备都会收到该回调
|
||||
*/
|
||||
- (void)onUserStatusChanged:(NSArray<V2TIMUserStatus *> *)userStatusList NS_SWIFT_NAME(onUserStatusChanged(userStatusList:));
|
||||
|
||||
/**
|
||||
* 用户资料变更通知
|
||||
*
|
||||
* @note
|
||||
* 仅当通过 subscribeUserInfo 成功订阅的用户(仅限非好友用户)的资料发生变更时,才会激活此回调函数
|
||||
*/
|
||||
- (void)onUserInfoChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList NS_SWIFT_NAME(onUserInfoChanged(userInfoList:));
|
||||
|
||||
/**
|
||||
* 全局消息接收选项变更通知
|
||||
*/
|
||||
- (void)onAllReceiveMessageOptChanged:(V2TIMReceiveMessageOptInfo *)receiveMessageOptInfo NS_SWIFT_NAME(onAllReceiveMessageOptChanged(receiveMessageOptInfo:));
|
||||
|
||||
/**
|
||||
* 实验性事件通知
|
||||
*/
|
||||
- (void)onExperimentalNotify:(NSString *)key param:(NSObject * _Nullable)param NS_SWIFT_NAME(onExperimentalNotify(key:param:));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 基本消息回调 (高级消息请参考 V2TIMManager+Message.h -> V2TIMAdvancedMsgListener)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 基本消息回调
|
||||
V2TIM_EXPORT @protocol V2TIMSimpleMsgListener <NSObject>
|
||||
@optional
|
||||
|
||||
/// 收到 C2C 文本消息
|
||||
- (void)onRecvC2CTextMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info text:(NSString * _Nullable)text NS_SWIFT_NAME(onRecvC2CTextMessage(msgID:sender:text:));
|
||||
|
||||
/// 收到 C2C 自定义(信令)消息
|
||||
- (void)onRecvC2CCustomMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info customData:(NSData * _Nullable)data NS_SWIFT_NAME(onRecvC2CCustomMessage(msgID:sender:customData:));
|
||||
|
||||
/// 收到群文本消息
|
||||
- (void)onRecvGroupTextMessage:(NSString *)msgID groupID:(NSString * _Nullable)groupID sender:(V2TIMGroupMemberInfo *)info text:(NSString * _Nullable)text NS_SWIFT_NAME(onRecvGroupTextMessage(msgID:groupID:sender:text:));
|
||||
|
||||
/// 收到群自定义(信令)消息
|
||||
- (void)onRecvGroupCustomMessage:(NSString *)msgID groupID:(NSString * _Nullable)groupID sender:(V2TIMGroupMemberInfo *)info customData:(NSData * _Nullable)data NS_SWIFT_NAME(onRecvGroupCustomMessage(msgID:groupID:sender:customData:));
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 群组事件回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 群组事件回调
|
||||
V2TIM_EXPORT @protocol V2TIMGroupListener <NSObject>
|
||||
@optional
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群成员相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新成员加入群(该群所有的成员都能收到)
|
||||
/// 会议群(Meeting)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员变更通知) 主动配置。
|
||||
- (void)onMemberEnter:(NSString * _Nullable)groupID memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList NS_SWIFT_NAME(onMemberEnter(groupID:memberList:));
|
||||
|
||||
/// 有成员离开群(该群所有的成员都能收到)
|
||||
/// 会议群(Meeting)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员变更通知) 主动配置。
|
||||
- (void)onMemberLeave:(NSString * _Nullable)groupID member:(V2TIMGroupMemberInfo *)member NS_SWIFT_NAME(onMemberLeave(groupID:member:));
|
||||
|
||||
/// 某成员被拉入某群(该群所有的成员都能收到)
|
||||
- (void)onMemberInvited:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList NS_SWIFT_NAME(onMemberInvited(groupID:opUser:memberList:));
|
||||
|
||||
/// 有成员被踢出某群(该群所有的成员都能收到)
|
||||
- (void)onMemberKicked:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList NS_SWIFT_NAME(onMemberKicked(groupID:opUser:memberList:));
|
||||
|
||||
/// 某成员信息发生变更(该群所有的成员都能收到)
|
||||
/// 会议群(Meeting)和直播群(AVChatRoom)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员资料变更通知) 主动配置。
|
||||
- (void)onMemberInfoChanged:(NSString * _Nullable)groupID changeInfoList:(NSArray <V2TIMGroupMemberChangeInfo *> *)changeInfoList NS_SWIFT_NAME(onMemberInfoChanged(groupID:changeInfoList:));
|
||||
|
||||
/// 群组全体成员被禁言/解除禁言了(该群所有的成员都能收到)
|
||||
/// 需要提前在 [控制台](https://console.cloud.tencent.com/im) 开启通知开关。开关路径:功能配置 -> 群组配置 -> 群系统通知配置 -> 群资料变更通知 -> 群禁言变更通知。
|
||||
/// 7.5 及以上版本支持。
|
||||
- (void)onAllGroupMembersMuted:(NSString * _Nullable)groupID isMute:(BOOL)isMute NS_SWIFT_NAME(onAllGroupMembersMuted(groupID:isMute:));
|
||||
|
||||
/// 有成员被标记(该群所有的成员都能收到)
|
||||
/// 仅社群(Community)支持该回调。
|
||||
/// 7.5 及以上版本支持,需要您购买旗舰版套餐。
|
||||
- (void)onMemberMarkChanged:(NSString * _Nullable)groupID memberIDList:(NSArray<NSString *> *)memberIDList markType:(int)markType enableMark:(BOOL)enableMark NS_SWIFT_NAME(onMemberMarkChanged(groupID:memberIDList:markType:enableMark:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群生命周期相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新的群创建(创建者能收到,应用于多端消息同步的场景)
|
||||
- (void)onGroupCreated:(NSString * _Nullable)groupID NS_SWIFT_NAME(onGroupCreated(groupID:));
|
||||
|
||||
/// 某个已加入的群被解散了(该群所有的成员都能收到)
|
||||
- (void)onGroupDismissed:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser NS_SWIFT_NAME(onGroupDismissed(groupID:opUser:));
|
||||
|
||||
/// 某个已加入的群被回收了(该群所有的成员都能收到)
|
||||
- (void)onGroupRecycled:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser NS_SWIFT_NAME(onGroupRecycled(groupID:opUser:));
|
||||
|
||||
/// 某个已加入的群的信息被修改了(该群所有的成员都能收到)
|
||||
/// 以下字段的修改可能会引发该通知 groupName & introduction & notification & faceUrl & owner & allMute & custom
|
||||
/// 控制指定字段 下发通知/存漫游 请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群资料变更通知) 主动配置。
|
||||
- (void)onGroupInfoChanged:(NSString * _Nullable)groupID changeInfoList:(NSArray <V2TIMGroupChangeInfo *> *)changeInfoList NS_SWIFT_NAME(onGroupInfoChanged(groupID:changeInfoList:));
|
||||
|
||||
/// 某个已加入的群的属性被修改了,会返回所在群组的所有属性(该群所有的成员都能收到)
|
||||
- (void)onGroupAttributeChanged:(NSString *)groupID attributes:(NSMutableDictionary<NSString *,NSString *> *)attributes;
|
||||
|
||||
/// 某个已加入的群的计数器被修改了,会返回当前变更的群计数器(该群所有的成员都能收到)
|
||||
- (void)onGroupCounterChanged:(NSString * _Nullable)groupID key:(NSString *)key newValue:(NSInteger)newValue NS_SWIFT_NAME(onGroupCounterChanged(groupID:key:newValue:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 加群申请相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新的加群请求(只有群主和管理员会收到)
|
||||
- (void)onReceiveJoinApplication:(NSString * _Nullable)groupID member:(V2TIMGroupMemberInfo *)member opReason:(NSString * _Nullable)opReason NS_SWIFT_NAME(onReceiveJoinApplication(groupID:member:opReason:));
|
||||
|
||||
/// 加群或者邀请加群请求已经被群主或管理员处理了(只有申请人能够收到)
|
||||
- (void)onApplicationProcessed:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser opResult:(BOOL)isAgreeJoin opReason:(NSString * _Nullable)opReason NS_SWIFT_NAME(onApplicationProcessed(groupID:opUser:opResult:opReason:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 其他相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 指定管理员身份
|
||||
- (void)onGrantAdministrator:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList NS_SWIFT_NAME(onGrantAdministrator(groupID:opUser:memberList:));
|
||||
|
||||
/// 取消管理员身份
|
||||
- (void)onRevokeAdministrator:(NSString * _Nullable)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList NS_SWIFT_NAME(onRevokeAdministrator(groupID:opUser:memberList:));
|
||||
|
||||
/// 自己主动退出群组(主要用于多端同步)
|
||||
- (void)onQuitFromGroup:(NSString * _Nullable)groupID NS_SWIFT_NAME(onQuitFromGroup(groupID:));
|
||||
|
||||
/// 收到 RESTAPI 下发的自定义系统消息
|
||||
- (void)onReceiveRESTCustomData:(NSString * _Nullable)groupID data:(NSData * _Nullable)data NS_SWIFT_NAME(onReceiveRESTCustomData(groupID:data:));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 话题事件监听回调
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 话题创建回调
|
||||
- (void)onTopicCreated:(NSString * _Nullable)groupID topicID:(NSString * _Nullable)topicID NS_SWIFT_NAME(onTopicCreated(groupID:topicID:));
|
||||
|
||||
/// 话题被删除回调
|
||||
- (void)onTopicDeleted:(NSString * _Nullable)groupID topicIDList:(NSArray<NSString *> *)topicIDList NS_SWIFT_NAME(onTopicDeleted(groupID:topicIDList:));
|
||||
|
||||
/// 话题更新回调
|
||||
- (void)onTopicChanged:(NSString * _Nullable)groupID topicInfo:(V2TIMTopicInfo *)topicInfo NS_SWIFT_NAME(onTopicChanged(groupID:topicInfo:));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 用户基本资料
|
||||
V2TIM_EXPORT @interface V2TIMUserInfo : NSObject
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,nullable) NSString* nickName;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,nullable) NSString* faceURL;
|
||||
@end
|
||||
|
||||
/// 用户详细资料
|
||||
V2TIM_EXPORT @interface V2TIMUserFullInfo : V2TIMUserInfo
|
||||
|
||||
/// 用户签名
|
||||
@property(nonatomic,strong,nullable) NSString *selfSignature;
|
||||
|
||||
/// 用户性别
|
||||
@property(nonatomic,assign) V2TIMGender gender;
|
||||
|
||||
/// 用户角色
|
||||
@property(nonatomic,assign) uint32_t role;
|
||||
|
||||
/// 用户等级
|
||||
@property(nonatomic,assign) uint32_t level;
|
||||
|
||||
/// 出生日期
|
||||
@property(nonatomic,assign) uint32_t birthday;
|
||||
|
||||
/// 用户好友验证方式
|
||||
@property(nonatomic,assign) V2TIMFriendAllowType allowType;
|
||||
|
||||
/// 用户自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 用户自定义字段) 配置用户自定义字段,然后再调用该接口进行设置,key 值不需要加 Tag_Profile_Custom_ 前缀。
|
||||
@property(nonatomic,strong,nullable) NSDictionary<NSString *,NSData *> * customInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMUserSearchParam : NSObject
|
||||
/// 搜索的关键字列表,关键字列表最多支持 5 个,keyword 会自动匹配用户 ID、昵称。
|
||||
@property(nonatomic, strong,nullable) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索。
|
||||
/// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
|
||||
@property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
|
||||
|
||||
/// 用户性别(如果不设置,默认男性和女性都会返回)
|
||||
@property(nonatomic,assign) V2TIMGender gender;
|
||||
|
||||
/// 用户最小生日(如果不设置,默认值为 0)
|
||||
@property(nonatomic,assign) uint32_t minBirthday;
|
||||
|
||||
/// 用户最大生日(如果不设置,默认 birthday >= minBirthday 的用户都会返回)
|
||||
@property(nonatomic,assign) uint32_t maxBirthday;
|
||||
|
||||
/// 每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20)
|
||||
@property(nonatomic,assign) NSUInteger searchCount;
|
||||
|
||||
/// 每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMUserSearchResult 中的返回值。
|
||||
@property(nonatomic,strong) NSString *searchCursor;
|
||||
|
||||
@end
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMUserSearchResult : NSObject
|
||||
/// 是否已经返回全部满足搜索条件的用户列表
|
||||
@property(nonatomic,assign) BOOL isFinished;
|
||||
|
||||
/// 满足搜索条件的用户总数量
|
||||
@property(nonatomic,assign) NSUInteger totalCount;
|
||||
|
||||
/// 下一次云端搜索的起始位置
|
||||
@property(nonatomic,strong,nullable) NSString *nextCursor;
|
||||
|
||||
/// 当前一次云端搜索返回的用户列表
|
||||
@property(nonatomic,strong) NSArray<V2TIMUserFullInfo *> *userList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户状态
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMUserStatus : NSObject
|
||||
|
||||
/// 用户的 ID
|
||||
@property (nonatomic, copy, readonly, nullable) NSString *userID;
|
||||
|
||||
/// 用户的状态
|
||||
@property (nonatomic, assign, readonly) V2TIMUserStatusType statusType;
|
||||
|
||||
/// 用户的自定义状态, 最大 100 字节
|
||||
@property (nonatomic, copy, nullable) NSString *customStatus;
|
||||
|
||||
/// 用户在线设备列表
|
||||
@property (nonatomic, strong, readonly) NSMutableArray<NSString *> *onlineDevices;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群成员资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群成员基本资料
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberInfo : NSObject
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,nullable) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* nickName;
|
||||
|
||||
/// 用户好友备注
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* friendRemark;
|
||||
|
||||
/// 群成员名片
|
||||
@property(nonatomic,strong,nullable) NSString* nameCard;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,readonly,nullable) NSString* faceURL;
|
||||
|
||||
/// 群成员在线终端列表
|
||||
@property(nonatomic,strong,readonly) NSMutableArray<NSString*>* onlineDevices;
|
||||
|
||||
@end
|
||||
|
||||
/// 群成员详细资料
|
||||
V2TIM_EXPORT @interface V2TIMGroupMemberFullInfo : V2TIMGroupMemberInfo
|
||||
/// 群成员自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群成员自定义字段) 配置用户自定义字段,然后再调用该接口进行设置。
|
||||
@property(nonatomic,strong,nullable) NSDictionary<NSString *,NSData *> * customInfo;
|
||||
|
||||
/// 群成员角色(V2TIMGroupMemberRole),修改群成员角色请调用 V2TIMManager+Group.h -> setGroupMemberRole 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t role;
|
||||
|
||||
/// 群成员禁言结束时间戳,禁言用户请调用 V2TIMManager+Group.h -> muteGroupMember 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t muteUntil;
|
||||
|
||||
/// 群成员入群时间,自动生成,不可修改
|
||||
@property(nonatomic,assign,readonly) time_t joinTime;
|
||||
|
||||
/// 群成员是否在线
|
||||
/// @note
|
||||
/// - 不支持直播群 AVChatRoom;
|
||||
/// - 该字段仅在调用 - getGroupMemberList:filter:nextSeq:succ:fail: 接口时有效;
|
||||
/// - 7.3 及其以上版本支持,需要您购买旗舰版套餐。
|
||||
@property(nonatomic,assign,readonly) BOOL isOnline;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// SDK 配置参数表
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
V2TIM_EXPORT @interface V2TIMSDKConfig : NSObject
|
||||
|
||||
/// 本地写 log 文件的等级,默认 DEBUG 等级, IMSDK 的日志默认存储于 /Library/Caches/ 目录下
|
||||
@property(nonatomic,assign) V2TIMLogLevel logLevel;
|
||||
|
||||
/// log 监听回调(回调在主线程,日志回调可能比较频繁,请注意不要在回调里面同步处理太多耗时任务,可能会堵塞主线程)
|
||||
@property(nonatomic,copy,nullable) V2TIMLogListener logListener;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
BIN
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/ios-arm64_x86_64-simulator/ImSDK_Plus.framework/ImSDK_Plus
generated
Executable file
BIN
Pods/TXIMSDK_Plus_iOS_XCFramework/ImSDK_Plus.xcframework/ios-arm64_x86_64-simulator/ImSDK_Plus.framework/ImSDK_Plus
generated
Executable file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
framework module ImSDK_Plus {
|
||||
umbrella header "ImSDK_Plus.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPrivacyTracking</key>
|
||||
<false/>
|
||||
<key>NSPrivacyCollectedDataTypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyTrackingDomains</key>
|
||||
<array/>
|
||||
<key>NSPrivacyAccessedAPITypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>35F9.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>E174.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>C617.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>CA92.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
Reference in New Issue
Block a user