TIMCommunityManager.h 57 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027
  1. // Copyright (c) 2023 Tencent. All rights reserved.
  2. #ifndef SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_COMMUNITY_MANAGER_H_
  3. #define SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_COMMUNITY_MANAGER_H_
  4. #include "TIMCloudDef.h"
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. // 模块简介
  9. // - 社群接口,包含获取加入的社群列表、创建话题、删除话题、修改话题,获取话题列表等功能
  10. //
  11. // 模块参数说明
  12. // - API 的参数采用 json 字符串格式,请使用文件中预先定义的 JsonKey 进行参数传递和解析
  13. // - 如果参数中包含非英文字符,请使用 UTF-8 编码
  14. //
  15. // 模块回调说明
  16. // 1. 回调的类型:
  17. // - 调用 API 时传入的 TIMCommCallback 回调,用于异步返回 API 的调用结果
  18. // - 调用 TIMSetXXXCallback 设置的全局回调,用于接收后台推送的通知
  19. // 2. 回调触发的线程:
  20. // - 对于 Windows 平台,当在主线程中调用 @ref TIMInit 接口时,SDK 会将所有回调抛到主线程,请确保主线程已创建消息循环;否则,回调将在 SDK 内部的逻辑线程触发
  21. // - 对于 Android 平台,当调用 @ref TIMInit 接口的线程支持消息循环时,SDK 会将所有回调抛到该线程;否则,回调将在 SDK 内部的逻辑线程触发
  22. // - 对于 iOS 和 MAC 平台,SDK 默认将所有回调抛到主线程
  23. // - 对于 Linux 平台,暂不支持将回调抛到主线程,回调将在 SDK 内部的逻辑线程触发
  24. /////////////////////////////////////////////////////////////////////////////////
  25. //
  26. // 一. 社群功能相关配置选项定义
  27. //
  28. /////////////////////////////////////////////////////////////////////////////////
  29. // 1.1 设置(修改)话题信息的类型
  30. enum TIMCommunityTopicModifyInfoFlag {
  31. // 未定义
  32. kTIMCommunityTopicModifyInfoFlag_None = 0x00,
  33. // 修改话题名称
  34. kTIMCommunityTopicModifyInfoFlag_Name = 0x01,
  35. // 修改话题公告
  36. kTIMCommunityTopicModifyInfoFlag_Notification = 0x01 << 1,
  37. // 修改话题简介
  38. kTIMCommunityTopicModifyInfoFlag_Introduction = 0x01 << 2,
  39. // 修改话题头像URL
  40. kTIMCommunityTopicModifyInfoFlag_FaceUrl = 0x01 << 3,
  41. // 修改话题是否全体禁言
  42. kTIMCommunityTopicModifyInfoFlag_MuteALl = 0x01 << 8,
  43. // 话题自定义字段
  44. kTIMCommunityTopicModifyInfoFlag_CustomString = 0x01 << 11,
  45. // 修改话题草稿
  46. kTIMCommunityTopicModifyInfoFlag_Draft = 0x01 << 14,
  47. // 修改话题默认权限,7.8 版本开始支持
  48. kTIMCommunityTopicModifyInfoFlag_DefaultPermissions = 0x01 << 15,
  49. // 申请加入话题选项(私密话题有效)(从 8.4 版本开始支持)
  50. kTIMCommunityTopicModifyInfoFlag_TopicAddOption = 0x1 << 25,
  51. // 话题邀请选项(私密话题有效)(从 8.4 版本开始支持)
  52. kTIMCommunityTopicModifyInfoFlag_TopicApproveOption = 0x1 << 26,
  53. };
  54. // 1.2 修改权限组信息的类型
  55. enum TIMPermissionGroupModifyInfoFlag {
  56. // 未定义
  57. kTIMPermissionGroupModifyInfoFlag_None = 0x00,
  58. // 名称
  59. kTIMPermissionGroupModifyInfoFlag_Name = 0x01,
  60. // 群权限
  61. kTIMPermissionGroupModifyInfoFlag_GroupPermission = 0x01 << 1,
  62. // 自定义字段
  63. kTIMPermissionGroupModifyInfoFlag_CustomData = 0x01 << 2,
  64. };
  65. // 1.3 社群权限值
  66. enum V2TIMCommunityPermissionValue {
  67. // 修改群资料权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
  68. V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO = 0x01,
  69. // 群成员管理权限,包含踢人,进群审核、修改成员资料等。该位设置为0,表示没有该权限;设置为1,表示有该权限
  70. V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER = 0x1 << 1,
  71. // 管理权限组资料权限,包含创建、修改、删除权限组;在权限组中添加、修改、删除话题权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
  72. V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_INFO = 0x1 << 2,
  73. // 权限组成员管理权限,包含邀请成员进权限组和把成员从权限组踢出等。该位设置为0,表示没有该权限;设置为1,表示有该权限
  74. V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_MEMBER = 0x1 << 3,
  75. // 话题管理权限,包含创建、修改、删除话题等。该位设置为0,表示没有该权限;设置为1,表示有该权限
  76. V2TIM_COMMUNITY_PERMISSION_MANAGE_TOPIC_IN_COMMUNITY = 0x1 << 4,
  77. // 对某群成员在社群下所有话题的禁言权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
  78. V2TIM_COMMUNITY_PERMISSION_MUTE_MEMBER = 0x1 << 5,
  79. //群成员在社群下所有话题的发消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
  80. V2TIM_COMMUNITY_PERMISSION_SEND_MESSAGE = 0x1 << 6,
  81. // 在社群下所有话题发 at all 消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
  82. V2TIM_COMMUNITY_PERMISSION_AT_ALL = 0x1 << 7,
  83. // 在社群下所有话题拉取入群前的历史消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
  84. V2TIM_COMMUNITY_PERMISSION_GET_HISTORY_MESSAGE = 0x1 << 8,
  85. // 在社群下所有话题撤回他人消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
  86. V2TIM_COMMUNITY_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE = 0x1 << 9,
  87. // 封禁社群成员权限。该位设置为0,表示没有该权限;设置为1,表示有该权限。
  88. V2TIM_COMMUNITY_PERMISSION_BAN_MEMBER = 0x1 << 10,
  89. };
  90. // 1.4 话题权限值
  91. enum V2TIMTopicPermissionValue {
  92. // 管理当前话题的权限,包括修改当前话题的资料、删除当前话题。该位设置为0,表示没有该权限;设置为1,表示有该权限
  93. V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC = 0x1,
  94. // 在当前话题中管理话题权限,包括添加、修改、移除话题权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
  95. V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC_PERMISSION = 0x1L << 1,
  96. // 在当前话题中禁言成员权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
  97. V2TIM_TOPIC_PERMISSION_MUTE_MEMBER = 0x1L << 2,
  98. // 在当前话题中发消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
  99. V2TIM_TOPIC_PERMISSION_SEND_MESSAGE = 0x1L << 3,
  100. // 在当前话题中拉取入群前的历史消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
  101. V2TIM_TOPIC_PERMISSION_GET_HISTORY_MESSAGE = 0x1L << 4,
  102. // 在当前话题中撤回他人消息权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
  103. V2TIM_TOPIC_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE = 0x1L << 5,
  104. // 在当前话题中发消息时有 at all 权限。该位设置为0,表示没有该权限;设置为1,表示有该权限
  105. V2TIM_TOPIC_PERMISSION_AT_ALL = 0x1L << 6,
  106. };
  107. /////////////////////////////////////////////////////////////////////////////////
  108. //
  109. // 二. 社群事件回调定义
  110. //
  111. /////////////////////////////////////////////////////////////////////////////////
  112. /**
  113. * 2.1 话题创建的回调
  114. *
  115. * @param group_id 话题所属的社群 ID
  116. * @param topic_id 话题 ID
  117. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  118. */
  119. typedef void (*TIMCommunityCreateTopicCallback)(const char* group_id, const char* topic_id, const void* user_data);
  120. /**
  121. * 2.2 话题被删除的回调
  122. *
  123. * @param group_id 话题所属的社群 ID
  124. * @param topic_id_array 话题列表
  125. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  126. */
  127. typedef void (*TIMCommunityDeleteTopicCallback)(const char* group_id, const char* topic_id_array, const void* user_data);
  128. /**
  129. * 2.3 话题更新的回调
  130. *
  131. * @param group_id 话题所属的社群 ID
  132. * @param topic_info 话题信息,参见 @ref TIMGroupTopicInfo 类型
  133. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  134. */
  135. typedef void (*TIMCommunityChangeTopicInfoCallback)(const char* group_id, const char* topic_info, const void* user_data);
  136. /**
  137. * 2.4 话题自定义系统通知
  138. *
  139. * @param group_id 话题所属的社群 ID
  140. * @param custom_data 自定义的通知信息
  141. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  142. */
  143. typedef void (*TIMCommunityReceiveTopicRESTCustomDataCallback)(const char* topic_id, const char* custom_data, const void* user_data);
  144. /**
  145. * 2.5 权限组创建的回调
  146. *
  147. * @param group_id 权限组所属的社群 ID
  148. * @param permission_group_info 权限组信息,Json Key 请参考 @ref PermissionGroupInfo
  149. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  150. */
  151. typedef void (*TIMCommunityCreatePermissionGroupCallback)(const char* group_id, const char* permission_group_info, const void* user_data);
  152. /**
  153. * 2.6 权限组删除的回调
  154. *
  155. * @param group_id 权限组所属的社群 ID
  156. * @param permission_group_id_array 权限组 ID 列表
  157. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  158. */
  159. typedef void (*TIMCommunityDeletePermissionGroupCallback)(const char* group_id, const char* permission_group_id_array, const void* user_data);
  160. /**
  161. * 2.7 权限组更新的回调
  162. *
  163. * @param group_id 权限组所属的社群 ID
  164. * @param permission_group_info 权限组信息,Json Key 请参考 @ref PermissionGroupInfo
  165. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  166. */
  167. typedef void (*TIMCommunityChangePermissionGroupInfoCallback)(const char* group_id, const char* permission_group_info, const void* user_data);
  168. /**
  169. * 2.8 添加成员到权限组中
  170. *
  171. * @param group_id 权限组所属的社群 ID
  172. * @param json_result 权限组 ID 以及 向该权限组中添加的用户 ID 列表,Json Key 请参考 @ref PermissionGroupCallback
  173. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  174. */
  175. typedef void (*TIMCommunityAddMembersToPermissionGroupCallback)(const char* group_id, const char* json_result, const void* user_data);
  176. /**
  177. * 2.9 从权限组中删除成员
  178. *
  179. * @param group_id 权限组所属的社群 ID
  180. * @param json_result 权限组 ID 以及 从该权限组中删除的用户 ID 列表,Json Key 请参考 @ref PermissionGroupCallback
  181. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  182. */
  183. typedef void (*TIMCommunityRemoveMembersFromPermissionGroupCallback)(const char* group_id, const char* json_result, const void* user_data);
  184. /**
  185. * 2.10 话题权限添加的回调
  186. *
  187. * @param group_id 权限组所属的社群 ID
  188. * @param json_result 权限组 ID 以及 向该权限组中添加的话题权限信息,Json Key 请参考 @ref PermissionGroupCallback
  189. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  190. */
  191. typedef void (*TIMCommunityAddTopicPermissionCallback)(const char* group_id, const char* json_result, const void* user_data);
  192. /**
  193. * 2.11 话题权限删除的回调
  194. *
  195. * @param group_id 权限组所属的社群 ID
  196. * @param json_result 权限组 ID 以及 从该权限组中删除的话题 ID 列表,Json Key 请参考 @ref PermissionGroupCallback
  197. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  198. */
  199. typedef void (*TIMCommunityDeleteTopicPermissionCallback)(const char* group_id, const char* json_result, const void* user_data);
  200. /**
  201. * 2.12 话题权限修改的回调
  202. *
  203. * @param group_id 权限组所属的社群 ID
  204. * @param json_result 权限组 ID 以及 该权限组内修改的话题权限列表,Json Key 请参考 @ref TopicPermission
  205. * @param user_data ImSDK负责透传的用户自定义数据,未做任何处理
  206. */
  207. typedef void (*TIMCommunityModifyTopicPermissionCallback)(const char* group_id, const char* json_result, const void* user_data);
  208. /////////////////////////////////////////////////////////////////////////////////
  209. //
  210. // 三. 注册社群事件回调 API
  211. //
  212. /////////////////////////////////////////////////////////////////////////////////
  213. /**
  214. * 3.1 设置话题被创建的回调
  215. *
  216. * @param cb 话题创建回调,请参考 @ref TIMCommunityCreateTopicCallback
  217. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  218. */
  219. TIM_API void TIMSetCommunityCreateTopicCallback(TIMCommunityCreateTopicCallback cb, const void* user_data);
  220. /**
  221. * 3.2 设置话题被删除的回调
  222. *
  223. * @param cb 话题被删除回调,请参考 @ref TIMCommunityDeleteTopicCallback
  224. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  225. */
  226. TIM_API void TIMSetCommunityDeleteTopicCallback(TIMCommunityDeleteTopicCallback cb, const void* user_data);
  227. /**
  228. * 3.3 设置话题更新的回调
  229. *
  230. * @param cb 话题更新回调,请参考 @ref TIMCommunityChangeTopicInfoCallback
  231. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  232. */
  233. TIM_API void TIMSetCommunityChangeTopicInfoCallback(TIMCommunityChangeTopicInfoCallback cb, const void* user_data);
  234. /**
  235. * 3.4 设置 RESTAPI 下发的话题自定义系统消息的回调
  236. * @param cb 回调,请参考 @ref TIMCommunityReceiveTopicRESTCustomDataCallback
  237. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  238. */
  239. TIM_API void TIMSetCommunityReceiveTopicRESTCustomDataCallback(TIMCommunityReceiveTopicRESTCustomDataCallback cb,
  240. const void* user_data);
  241. /**
  242. * 3.5 设置权限组被创建的回调
  243. * @param cb 权限组创建回调,请参考 @ref TIMCommunityCreatePermissionGroupCallback
  244. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  245. */
  246. TIM_API void TIMSetCommunityCreatePermissionGroupCallback(TIMCommunityCreatePermissionGroupCallback cb,
  247. const void* user_data);
  248. /**
  249. * 3.6 设置权限组被删除的回调
  250. * @param cb 权限组删除回调,请参考 @ref TIMCommunityDeletePermissionGroupCallback
  251. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  252. */
  253. TIM_API void TIMSetCommunityDeletePermissionGroupCallback(TIMCommunityDeletePermissionGroupCallback cb,
  254. const void* user_data);
  255. /**
  256. * 3.7 设置权限组更新的回调
  257. * @param cb 权限组更新回调,请参考 @ref TIMCommunityChangePermissionGroupInfoCallback
  258. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  259. */
  260. TIM_API void TIMSetCommunityChangePermissionGroupInfoCallback(TIMCommunityChangePermissionGroupInfoCallback cb,
  261. const void* user_data);
  262. /**
  263. * 3.8 设置向权限组中添加成员的回调
  264. * @param cb 添加成员回调,请参考 @ref TIMCommunityAddMembersToPermissionGroupCallback
  265. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  266. */
  267. TIM_API void TIMSetCommunityAddMembersToPermissionGroupCallback(TIMCommunityAddMembersToPermissionGroupCallback cb,
  268. const void* user_data);
  269. /**
  270. * 3.9 设置从权限组中删除成员的回调
  271. * @param cb 删除成员回调,请参考 @ref TIMCommunityRemoveMembersFromPermissionGroupCallback
  272. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  273. */
  274. TIM_API void TIMSetCommunityRemoveMembersFromPermissionGroupCallback(
  275. TIMCommunityRemoveMembersFromPermissionGroupCallback cb, const void* user_data);
  276. /**
  277. * 3.10 设置向权限组中增加话题权限的回调
  278. * @param cb
  279. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  280. */
  281. TIM_API void TIMSetCommunityAddTopicPermissionCallback(TIMCommunityAddTopicPermissionCallback cb,
  282. const void* user_data);
  283. /**
  284. * 3.11 设置从权限组删除话题权限的回调
  285. * @param cb
  286. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  287. */
  288. TIM_API void TIMSetCommunityDeleteTopicPermissionCallback(TIMCommunityDeleteTopicPermissionCallback cb,
  289. const void* user_data);
  290. /**
  291. * 3.12 设置权限组中的话题权限修改的回调
  292. * @param cb
  293. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  294. */
  295. TIM_API void TIMSetCommunityModifyTopicPermissionCallback(TIMCommunityModifyTopicPermissionCallback cb,
  296. const void* user_data);
  297. /////////////////////////////////////////////////////////////////////////////////
  298. //
  299. // 四. 社群话题功能相关 API
  300. //
  301. /////////////////////////////////////////////////////////////////////////////////
  302. /**
  303. * 4.1 创建支持话题的社群
  304. *
  305. * @param json_group_create_param 创建群组的参数Json字符串, Json Key 请参考 @ref CreateGroupParam
  306. * @param cb 创建群组成功与否的回调。回调函数定义和参数解析请参考 @ref TIMCommCallback
  307. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  308. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  309. *
  310. * @note
  311. * - 创建社群时可以指定群ID,若未指定时IM通讯云服务器会生成一个唯一的ID,以便后续操作,群组ID通过创建群组时传入的回调返回
  312. * - 创建支持话题的社群,一定要填写 kTIMCreateGroupIsSupportTopic 字段并设置为 true
  313. *
  314. * __示例__
  315. * @code{.cpp}
  316. * Json::Value json_group_member_array(Json::arrayValue);
  317. *
  318. * Json::Value json_value_param;
  319. * json_value_param[kTIMCreateGroupParamGroupId] = "first group id";
  320. * json_value_param[kTIMCreateGroupParamGroupType] = kTIMGroup_Public;
  321. * json_value_param[kTIMCreateGroupParamGroupName] = "first group name";
  322. * json_value_param[kTIMCreateGroupParamGroupMemberArray] = json_group_member_array;
  323. *
  324. * json_value_param[kTIMCreateGroupParamNotification] = "group notification";
  325. * json_value_param[kTIMCreateGroupParamIntroduction] = "group introduction";
  326. * json_value_param[kTIMCreateGroupParamFaceUrl] = "group face url";
  327. * json_value_param[kTIMCreateGroupParamMaxMemberCount] = 2000;
  328. * json_value_param[kTIMCreateGroupParamAddOption] = kTIMGroupAddOpt_Any;
  329. * json_value_param[kTIMCreateGroupParamApproveOption] = kTIMGroupAddOpt_Any;
  330. * json_value_param[kTIMCreateGroupIsSupportTopic] = true;
  331. *
  332. * const void* user_data = nullptr; // 回调函数回传
  333. * int ret = TIMGroupCreate(json_value_param.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_params, const void* user_data) {
  334. * if (ERR_SUCC != code) {
  335. * // 创建群组失败
  336. * return;
  337. * }
  338. *
  339. * // 创建群组成功 解析Json获取创建后的GroupID
  340. * }, user_data);
  341. * if (TIM_SUCC != ret) {
  342. * // TIMGroupCreate 接口调用失败
  343. * }
  344. *
  345. * // json_value_param.toStyledString().c_str() 得到 json_group_create_param JSON 字符串如下
  346. * {
  347. * "create_group_param_add_option" : 2,
  348. * "create_group_param_face_url" : "group face url",
  349. * "create_group_param_group_id" : "first group id",
  350. * "create_group_param_group_member_array" : [],
  351. * "create_group_param_group_name" : "first group name",
  352. * "create_group_param_group_type" : 0,
  353. * "create_group_param_introduction" : "group introduction",
  354. * "create_group_param_max_member_num" : 2000,
  355. * "create_group_param_notification" : "group notification",
  356. * "create_group_param_is_support_topic" : true
  357. * }
  358. * @endcode
  359. */
  360. TIM_API int TIMCommunityCreate(const char* json_group_create_param, TIMCommCallback cb, const void* user_data);
  361. /**
  362. * 4.2 获取当前用户已经加入的支持话题的社群列表
  363. *
  364. * @param cb 获取社群列表的回调。回调函数定义请参考 @ref TIMCommCallback
  365. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  366. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  367. *
  368. * __示例__
  369. * @code{.cpp}
  370. * TIMCommunityGetJoinedCommunityList([](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  371. * printf("TIMCommunityGetJoinedCommunityList code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  372. * }, nullptr);
  373. * @endcode
  374. */
  375. TIM_API int TIMCommunityGetJoinedCommunityList(TIMCommCallback cb, const void* user_data);
  376. /**
  377. * 4.3 创建话题
  378. *
  379. * @param group_id 群 ID
  380. * @param json_topic_info 话题信息,Json Key 请参考 @ref TopicInfo
  381. * @param cb 创建话题的回调。回调函数定义请参考 @ref TIMCommCallback
  382. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  383. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  384. *
  385. * __示例__
  386. * @code{.cpp}
  387. * const std::string group_id = GetCommunityID();
  388. *
  389. * json::Object topic_info;
  390. * topic_info[kTIMCommunityTopicInfoTopicID] = GetTopicID();
  391. * topic_info[kTIMCommunityTopicInfoTopicName] = "topic name";
  392. *
  393. * TIMCommunityCreateTopicInCommunity(group_id.c_str(), json::Serialize(topic_info).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  394. * printf("TIMCommunityCreateTopicInCommunity code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  395. * }, nullptr);
  396. * @endcode
  397. */
  398. TIM_API int TIMCommunityCreateTopicInCommunity(const char* group_id, const char* json_topic_info, TIMCommCallback cb,
  399. const void* user_data);
  400. /**
  401. * 4.4 删除话题
  402. *
  403. * @param group_id 群 ID
  404. * @param json_topic_id_array 话题 ID 列表
  405. * @param cb 删除话题的回调。回调函数定义请参考 @ref TIMCommCallback
  406. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  407. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  408. *
  409. * __示例__
  410. * @code{.cpp}
  411. * const std::string group_id = GetCommunityID();
  412. *
  413. * json::Array json_array;
  414. * json_array.push_back("id1");
  415. * json_array.push_back("id2");
  416. *
  417. * TIMCommunityDeleteTopicFromCommunity(group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  418. * printf("TIMCommunityDeleteTopicFromCommunity code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  419. * }, nullptr);
  420. * @endcode
  421. */
  422. TIM_API int TIMCommunityDeleteTopicFromCommunity(const char* group_id, const char* json_topic_id_array,
  423. TIMCommCallback cb, const void* user_data);
  424. /**
  425. * 4.5 修改话题信息
  426. *
  427. * @param json_topic_info 话题信息, Json Key 请参考 @ref TIMGroupTopicInfo
  428. * @param cb 修改话题信息的回调。回调函数定义请参考 @ref TIMCommCallback
  429. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  430. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  431. *
  432. * __示例__
  433. * @code{.cpp}
  434. * json::Object topic_info;
  435. * topic_info[kTIMCommunityTopicInfoTopicID] = GetTopicID();
  436. * topic_info[kTIMCommunityTopicInfoTopicName] = "topic name";
  437. * topic_info[kTIMCommunityTopicInfoNotification] = "topic notification";
  438. * topic_info[kTIMCommunityTopicInfoModifyFlag] = kTIMCommunityTopicModifyInfoFlag_Name |
  439. * kTIMCommunityTopicModifyInfoFlag_Notification;
  440. *
  441. * TIMCommunitySetTopicInfo(json::Serialize(topic_info).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  442. * printf("TIMCommunitySetTopicInfo code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  443. * }, nullptr);
  444. * @endcode
  445. */
  446. TIM_API int TIMCommunitySetTopicInfo(const char* json_topic_info, TIMCommCallback cb, const void* user_data);
  447. /**
  448. * 4.6 获取话题列表
  449. *
  450. * @param group_id 群 ID
  451. * @param json_topic_id_array 话题 ID 列表
  452. * @param cb 获取话题的回调。回调函数定义请参考 @ref TIMCommCallback
  453. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  454. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  455. *
  456. * @note: json_topic_id_array 传空时,获取此社群下的所有话题列表
  457. *
  458. * __示例__
  459. * @code{.cpp}
  460. * const std::string group_id = GetCommunityID();
  461. *
  462. * json::Array json_array;
  463. * json_array.push_back("id1");
  464. * json_array.push_back("id2");
  465. *
  466. * TIMCommunityGetTopicInfoList(group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  467. * printf("TIMCommunityGetTopicInfoList code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  468. * }, nullptr);
  469. * @endcode
  470. */
  471. TIM_API int TIMCommunityGetTopicInfoList(const char* group_id, const char* json_topic_id_array, TIMCommCallback cb,
  472. const void* user_data);
  473. /**
  474. * 4.7 登录用户在话题中的消息接收选项是否继承社群。该功能仅增强版 SDK 8.1 及以上版本支持。
  475. *
  476. * @param topic_id 话题 ID
  477. * @param isInherit 是否继承
  478. * @param cb 修改的回调。回调函数定义请参考 @ref TIMCommCallback
  479. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  480. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  481. */
  482. TIM_API int TIMCommunitySetTopicInheritMessageReceiveOptionFromCommunity(const char* topic_id, bool isInherit,
  483. TIMCommCallback cb, const void* user_data);
  484. /////////////////////////////////////////////////////////////////////////////////
  485. //
  486. // 五. 权限组 API
  487. //
  488. /////////////////////////////////////////////////////////////////////////////////
  489. /**
  490. * 5.1 创建权限组(7.8 及其以上版本支持)
  491. * @param json_permission_group_info 权限组信息,Json Key 请参考 @ref PermissionGroupInfo
  492. * @param cb 创建权限组的回调。回调函数定义请参考 @ref TIMCommCallback
  493. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  494. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  495. *
  496. * @note
  497. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  498. *
  499. * __示例__
  500. * @code{.cpp}
  501. * json::Object permission_group_info;
  502. * permission_group_info[kTIMCommunityGroupID] = "xxx";
  503. * permission_group_info[kTIMPermissionGroupName] = "permission group name";
  504. *
  505. * TIMCommunityCreatePermissionGroupInCommunity(json::Serialize(permission_group_info).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  506. * printf("TIMCommunityCreatePermissionGroupInCommunity code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  507. * }, nullptr);
  508. * @endcode
  509. */
  510. TIM_API int TIMCommunityCreatePermissionGroupInCommunity(const char* json_permission_group_info, TIMCommCallback cb,
  511. const void* user_data);
  512. /**
  513. * 5.2 删除权限组(7.8 及其以上版本支持)
  514. * @param group_id 社群 ID
  515. * @param json_permission_group_id_array 权限组 ID 列表
  516. * @param cb 删除权限组的回调。回调函数定义请参考 @ref TIMCommCallback
  517. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  518. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  519. *
  520. * @note
  521. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  522. *
  523. * __示例__
  524. * @code{.cpp}
  525. * const std::string group_id = GetCommunityID();
  526. * json::Array json_array;
  527. * json_array.push_back("id1");
  528. * json_array.push_back("id2");
  529. *
  530. * TIMCommunityDeletePermissionGroupFromCommunity(group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  531. * printf("TIMCommunityDeletePermissionGroupFromCommunity code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  532. * }, nullptr);
  533. * @endcode
  534. */
  535. TIM_API int TIMCommunityDeletePermissionGroupFromCommunity(const char* group_id,
  536. const char* json_permission_group_id_array,
  537. TIMCommCallback cb, const void* user_data);
  538. /**
  539. * 5.3 修改权限组信息(7.8 及其以上版本支持)
  540. * @param json_permission_group_info 权限组信息,Json Key 请参考 @ref PermissionGroupInfo
  541. * @param cb 修改权限组的回调。回调函数定义请参考 @ref TIMCommCallback
  542. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  543. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  544. *
  545. * @note
  546. * - 该功能为旗舰版功能,需要您购买旗舰版套餐
  547. *
  548. * __示例__
  549. * @code{.cpp}
  550. * json::Object permission_group_info;
  551. * permission_group_info[kTIMCommunityGroupID] = "xxx";
  552. * permission_group_info[kTIMPermissionGroupID] = "xxx";
  553. * permission_group_info[kTIMPermissionGroupName] = "permission group name";
  554. * permission_group_info[kTIMGroupPermission] = V2TIMCommunityPermissionValue::V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO | V2TIMCommunityPermissionValue::V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER;
  555. *
  556. * TIMCommunityModifyPermissionGroupInfoInCommunity(json::Serialize(permission_group_info).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  557. * printf("TIMCommunityModifyPermissionGroupInfoInCommunity code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  558. * }, nullptr);
  559. * @endcode
  560. */
  561. TIM_API int TIMCommunityModifyPermissionGroupInfoInCommunity(const char* json_permission_group_info, TIMCommCallback cb,
  562. const void* user_data);
  563. /**
  564. * 5.4 获取已加入的权限组列表(7.8 及其以上版本支持)
  565. * @param group_id 社群 ID
  566. * @param cb 获取已加入的权限组列表的回调。回调函数定义请参考 @ref TIMCommCallback
  567. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  568. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  569. *
  570. * @note
  571. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  572. *
  573. * __示例__
  574. * @code{.cpp}
  575. * TIMCommunityGetJoinedPermissionGroupListInCommunity([](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  576. * printf("TIMCommunityGetJoinedPermissionGroupListInCommunity code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  577. * }, nullptr);
  578. * @endcode
  579. */
  580. TIM_API int TIMCommunityGetJoinedPermissionGroupListInCommunity(const char* group_id, TIMCommCallback cb,
  581. const void* user_data);
  582. /**
  583. * 5.5 获取权限组列表(7.8 及其以上版本支持)
  584. * @param group_id 社群 ID
  585. * @param json_permission_group_id_array 权限组 ID 列表
  586. * @param cb 获取权限组列表的回调。回调函数定义请参考 @ref TIMCommCallback
  587. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  588. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  589. *
  590. * @note:
  591. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  592. * - json_permission_group_id_array 为空时,获取所有的权限组列表;不为空时,获取指定的权限组列表。
  593. *
  594. * __示例__
  595. * @code{.cpp}
  596. * const std::string group_id = "xxx";
  597. *
  598. * json::Array json_array;
  599. * json_array.push_back("id1");
  600. * json_array.push_back("id2");
  601. *
  602. * TIMCommunityGetPermissionGroupListInCommunity(group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  603. * printf("TIMCommunityGetPermissionGroupListInCommunity code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  604. * }, nullptr);
  605. * @endcode
  606. */
  607. TIM_API int TIMCommunityGetPermissionGroupListInCommunity(const char* group_id,
  608. const char* json_permission_group_id_array,
  609. TIMCommCallback cb, const void* user_data);
  610. /**
  611. * 5.6 向社群权限组添加成员(7.8 及其以上版本支持)
  612. * @param group_id 社群 ID
  613. * @param permission_group_id 权限组 ID
  614. * @param json_member_id_array 群成员 ID 列表
  615. * @param cb 添加成员的回调。回调函数定义请参考 @ref TIMCommCallback
  616. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  617. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  618. *
  619. * @note
  620. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  621. *
  622. * __示例__
  623. * @code{.cpp}
  624. * const std::string group_id = "xxx";
  625. * const std::string permission_group_id = "xxx";
  626. *
  627. * json::Array json_array;
  628. * json_array.push_back("id1");
  629. * json_array.push_back("id2");
  630. *
  631. * TIMCommunityAddCommunityMembersToPermissionGroup(group_id.c_str(), permission_group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  632. * printf("TIMCommunityAddCommunityMembersToPermissionGroup code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  633. * }, nullptr);
  634. * @endcode
  635. */
  636. TIM_API int TIMCommunityAddCommunityMembersToPermissionGroup(const char* group_id, const char* permission_group_id,
  637. const char* json_member_id_array, TIMCommCallback cb,
  638. const void* user_data);
  639. /**
  640. * 5.7 从社群权限组删除成员(7.8 及其以上版本支持)
  641. * @param group_id 社群 ID
  642. * @param permission_group_id 权限组 ID
  643. * @param json_member_id_array 群成员 ID 列表
  644. * @param cb 删除成员的回调。回调函数定义请参考 @ref TIMCommCallback
  645. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  646. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  647. *
  648. * @note
  649. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  650. *
  651. * __示例__
  652. * @code{.cpp}
  653. * const std::string group_id = "xxx";
  654. * const std::string permission_group_id = "xxx";
  655. *
  656. * json::Array json_array;
  657. * json_array.push_back("id1");
  658. * json_array.push_back("id2");
  659. *
  660. * TIMCommunityRemoveCommunityMembersFromPermissionGroup(group_id.c_str(), permission_group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  661. * printf("TIMCommunityRemoveCommunityMembersFromPermissionGroup code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  662. * }, nullptr);
  663. * @endcode
  664. */
  665. TIM_API int TIMCommunityRemoveCommunityMembersFromPermissionGroup(const char* group_id, const char* permission_group_id,
  666. const char* json_member_id_array, TIMCommCallback cb,
  667. const void* user_data);
  668. /**
  669. * 5.8 获取社群权限组成员列表(7.8 及其以上版本支持)
  670. * @param group_id 社群 ID
  671. * @param permission_group_id 权限组 ID
  672. * @param json_member_id_array 群成员 ID 列表
  673. * @param cb 获取社群权限组成员列表的回调。回调函数定义请参考 @ref TIMCommCallback
  674. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  675. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  676. *
  677. * @note
  678. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  679. *
  680. * __示例__
  681. * @code{.cpp}
  682. * const std::string group_id = "xxx";
  683. * const std::string permission_group_id = "xxx";
  684. * const std::string next_cursor = "";
  685. *
  686. * TIMCommunityGetCommunityMemberListInPermissionGroup(group_id.c_str(), permission_group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  687. * printf("TIMCommunityGetCommunityMemberListInPermissionGroup code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  688. * }, nullptr);
  689. * @endcode
  690. */
  691. TIM_API int TIMCommunityGetCommunityMemberListInPermissionGroup(const char* group_id, const char* permission_group_id,
  692. const char* next_cursor, TIMCommCallback cb,
  693. const void* user_data);
  694. /**
  695. * 5.9 向权限组添加话题权限(7.8 及其以上版本支持)
  696. * @param group_id 社群 ID
  697. * @param permission_group_id 权限组 ID
  698. * @param json_topic_permission_map 话题权限
  699. * @param cb 添加话题权限的回调。回调函数定义请参考 @ref TIMCommCallback
  700. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  701. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  702. *
  703. * @note
  704. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  705. *
  706. * __示例__
  707. * @code{.cpp}
  708. * const std::string group_id = "xxx";
  709. * const std::string permission_group_id = "xxx";
  710. *
  711. * json::Array json_array;
  712. * json::Object json_obj;
  713. * json_obj[kTIMTopicPermissionKey] = "topic id";
  714. * json_obj[kTIMTopicPermissionValue] = V2TIMTopicPermissionValue::V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC | V2TIMTopicPermissionValue::V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC_PERMISSION;
  715. * json_array.push_back(json_obj);
  716. *
  717. * TIMCommunityAddTopicPermissionToPermissionGroup(group_id.c_str(), permission_group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  718. * printf("TIMCommunityAddTopicPermissionToPermissionGroup code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  719. * }, nullptr);
  720. * @endcode
  721. */
  722. TIM_API int TIMCommunityAddTopicPermissionToPermissionGroup(const char* group_id, const char* permission_group_id,
  723. const char* json_topic_permission_map, TIMCommCallback cb,
  724. const void* user_data);
  725. /**
  726. * 5.10 从权限组中删除话题权限(7.8 及其以上版本支持)
  727. * @param group_id 社群 ID
  728. * @param permission_group_id 权限组 ID
  729. * @param json_topic_id_array 话题 ID 列表
  730. * @param cb 删除话题权限的回调。回调函数定义请参考 @ref TIMCommCallback
  731. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  732. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  733. *
  734. * @note
  735. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  736. *
  737. * __示例__
  738. * @code{.cpp}
  739. * const std::string group_id = "xxx";
  740. * const std::string permission_group_id = "xxx";
  741. *
  742. * json::Array json_array;
  743. * json_array.push_back("id1");
  744. * json_array.push_back("id2");
  745. *
  746. * TIMCommunityDeleteTopicPermissionFromPermissionGroup(group_id.c_str(), permission_group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  747. * printf("TIMCommunityDeleteTopicPermissionFromPermissionGroup code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  748. * }, nullptr);
  749. * @endcode
  750. */
  751. TIM_API int TIMCommunityDeleteTopicPermissionFromPermissionGroup(const char* group_id, const char* permission_group_id,
  752. const char* json_topic_id_array, TIMCommCallback cb,
  753. const void* user_data);
  754. /**
  755. * 5.11 修改权限组中的话题权限(7.8 及其以上版本支持)
  756. * @param group_id 社群 ID
  757. * @param permission_group_id 权限组 ID
  758. * @param json_topic_permission_map 话题权限
  759. * @param cb 修改权限组中的话题权限的回调。回调函数定义请参考 @ref TIMCommCallback
  760. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  761. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  762. *
  763. * @note
  764. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  765. *
  766. * __示例__
  767. * @code{.cpp}
  768. * const std::string group_id = "xxx";
  769. * const std::string permission_group_id = "xxx";
  770. *
  771. * json::Array json_array;
  772. * json::Object json_obj;
  773. * json_obj[kTIMTopicPermissionKey] = "topic id";
  774. * json_obj[kTIMTopicPermissionValue] = V2TIMTopicPermissionValue::V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC | V2TIMTopicPermissionValue::V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC_PERMISSION;
  775. * json_array.push_back(json_obj);
  776. *
  777. * TIMCommunityModifyTopicPermissionInPermissionGroup(group_id.c_str(), permission_group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  778. * printf("TIMCommunityModifyTopicPermissionInPermissionGroup code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  779. * }, nullptr);
  780. * @endcode
  781. */
  782. TIM_API int TIMCommunityModifyTopicPermissionInPermissionGroup(const char* group_id, const char* permission_group_id,
  783. const char* json_topic_permission_map,
  784. TIMCommCallback cb, const void* user_data);
  785. /**
  786. * 5.12 获取权限组中的话题权限(7.8 及其以上版本支持)
  787. * @param group_id 社群 ID
  788. * @param permission_group_id 权限组 ID
  789. * @param json_topic_id_array 话题 ID 列表
  790. * @param cb 获取权限组中的话题权限的回调。回调函数定义请参考 @ref TIMCommCallback
  791. * @param user_data 用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
  792. * @return int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 @ref TIMResult
  793. *
  794. * @note
  795. * - 该功能为旗舰版功能,需要您购买旗舰版套餐。
  796. *
  797. * __示例__
  798. * @code{.cpp}
  799. * const std::string group_id = "xxx";
  800. * const std::string permission_group_id = "xxx";
  801. *
  802. * json::Array json_array;
  803. * json_array.push_back("id1");
  804. * json_array.push_back("id2");
  805. *
  806. * TIMCommunityGetTopicPermissionInPermissionGroup(group_id.c_str(), permission_group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
  807. * printf("TIMCommunityGetTopicPermissionInPermissionGroup code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
  808. * }, nullptr);
  809. * @endcode
  810. */
  811. TIM_API int TIMCommunityGetTopicPermissionInPermissionGroup(const char* group_id, const char* permission_group_id,
  812. const char* json_topic_id_array, TIMCommCallback cb,
  813. const void* user_data);
  814. /////////////////////////////////////////////////////////////////////////////////
  815. //
  816. // 六. 社群 API 参数相关的 Json Key 定义
  817. //
  818. /////////////////////////////////////////////////////////////////////////////////
  819. //------------------------------------------------------------------------------
  820. // 6.1 TopicInfo(话题信息)
  821. // string, 读写, 话题 ID, 只能在创建话题或者修改话题信息的时候设置。组成方式为:社群 ID + @TOPIC#_xxx,例如社群 ID 为 @TGS#_123,则话题 ID 为 @TGS#_123@TOPIC#_xxx
  822. static const char* kTIMCommunityTopicInfoTopicID = "group_topic_info_topic_id";
  823. // string, 读写, 话题类型(默认为 Public 话题,只能在创建话题的时候设置)(从 8.4 版本开始支持)
  824. // "Public" :公开话题,社群内成员可以自由进出发言。
  825. // "Private" :私密话题,有自己的成员列表(成员上限 10000 人),社群成员需要加入话题才能发言(私密话题需要购买企业版套餐包)。
  826. static const char* kTIMCommunityTopicInfoTopicType = "group_topic_info_topic_type";
  827. // string, 读写, 话题名称
  828. static const char* kTIMCommunityTopicInfoTopicName = "group_topic_info_topic_name";
  829. // string, 读写, 话题介绍
  830. static const char* kTIMCommunityTopicInfoIntroduction = "group_topic_info_introduction";
  831. // string, 读写, 话题公告
  832. static const char* kTIMCommunityTopicInfoNotification = "group_topic_info_notification";
  833. // string, 读写, 话题头像
  834. static const char* kTIMCommunityTopicInfoFaceURL = "group_topic_info_topic_face_url";
  835. // bool, 读写, 话题全员禁言
  836. static const char* kTIMCommunityTopicInfoIsAllMuted = "group_topic_info_is_all_muted";
  837. // uint32, 只读, 当前用户在话题中的禁言时间
  838. static const char* kTIMCommunityTopicInfoSelfMuteTime = "group_topic_info_self_mute_time";
  839. // string, 读写, 话题自定义字段
  840. static const char* kTIMCommunityTopicInfoCustomString = "group_topic_info_custom_string";
  841. // uint @ref TIMReceiveMessageOpt, 只读, 话题消息接收选项,修改话题消息接收选项请调用 @ref TIMMsgSetGroupReceiveMessageOpt 接口
  842. static const char* kTIMCommunityTopicInfoRecvOpt = "group_topic_info_recv_opt";
  843. // string, 读写, 话题草稿
  844. static const char* kTIMCommunityTopicInfoDraftText = "group_topic_info_draft_text";
  845. // uint64, 只读, 话题消息未读数量
  846. static const char* kTIMCommunityTopicInfoUnreadCount = "group_topic_info_unread_count";
  847. // object @ref Message, 只读, 话题 lastMessage
  848. static const char* kTIMCommunityTopicInfoLastMessage = "group_topic_info_last_message";
  849. // uint64, 只读, 话题已读消息的 sequence,从 7.8 版本开始支持
  850. static const char* kTIMCommunityTopicInfoReadSequence = "topic_info_read_sequence";
  851. // array @ref GroupAtInfo, 只读, 话题 at 信息列表
  852. static const char* kTIMCommunityTopicInfoGroupAtInfoArray = "group_topic_info_group_at_info_array";
  853. // uint @ref TIMGroupModifyInfoFlag, 只写(必填), 修改标识,可设置多个值按位或
  854. static const char* kTIMCommunityTopicInfoModifyFlag = "group_modify_info_param_modify_flag";
  855. // uint32, 只读, 话题创建时间
  856. static const char* kTIMCommunityTopicCreateTime = "topic_create_time";
  857. // uint @ref TIMGroupAddOption, 只写(选填),申请加入话题是否需要管理员审批(私密话题有效,默认不需要审批,可以自由加入)(从 8.4 版本开始支持)
  858. static const char* kTIMCommunityTopicInfoTopicAddOpt = "group_topic_info_topic_add_opt";
  859. // uint @ref TIMGroupAddOption, 只写(选填),邀请加入话题是否需要管理员审批(私密话题有效,默认不需要审批,可以自由加入)(从 8.4 版本开始支持)
  860. static const char* kTIMCommunityTopicInfoTopicApproveOpt = "group_topic_info_topic_approve_opt";
  861. // array @ref GroupMemberInfo, 只写(选填), 话题默认群成员(私密话题有效,最大支持 100 个群成员,只能在创建话题的时候设置)(从 8.4 版本开始支持)
  862. static const char* kTIMCommunityTopicInfoMemberlist = "group_topic_info_member_list";
  863. // uint32, 读写, 话题成员的最大个数(私密话题有效,最大支持 10000,默认 10000,只能在创建话题的时候设置)(从 8.4 版本开始支持)
  864. static const char* kTIMCommunityTopicInfoMemberMaxCount = "group_topic_info_member_max_count";
  865. // uint64, 读写, 话题默认权限, 7.8 版本开始支持。群成员在没有加入任何权限组时的默认权限,仅在社群资料 @ref GroupDetailInfo 中的 kTIMGroupDetailInfoEnablePermissionGroup 为 true 时生效
  866. static const char* kTIMCommunityTopicInfoDefaultPermissions = "default_permissions";
  867. // bool, 只读, 登录用户在话题中的消息接收选项是否继承社群。该功能仅增强版 SDK 8.1 及以上版本支持。
  868. static const char* kTIMCommunityTopicInfoIsInheritMessageReceiveOptionFromCommunity = "group_topic_info_is_inherit_message_receive_option_from_community";
  869. //------------------------------------------------------------------------------
  870. // 6.2 TopicInfoResult(获取话题信息的结果)
  871. // int, 只读, 结果 0:成功;非 0:失败
  872. static const char* kTIMCommunityTopicInfoResultErrorCode = "group_topic_info_result_error_code";
  873. // string, 只读, 如果删除失败,会返回错误信息
  874. static const char* kTIMCommunityTopicInfoResultErrorMessage = "group_topic_info_result_error_message";
  875. // object @ref TopicInfo, 只读, 如果获取成功,会返回对应的 @ref TopicInfo 信息
  876. static const char* kTIMCommunityTopicInfoResultTopicInfo = "group_topic_info_result_topic_info";
  877. //------------------------------------------------------------------------------
  878. // 6.3 TopicOperationResult(话题操作结果)
  879. // int, 只读, 结果 0:成功;非 0:失败
  880. static const char* kTIMCommunityTopicOperationResultErrorCode = "group_topic_operation_result_error_code";
  881. // string, 只读, 如果删除失败,会返回错误信息
  882. static const char* kTIMCommunityTopicOperationResultErrorMessage = "group_topic_operation_result_error_message";
  883. // string, 只读, 如果删除成功,会返回对应的 topicID
  884. static const char* kTIMCommunityTopicOperationResultTopicID = "group_topic_operation_result_topic_id";
  885. //------------------------------------------------------------------------------
  886. // 6.4 PermissionGroupInfo(权限组信息)
  887. // string, 读写, 社群 ID。
  888. static const char* kTIMCommunityGroupID = "community_group_id";
  889. // string, 读写, 权限组 ID, 只能在创建话题或者修改话题信息的时候设置。
  890. static const char* kTIMPermissionGroupID = "permission_group_id";
  891. // string, 读写, 权限组名称。
  892. static const char* kTIMPermissionGroupName = "permission_group_name";
  893. // string, 读写, 权限组自定义数据。
  894. static const char* kTIMPermissionCustomData = "permission_custom_data";
  895. // uint64, 读写, 社群权限。
  896. static const char* kTIMGroupPermission = "group_permission";
  897. // uint64, 只读, 权限组人数。
  898. static const char* kTIMPermissionGroupMemberCount = "permission_group_member_count";
  899. // uint @ref TIMPermissionGroupModifyInfoFlag, 只写(必填), 修改标识,可设置多个值按位或
  900. static const char* kTIMPermissionGroupModifyInfoFlag = "permission_group_modify_info_flag";
  901. //------------------------------------------------------------------------------
  902. // 6.5 TopicPermission(话题权限 key-value 对)
  903. // string, 读写, 自定义字段的 key
  904. static const char* kTIMTopicPermissionKey = "topic_permission_key";
  905. // uint64, 读写, 自定义字段的 value
  906. static const char* kTIMTopicPermissionValue = "topic_permission_value";
  907. //------------------------------------------------------------------------------
  908. // 6.6 PermissionGroupInfoResult(获取权限组信息的结果)
  909. // int, 只读, 结果 0:成功;非 0:失败
  910. static const char* kTIMPermissionGroupInfoResultErrorCode = "permission_group_info_result_error_code";
  911. // string, 只读, 如果删除失败,会返回错误信息
  912. static const char* kTIMPermissionGroupInfoResultErrorMessage = "permission_group_info_result_error_message";
  913. // object @ref PermissionGroupInfo, 只读, 如果获取成功,会返回对应的 @ref PermissionGroupInfo 信息
  914. static const char* kTIMPermissionGroupInfoResult = "permission_group_info_result";
  915. //------------------------------------------------------------------------------
  916. // 6.7 PermissionGroupOperationResult(权限组操作结果)
  917. // int, 只读, 结果 0:成功;非 0:失败
  918. static const char* kTIMPermissionGroupOperationResultErrorCode = "permission_group_operation_result_error_code";
  919. // string, 只读, 如果删除失败,会返回错误信息
  920. static const char* kTIMPermissionGroupOperationResultErrorMessage = "permission_group_operation_result_error_message";
  921. // string, 只读, 如果删除成功,会返回对应的 permissionGroupID
  922. static const char* kTIMPermissionGroupOperationResultID = "permission_group_operation_result_id";
  923. //------------------------------------------------------------------------------
  924. // 6.8 PermissionGroupMemberOperationResult(权限组成员处理结果)
  925. // string, 只读, 被邀请加入权限组的用户 ID
  926. static const char* kTIMPermissionGroupMemberOperationResultIdentifier = "permission_group_member_operation_result_identifier";
  927. // int, 只读, 处理结果
  928. static const char* kTIMPermissionGroupMemberOperationResultErrorCode = "permission_group_member_operation_result_error_code";
  929. //------------------------------------------------------------------------------
  930. // 6.9 PermissionGroupMemberInfoResult(获取权限组成员列表接口的返回)
  931. // string, 只读, 下一次拉取的标志, server返回空表示没有更多的数据,否则在下次获取数据时填入这个标志
  932. static const char* kTIMPermissionGroupMemberInfoResultNextCursor = "permission_group_member_info_result_next_cursor";
  933. // array @ref GroupMemberInfo, 只读, 成员信息列表
  934. static const char* kTIMPermissionGroupMemberInfoResultArray = "permission_group_member_info_result_array";
  935. //------------------------------------------------------------------------------
  936. // 6.10 TopicPermissionResult(获取话题权限列表接口的返回)
  937. // int, 只读, 结果 0:成功;非 0:失败
  938. static const char* kTIMTopicPermissionResultErrorCode = "topic_permission_result_error_code";
  939. // string, 只读, 如果获取失败,会返回错误信息
  940. static const char* kTIMTopicPermissionResultErrorMessage = "topic_permission_result_error_message";
  941. // string, 只读, 话题 ID。
  942. static const char* kTIMTopicPermissionResultTopicID = "topic_permission_result_topic_id";
  943. // uint64, 只读, 话题 权限。
  944. static const char* kTIMTopicPermissionResultTopicPermission = "topic_permission_result_topic_permission";
  945. // string, 只读, 社群 ID。
  946. static const char* kTIMTopicPermissionResultGroupID = "topic_permission_result_group_id";
  947. // string, 只读, 权限组 ID。
  948. static const char* kTIMTopicPermissionResultPermissionGroupID = "topic_permission_result_permission_group_id";
  949. //------------------------------------------------------------------------------
  950. // 6.11 PermissionGroupCallback(权限组相关监听回调)
  951. // string, 读写, 权限组 ID
  952. static const char* kTIMPermissionGroupId = "permission_group_id";
  953. // array, 只读, 话题权限 map, Json Key 请参考 @ref TopicPermission
  954. static const char* kTIMTopicPermissionMap = "topic_permission_map";
  955. // array, 只读, 删除话题权限的话题 id 列表
  956. static const char* kTIMTopicIDList = "topic_id_list";
  957. // array, 只读,权限组中添加或者删除成员的 id 列表
  958. static const char* kTIMMemberIDList = "member_id_list";
  959. #ifdef __cplusplus
  960. }
  961. #endif // __cplusplus
  962. #endif // SRC_PLATFORM_CROSS_PLATFORM_INCLUDE_TIM_COMMUNITY_MANAGER_H_