通知
更新时间: 2024/08/05 10:42:21
通知包含在线通知、离线通知、同步通知、其他通知,开发者可以通过注册通知回调函数从而获取通知。返回的通知带有统一的接口体,需要根据类型解析。如下:
enum NIMSignalingEventType
{
kNIMSignalingEventTypeClose = 1, /**< 返回NIMSignalingNotifyInfoClose,支持在线、离线通知 */
kNIMSignalingEventTypeJoin = 2, /**< 返回NIMSignalingNotifyInfoJoin,支持在线、离线通知 */
kNIMSignalingEventTypeInvite = 3, /**< 返回NIMSignalingNotifyInfoInvite,支持在线、离线通知 */
kNIMSignalingEventTypeCancelInvite = 4, /**< 返回NIMSignalingNotifyInfoCancelInvite,支持在线、离线通知 */
kNIMSignalingEventTypeReject = 5, /**< 返回NIMSignalingNotifyInfoReject,支持在线、多端同步、离线通知 */
kNIMSignalingEventTypeAccept = 6, /**< 返回NIMSignalingNotifyInfoAccept,支持在线、多端同步、离线通知 */
kNIMSignalingEventTypeLeave = 7, /**< 返回NIMSignalingNotifyInfoLeave,支持在线、离线通知 */
kNIMSignalingEventTypeCtrl = 8, /**< 返回NIMSignalingNotifyInfoControl,支持在线通知 */
};
在线通知
API介绍
注册信令的在线通知回调接口。
API原型
-
C++
static void RegOnlineNotifyCb(SignalingNotifyCallback cb)
File:nim_cpp_signaling.h
Namespace:nim
Class:Signaling
-
C
void nim_signaling_reg_online_notify_cb(nim_signaling_notify_cb_func cb, const void* user_data)
File:nim_signaling.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
cb | function | 回调函数 |
user_data | void* | 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理 |
返回值说明
无返回值。
示例
- C++
enum LogType { logtype_opt = 0, logtype_res, logtype_online, logtype_clientsync, logtype_offline, }; void OnCallbackNotify(std::shared_ptr<SignalingNotifyInfo> info, LogType log_type) { if (info) { switch (info->event_type_) { case kNIMSignalingEventTypeClose: { auto cur_info = (SignalingNotifyInfoClose*)info.get(); if (cur_info) { //to do } break; } case kNIMSignalingEventTypeJoin: { auto cur_info = (SignalingNotifyInfoJoin*)info.get(); if (cur_info) { //to do } break; } case kNIMSignalingEventTypeLeave: { auto cur_info = (SignalingNotifyInfoLeave*)info.get(); if (cur_info) { //to do } break; } case kNIMSignalingEventTypeInvite: { auto cur_info = (SignalingNotifyInfoInvite*)info.get(); if (cur_info) { //to do } break; } case kNIMSignalingEventTypeCancelInvite: { auto cur_info = (SignalingNotifyInfoCancelInvite*)info.get(); if (cur_info) { //to do } break; } case kNIMSignalingEventTypeReject: { auto cur_info = (SignalingNotifyInfoReject*)info.get(); if (cur_info) { //to do } break; } case kNIMSignalingEventTypeAccept: { auto cur_info = (SignalingNotifyInfoAccept*)info.get(); if (cur_info) { //to do } break; } case kNIMSignalingEventTypeCtrl: { auto cur_info = (SignalingNotifyInfoControl*)info.get(); if (cur_info) { //to do } break; } default: { auto cur_info = (SignalingNotifyInfo*)info.get(); if (cur_info) { //to do } break; } } } } void CallbackSignalingOnlineNotify(std::shared_ptr<SignalingNotifyInfo> info) { OnCallbackNotify(info, logtype_online); } void init() { Signaling::RegOnlineNotifyCb(&CallbackSignalingOnlineNotify); }
多端同步通知
API介绍
注册信令的多端同步通知回调接口,用于通知信令相关的多端同步通知。比如自己在手机端接受邀请,PC端会同步收到这个通知
API原型
-
C++
static void RegMutilClientSyncNotifyCb(SignalingNotifyCallback cb)
File:nim_cpp_signaling.h
Namespace:nim
Class:Signaling
-
C
void nim_signaling_reg_mutil_client_sync_notify_cb(nim_signaling_notify_cb_func cb, const void* user_data)
File:nim_signaling.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
cb | function | 回调函数 |
user_data | void* | 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理 |
返回值说明
无返回值。
示例
- C++
void CallbackSignalingClientSyncNotify(std::shared_ptr<SignalingNotifyInfo> info) { OnCallbackNotify(info, logtype_clientsync); } void init() { Signaling::RegMutilClientSyncNotifyCb(&CallbackSignalingClientSyncNotify); }
离线通知
API介绍
注册信令的离线通知回调接口。
API原型
-
C++
static void RegOfflineNotifyCb(SignalingNotifyListCallback cb)
File:nim_cpp_signaling.h
Namespace:nim
Class:Signaling
-
C
void nim_signaling_reg_offline_notify_cb(nim_signaling_notify_list_cb_func cb, const void* user_data)
File:nim_signaling.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
cb | function | 回调函数 |
user_data | void* | 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理 |
返回值说明
无返回值。
示例
-
C++
void CallbackSignalingOfflineNotify(std::list<std::shared_ptr<SignalingNotifyInfo>> infos) { for (auto it : infos) { OnCallbackNotify(it, logtype_offline); } } void init() { Signaling::RegOfflineNotifyCb(&CallbackSignalingOfflineNotify); }
频道列表同步通知
API介绍
注册信令的频道列表同步回调接口。
在login或者relogin后,会通知该设备账号还未退出的频道列表,用于同步;如果没有在任何频道中,也会返回该同步通知,list为空。
API原型
-
C++
static void RegChannelsSyncCb(SignalingChannelListCallback cb)
File:nim_cpp_signaling.h
Namespace:nim
Class:Signaling
-
C
void nim_signaling_reg_channels_sync_cb(nim_signaling_channels_sync_cb_func cb, const void* user_data)
File:nim_signaling.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
cb | function | 回调函数 |
user_data | void* | 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理 |
返回值说明
无返回值。
示例
-
C++
void CallbackSignalingChannelsNotify(std::list<SignalingChannelDetailedinfo> infos) { for (auto& it : infos) { std::string cid = it.channel_info_.channel_id_; //AddChannel(&it.channel_info_, &it.members_); if (cur_channel_id_ == cid) { //InitSignalChannel(&it.channel_info_, &it.members_); } } } void init() { Signaling::RegChannelsSyncCb(&CallbackSignalingChannelsNotify); }
频道成员变更同步通知
API介绍
注册信令的频道成员变更同步回调接口。
用于同步频道内的成员列表变更,当前该接口为定时接口,2分钟同步一次,成员有变化时才上报。
由于一些特殊情况,导致成员在离开或掉线前没有主动调用离开频道接口,使得该成员的离开没有对应的离开通知事件,由该回调接口【频道成员变更同步通知】告知用户。
API原型
-
C++
static void RegMembersSyncCb(SignalingChannelCallback cb)
File:nim_cpp_signaling.h
Namespace:nim
Class:Signaling
-
C
void nim_signaling_reg_members_sync_cb(nim_signaling_members_sync_cb_func cb, const void* user_data)
File:nim_signaling.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
cb | function | 回调函数 |
user_data | void* | 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理 |
返回值说明
无返回值。
示例
-
C++
void CallbackSignalingMembersNotify(SignalingChannelDetailedinfo info) { std::string cid = info.channel_info_.channel_id_; auto channel = FindChannel(cid); if (channel) { channel->info_ = info; if (cur_channel_id_ == cid) { //InitSignalChannel(&channel->info_.channel_info_, &channel->info_.members_); } } } void init() { Signaling::RegMembersSyncCb(&CallbackSignalingMembersNotify); }