// // NIMEventSubscribeManagerProtocol.h // NIMLib // // Created by Netease. // Copyright (c) 2017 Netease. All rights reserved. // #import @class NIMSubscribeEvent; @class NIMSubscribeRequest; NS_ASSUME_NONNULL_BEGIN /** * 事件普通回调 * * @param error 错误信息,如果成功,error 为 nil * @param event 事件,填充了发布的时间 */ typedef void(^NIMEventSubscribeBlock)(NSError * __nullable error, NIMSubscribeEvent * __nullable event); /** * 订阅/取消订阅事件回调 * * @param error 错误信息,如果成功,error 为 nil, * @param failedPublishers 失败的发布者 Id, 为 nil 则全部订阅/取消订阅成功 */ typedef void(^NIMEventSubscribeResponseBlock)(NSError * __nullable error, NSArray * __nullable failedPublishers); /** * 事件查询回调 * * @param error 错误信息,如果成功,error 为 nil, * @param results NIMSubscribeResult 数组 本账号订阅的事件详情,包括订阅了谁,订阅的时间以及有效期等等 */ typedef void(^NIMEventSubscribeQueryBlock)(NSError * __nullable error, NSArray * __nullable results); /** * 订阅回调 */ @protocol NIMEventSubscribeManagerDelegate @optional /** * 收到所订阅的事件的回调 * @param events 广播的事件 NIMSubscribeEvent 列表 */ - (void)onRecvSubscribeEvents:(NSArray *)events; @end /** * 事件订阅协议 */ @protocol NIMEventSubscribeManager /** * 发布事件 * * @param event 需要广播的事件,事件可被其他人订阅 * @param completion 完成回调 */ - (void)publishEvent:(NIMSubscribeEvent *)event completion:(nullable NIMEventSubscribeBlock)completion; /** * 订阅事件 * * @param request 订阅请求 * @param completion 完成回调 * @discussion 请求中必需填写 type,expiry,publishers 字段 */ - (void)subscribeEvent:(NIMSubscribeRequest *)request completion:(nullable NIMEventSubscribeResponseBlock)completion; /** * 取消订阅事件 * * @param request 取消订阅请求 * @param completion 完成回调 * @discussion 请求中必须填写 type 字段 , 如果不填写 publishers 字段,则取消指定事件的全部订阅关系 */ - (void)unSubscribeEvent:(NIMSubscribeRequest *)request completion:(nullable NIMEventSubscribeResponseBlock)completion; /** * 查询订阅事件 * * @param request 查询请求 * @param completion 完成回调 * @discussion 请求中必须填写 type 字段 和 publishers 字段 */ - (void)querySubscribeEvent:(NIMSubscribeRequest *)request completion:(nullable NIMEventSubscribeQueryBlock)completion; /** * 添加通知对象 * * @param delegate 通知对象 */ - (void)addDelegate:(id)delegate; /** * 移除通知对象 * * @param delegate 通知对象 */ - (void)removeDelegate:(id)delegate; @end NS_ASSUME_NONNULL_END