通知

更新时间: 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);
    }
    
此文档是否对你有帮助?
有帮助
去反馈
  • 在线通知
  • API介绍
  • API原型
  • 参数说明
  • 返回值说明
  • 示例
  • 多端同步通知
  • API介绍
  • API原型
  • 参数说明
  • 返回值说明
  • 示例
  • 离线通知
  • API介绍
  • API原型
  • 参数说明
  • 返回值说明
  • 示例
  • 频道列表同步通知
  • API介绍
  • API原型
  • 参数说明
  • 返回值说明
  • 示例
  • 频道成员变更同步通知
  • API介绍
  • API原型
  • 参数说明
  • 返回值说明
  • 示例