通知
更新时间: 2023/08/15 02:25:06
通知包含在线通知、离线通知、同步通知、其他通知,开发者可以通过AvSignallingService
中的Stream
监听通知。
在线通知
-
在线通知类型定义在
SignallingEventType
中。close
:频道关闭通知事件join
:有用户加入频道通知事件invite
:被邀请通知事件cancelInvite
:被取消邀请通知事件reject
:对方拒绝邀请通知事件accept
:对方接受邀请通知事件leave
:用户离开通知事件control
:自定义控制命令通知事件
-
API原型
dart /// 在线通知事件回调
/// 回调返回为[ChannelCommonEvent]的对象
/// 可以根据事件类型获取对象中的特殊属性
Stream<ChannelCommonEvent> get onlineNotification =>
_platform.onlineNotification;
- 示例
dart NimCore.instance.avSignallingService.onlineNotification.listen((event) {
switch(event.signallingEvent.eventType){
case SignallingEventType.close:
// TODO: Handle this case.
break;
case SignallingEventType.join:
// TODO: Handle this case.
break;
case SignallingEventType.invite:
// TODO: Handle this case.
break;
case SignallingEventType.cancelInvite:
// TODO: Handle this case.
break;
case SignallingEventType.reject:
// TODO: Handle this case.
break;
case SignallingEventType.accept:
// TODO: Handle this case.
break;
case SignallingEventType.leave:
// TODO: Handle this case.
break;
case SignallingEventType.control:
// TODO: Handle this case.
break;
case SignallingEventType.unKnow:
// TODO: Handle this case.
break;
}
});
离线通知
如果用户在登录前监听了 offlineNotification
事件,那么当用户登录时,会收到离线期间的所有已经的离线通知(通知默认不离线,需要发送方做相应的配置)。
-
离线通知类型
close
:频道关闭通知事件join
:有用户加入频道通知事件invite
:被邀请通知事件cancelInvite
:被取消邀请通知事件reject
:对方拒绝邀请通知事件accept
:对方接受邀请通知事件leave
:用户离开通知事件
-
API 原型
dart ///离线通知事件观察者,在用户登录后sdk 会去服务器同步用户离线期间发生的各种通知,并以列表的形式返回。
/// 列表的排序方式为时间递增排序。
/// 注意:登录后第一次注册此回调时,如果sdk已经获取到了相应的离线通知列表,会立即回调一次(仅此一次)。
/// 可以根据事件类型获取对象中的特殊属性
Stream<List<ChannelCommonEvent>> get offlineNotification =>
_platform.offlineNotification;
登录后第一次注册此回调时,如果sdk已经获取到了相应的离线通知列表,会立即回调一次(仅此一次)。
- 示例
dartNimCore.instance.avSignallingService.offlineNotification.listen((events) {
for (ChannelCommonEvent event in events) {
switch (event.signallingEvent.eventType) {
case SignallingEventType.close:
// TODO: Handle this case.
break;
case SignallingEventType.join:
// TODO: Handle this case.
break;
case SignallingEventType.invite:
// TODO: Handle this case.
break;
case SignallingEventType.cancelInvite:
// TODO: Handle this case.
break;
case SignallingEventType.reject:
// TODO: Handle this case.
break;
case SignallingEventType.accept:
// TODO: Handle this case.
break;
case SignallingEventType.leave:
// TODO: Handle this case.
break;
case SignallingEventType.control:
// TODO: Handle this case.
break;
case SignallingEventType.unKnow:
// TODO: Handle this case.
break;
}
}
});
同步通知
-
同步通知类型
- 多端同步(同一账号其他端响应了相应的邀请)
- 登录时同步未退出的频道信息
-
API 原型
dart///其他端响应(接收/拒绝)邀请事件回调,当其他端响应了邀请时触发
Stream<ChannelCommonEvent> get otherClientInviteAckNotification =>
_platform.otherClientInviteAckNotification;
/// 同步未退出频道列表事件回调 ,在用户登录后sdk会去服务器获取当前还未退出的频道列表 。
/// 注意:登录后第一次注册此回调时,如果sdk已经获取到了相应的频道列表,会立即回调一次(仅此一次)。
Stream<List<SyncChannelEvent>> get syncChannelListNotification =>
_platform.syncChannelListNotification;
登录后第一次注册syncChannelListNotification回调时,如果sdk已经获取到了相应的频道列表,会立即回调一次(仅此一次)。
其他通知
-
类型
- 成员更新(主要用来处理些异常情况)
-
API 原型
java /// 频道成员更新事件回调
///
/// 回调参数为成员更新事件,其中包含了最新的频道的完整信息(频道信息+成员列表)
/// 注意:如果是有成员离开或加入频道,正常情况下会优先通过[onlineNotification]的回调来通知用户。
/// 此回调的时机如下: 如果有成员信息的变更(而不是成员数量增减)或异常情况(有成员数量变更但是sdk没有回调[onlineNotification])
Stream<SyncChannelEvent> get onMemberUpdateNotification =>
_platform.onMemberUpdateNotification;
- 如果是有成员离开或加入频道,正常情况下会优先通过
onlineNotification
的回调来通知用户。 - 此回调的时机:如果有成员信息的变更(而不是成员数量增减)或异常情况(有成员数量变更但是sdk没有回调
onlineNotification
)。
此文档是否对你有帮助?