通知
更新时间: 2024/08/05 10:42:16
通知包含在线通知、离线通知、同步通知、其他通知,开发者可以通过SignallingServiceObserver 来注册通知观察者从而获取通知。
- 说明: 以下所有方法都位于
SignallingServiceObserver
在线通知
- 在线通知类型
ChannelCloseEvent
:频道关闭通知事件UserJoinEvent
:有用户加入频道通知事件InvitedEvent
:被邀请通知事件CanceledInviteEvent
:被取消邀请通知事件InviteAckEvent
:对方应答(接受/拒绝)邀请通知事件UserLeaveEvent
:用户离开通知事件ControlEvent
:自定义控制命令通知事件
- API原型
java
/**
* 注册/注销 在线通知事件观察者
* 回调返回参数为RoomCommonEvent的子类对象 ,如果用户想获取相应子类对象中的特殊属性,可以根据事件类型{@link ChannelCommonEvent#getEventType()}进行强制类型转换。<br/>
* <br/>
* 事件类型{@link SignallingEventType }与 ChannelCommonEvent 子类的对应关系如下:<br/>
* {@link SignallingEventType#CLOSE} 对应于{@link ChannelCloseEvent}<br/>
* {@link SignallingEventType#JOIN} 对应于{@link UserJoinEvent}<br/>
* {@link SignallingEventType#INVITE} 对应于{@link InvitedEvent}<br/>
* {@link SignallingEventType#CANCEL_INVITE} 对应于{@link CanceledInviteEvent}<br/>
* {@link SignallingEventType#REJECT} 对应于{@link InviteAckEvent}<br/>
* {@link SignallingEventType#ACCEPT} 对应于{@link InviteAckEvent}<br/>
* {@link SignallingEventType#LEAVE} 对应于{@link UserLeaveEvent}<br/>
* {@link SignallingEventType#CONTROL} 对应于{@link ControlEvent}<br/>
*
* @param observer 观察者 ,参数为在线通知事件
* @param register register true为注册,false为注销
*/
void observeOnlineNotification(Observer<ChannelCommonEvent> observer, boolean register);
- 示例
java // 在线通知事件观察者
onlineObserver = new Observer<ChannelCommonEvent>() {
@Override
public void onEvent(ChannelCommonEvent event) {
SignallingEventType eventType = event.getEventType();
switch (eventType) {
case CLOSE:
ChannelCloseEvent channelCloseEvent = (ChannelCloseEvent) event;
break;
case JOIN:
UserJoinEvent userJoinEvent = (UserJoinEvent) event;
break;
case INVITE:
InvitedEvent invitedEvent = (InvitedEvent) event;
break;
case CANCEL_INVITE:
CanceledInviteEvent canceledInviteEvent = (CanceledInviteEvent) event;
break;
case REJECT:
case ACCEPT:
InviteAckEvent ackEvent = (InviteAckEvent) event;
break;
case LEAVE:
UserLeaveEvent userLeaveEvent= (UserLeaveEvent) event;
break;
case CONTROL:
ControlEvent controlEvent = (ControlEvent) event;
break;
}
}
};
//注册
NIMClient.getService(SignallingServiceObserver.class).observeOnlineNotification(onlineObserver, true);
离线通知
当用户登录时,会收到离线期间的所有已经的离线通知(通知默认不离线,需要发送方做相应的配置)。
- 离线通知类型
ChannelCloseEvent
:频道关闭通知事件UserJoinEvent
:有用户加入频道通知事件InvitedEvent
:被邀请通知事件CanceledInviteEvent
:被取消邀请通知事件InviteAckEvent
:对方应答(接受/拒绝)邀请通知事件UserLeaveEvent
:用户离开通知事件
- API 原型
java /**
* 注册/注销 离线通知事件观察者,在用户登录后sdk 会去服务器同步用户离线期间发生的各种通知,并以列表的形式返回。列表的排序方式为时间递增排序{@link ChannelCommonEvent#getTime()}<br/><br/>
* 回调返回列表中的元素为RoomCommonEvent的子类对象 ,如果用户想获取相应子类对象中的特殊属性,可以根据事件类型{@link ChannelCommonEvent#getEventType()}进行强制类型转换。<br/><br/>
* 事件类型{@link SignallingEventType }与 ChannelCommonEvent 子类的对应关系如下:<br/>
* {@link SignallingEventType#CLOSE} 对应于{@link ChannelCloseEvent}<br/>
* {@link SignallingEventType#JOIN} 对应于{@link UserJoinEvent}<br/>
* {@link SignallingEventType#INVITE} 对应于{@link InvitedEvent}<br/>
* {@link SignallingEventType#CANCEL_INVITE} 对应于{@link CanceledInviteEvent}<br/>
* {@link SignallingEventType#REJECT} 对应于{@link InviteAckEvent}<br/>
* {@link SignallingEventType#ACCEPT} 对应于{@link InviteAckEvent}<br/>
* {@link SignallingEventType#LEAVE} 对应于{@link UserLeaveEvent}<br/>
*
* @param observer 观察者 ,参数为离线通知事件列表
* @param register register true为注册,false为注销
*/
void observeOfflineNotification(Observer<ArrayList<ChannelCommonEvent>> observer, boolean register);
注意:登录后第一次注册此回调时,如果sdk已经获取到了相应的离线通知列表,会立即回调一次(仅此一次)。
- 示例
java// 离线事件观察者
private Observer<ArrayList<ChannelCommonEvent>> offlineObserver = new Observer<ArrayList<ChannelCommonEvent>>() {
@Override
public void onEvent(ArrayList<ChannelCommonEvent> list) {
for (ChannelCommonEvent event : list) {
SignallingEventType eventType = event.getEventType();
switch (eventType) {
case CLOSE:
ChannelCloseEvent channelCloseEvent = (ChannelCloseEvent) event;
break;
case JOIN:
UserJoinEvent userJoinEvent = (UserJoinEvent) event;
break;
case INVITE:
InvitedEvent invitedEvent = (InvitedEvent) event;
break;
case CANCEL_INVITE:
CanceledInviteEvent canceledInviteEvent = (CanceledInviteEvent) event;
break;
case REJECT:
case ACCEPT:
InviteAckEvent ackEvent = (InviteAckEvent) event;
break;
case LEAVE:
UserLeaveEvent userLeaveEvent= (UserLeaveEvent) event;
break;
}
}
}
};
//注册
NIMClient.getService(SignallingServiceObserver.class).observeOfflineNotification(offlineObserver, true);
同步通知
- 同步通知类型
- 多端同步(同一账号其他端响应了相应的邀请)
- 登录时同步未退出的频道信息
- API 原型
java /**
* 注册/注销 其他端响应(接收/拒绝)邀请事件观察者,当其他端响应了邀请时触发
*
* @param observer 观察者 ,回调参数为其他端邀请响应事件
* @param register register true为注册,false为注销
*/
void observeOtherClientInviteAckNotification(Observer<InviteAckEvent> observer, boolean register);
/**
* 注册/注销 同步未退出频道列表事件观察者 ,在用户登录后sdk会去服务器获取当前还未退出的频道列表 。
* 注意:登录后第一次注册此回调时,如果sdk已经获取到了相应的频道列表,会立即回调一次(仅此一次)。
*
* @param observer 观察者,回调参数为未退出的频道列表
* @param register register true为注册,false为注销
*/
void observeSyncChannelListNotification(Observer<ArrayList<SyncChannelListEvent>> observer, boolean register);
注意:登录后第一次注册observeSyncChannelListNotification回调时,如果sdk已经获取到了相应的频道列表,会立即回调一次(仅此一次)
其他通知
- 类型
- 成员更新(主要用来处理些异常情况)
- API 原型
java /**
* 注册/注销 频道成员更新事件观察者
*
* @param observer 观察者,回调参数为成员更新事件,其中包含了最新的频道的完整信息(频道信息+成员列表)
* @param register register true为注册,false为注销
*/
void observeMemberUpdateNotification(Observer<MemberUpdateEvent> observer, boolean register);
注意:如果是有成员离开或加入频道,正常情况下会优先通过 SignallingServiceObserver#observeOnlineNotification
的回调来通知用户。
此回调的时机如下: 如果有成员信息的变更(而不是成员数量增减)或异常情况(有成员数量变更但是sdk没有回调SignallingServiceObserver#observeOnlineNotification
)
此文档是否对你有帮助?