事件订阅

事件订阅,允许用户订阅其他人发布的事件,当被订阅人发布事件后,订阅者可以收到事件通知。事件分为系统预定义事件和自定义事件,系统预定义事件类型范围为1-99999,用户自定义事件范围必须大于99999。 对于用户自定义事件,用户可以根据自己的需求场景来指定不同的事件类型和事件来定义不同的含义;对于系统预定义事件,系统保留1~9999的事件值,用户如果要发送系统预定义事件,事件值必须大于9999。

目前系统预定义事件只有在线状态事件,事件类型为1,事件值为:1 - 用户登录,2 - 用户登出,3 - 用户与服务器连接断开。当用户登录、登出、异常退出后,服务器会下发响应的在线状态事件值来通知订阅者。用户在某端订阅或者取消订阅某些事件,会同时对其他端的生效,所以取消订阅事件时需谨慎,防止影响了其他端。

接收事件

提前注册好接收事件的回调函数,在登录后,回调函数会收到订阅的事件信息。需要注册两个回调函数:接收订阅事件回调函数、批量接收订阅的事件的回调函数。

/// <summary>
/// (全局回调)统一注册接收订阅的事件的回调函数
/// </summary>
/// <param name="cb"></param>
public static void RegPushEventCb(PushEventDelegate cb)

/// <summary>
/// (全局回调)统一注册批量接收订阅的事件的回调函数
/// </summary>
/// <param name="cb"></param>
public static void RegBatchPushEventCb(BatchPushEventDelegaet cb)

发布事件

用户可以根据自己的需求来发布系统预定义事件或自定义事件。发布事件时,需要指定事件类型、事件值、事件消息id、事件有效期、事件广播类型、事件同步类型,可以根据需求选择是否附加自定义事件扩展属性。其中事件有效期范围为:60s到7天,单位秒,订阅者在有效期内登录才可以收到对应的事件;事件广播类型指定是否通知离线订阅者;事件同步类型指定是否把事件同步给自己的其他端;自定义事件扩展属性可以设置任意字符串。

/// <summary>
/// 发布事件
/// </summary>
/// <param name="info">事件信息</param>
/// <param name="cb"></param>
/// <param name="data"></param>
/// <returns></returns>
public static bool Publish(NIMEventInfo info, PublishEventDelegate cb,object data = null)

订阅事件

只有先订阅了某个用户的某个事件后,才可以收到对应用户发布的事件。订阅事件,需要指定事件类型、订阅有效期、订阅后是否立即同步最新事件。其中订阅有效期范围为:60s到30天,单位秒,如果订阅有效期超时后,需要重新订阅才可以继续收到事件

/// <summary>
/// 订阅事件
/// </summary>
/// <param name="eventType">事件类型</param>
/// <param name="period">订阅有效期,单位:秒,范围:60s到30天</param>
/// <param name="syncType">订阅后是否立即同步最新事件,见NIMEventSubscribeSyncType定义</param>
/// <param name="idList"用户列表></param>
/// <param name="cb"></param>
/// <returns></returns>
public static bool Subscribe(int eventType,long period, NIMEventSubscribeSyncEventType syncType,List<string> idList,SubscribeEventDelegate cb)

取消订阅事件

不想接收事件时可以取消订阅该事件,取消后不会收到事件的通知。可以取消指定好友发布的事件,也可以取消所有订阅的事件。

/// <summary>
/// 按账号取消指定事件的订阅关系
/// </summary>
/// <param name="eventType">事件类型</param>
/// <param name="idList">用户列表</param>
/// <param name="cb"></param>
/// <returns></returns>
public static bool UnSubscribe(int eventType,List<string> idList, UnSubscribeEventDelegate cb)

 /// <summary>
/// 取消指定事件的全部订阅关系
/// </summary>
/// <param name="eventType">事件类型</param>
/// <param name="cb"></param>
/// <returns></returns>
public static bool BatchUnSubscribe(int eventType, BatchUnscribeEventDelegate cb)

查询订阅关系

可以查询指定好友的事件订阅信息,也可以查询指定类型的事件订阅信息。

/// <summary>
/// 按账号查询指定事件订阅关系
/// </summary>
/// <param name="eventType">事件类型</param>
/// <param name="idList">用户列表</param>
/// <param name="cb"></param>
/// <returns></returns>
public static bool QuerySubscribe(int eventType,List<string> idList, QuerySubscribeDelegate cb)

/// <summary>
/// 查询指定事件的全部订阅关系
/// </summary>
/// <param name="eventType">事件类型</param>
/// <param name="cb"></param>
/// <returns></returns>
public static bool BatchQuerySubscribe(int eventType, QuerySubscribeDelegate cb)