通知
更新时间: 2024/08/29 16:26:41
云信信令的通知包括在线通知、离线通知以及同步通知,您可以通过 addSignallingListener
或 on("EventName")
方法来注册信令服务的回调监听来获取相关通知。
信令通知概述
在线通知
在线通知是指,当用户在线时,发生以下事件,会收到相关通知消息。
- 关闭信令频道房间
- 用户加入信令频道房间
- 用户离开信令频道房间
- 邀请他人加入信令频道房间
- 取消邀请他人加入信令频道房间
- 拒绝加入信令频道房间的邀请
- 接受加入信令频道房间的邀请
- 自定义控制命令事件
离线通知
离线通知是指,当用户离线时,在离线期间发生以下事件,在用户上线时会收到离线期间发生的事件相关通知消息。
- 关闭信令频道房间
- 用户加入信令频道房间
- 用户离开信令频道房间
- 邀请他人加入信令频道房间
- 取消邀请他人加入信令频道房间
- 拒绝加入信令频道房间的邀请
- 接受加入信令频道房间的邀请
多端同步通知
同步通知是指,多端登录的用户,当某一端发生以下事件,其他端会同步收到相关事件的通知消息。
- 拒绝加入信令频道房间的邀请
- 接受加入信令频道房间的邀请
其他同步通知
其他同步通知主要指登录同步通知,是指用户登录后,会同步当前用户未退出的信令频道房间列表信息。
注册信令服务相关监听
在初始化后注册信令服务相关监听,注册成功后,当对应事件发生时,SDK 会触发相关回调通知。
全局只需注册一次。
示例代码如下:
Android
javaNIMClient.getService(V2NIMSignallingService.class).addSignallingListener(listener);
iOS
objective-c@interface Clazz:NSObject<V2NIMSignallingListener>
- (void)addSignallingListener;
- (void)removeSignallingListener;
@end
@implementation Clazz
- (void)addSignallingListener
{
[[NIMSDK sharedSDK].v2SignallingService addSignallingListener:self];
}
- (void)removeSignallingListener
{
[[NIMSDK sharedSDK].v2SignallingService removeSignallingListener:self];
}
- (void)onMultiClientEvent:(nonnull V2NIMSignallingEvent *)event {
// Your Code
}
- (void)onOfflineEvent:(nonnull NSArray<V2NIMSignallingEvent *> *)event {
// Your Code
}
- (void)onOnlineEvent:(nonnull V2NIMSignallingEvent *)event {
// Your Code
}
- (void)onSyncRoomInfoList:(nonnull NSArray<V2NIMSignallingRoomInfo *> *)channelRooms {
// Your Code
}
@end
Windows/macOS
cppsignallingService.addSignallingListener(listener);
Web/uni-app/小程序
typescriptnim.V2NIMSignallingService.on("onOnlineEvent", function (event: V2NIMSignallingEvent) {})
nim.V2NIMSignallingService.on("onOfflineEvent", function (event: V2NIMSignallingEvent[]]) {})
nim.V2NIMSignallingService.on("onMultiClientEvent", function (event: V2NIMSignallingEvent) {})
nim.V2NIMSignallingService.on("onSyncRoomInfoList", function (roomInfoList: V2NIMSignallingRoomInfo[]) {})
HarmonyOS
typescriptsignallingService.on("onOnlineEvent", function (event: V2NIMSignallingEvent) {})
signallingService.on("onOfflineEvent", function (event: V2NIMSignallingEvent[]]) {})
signallingService.on("onMultiClientEvent", function (event: V2NIMSignallingEvent) {})
signallingService.on("onSyncRoomInfoList", function (roomInfoList: V2NIMSignallingRoomInfo[]) {})
如需要取消监听,请参考以下示例:
Android
javaNIMClient.getService(V2NIMSignallingService.class).removeSignallingListener(listener);
iOS
objective-c@interface Clazz:NSObject<V2NIMSignallingListener>
- (void)addSignallingListener;
- (void)removeSignallingListener;
@end
@implementation Clazz
- (void)addSignallingListener
{
[[NIMSDK sharedSDK].v2SignallingService addSignallingListener:self];
}
- (void)removeSignallingListener
{
[[NIMSDK sharedSDK].v2SignallingService removeSignallingListener:self];
}
- (void)onMultiClientEvent:(nonnull V2NIMSignallingEvent *)event {
// Your Code
}
- (void)onOfflineEvent:(nonnull NSArray<V2NIMSignallingEvent *> *)event {
// Your Code
}
- (void)onOnlineEvent:(nonnull V2NIMSignallingEvent *)event {
// Your Code
}
- (void)onSyncRoomInfoList:(nonnull NSArray<V2NIMSignallingRoomInfo *> *)channelRooms {
// Your Code
}
@end
Windows/macOS
cppsignallingService.removeSignallingListener(listener);
Web/uni-app/小程序
typescriptnim.V2NIMSignallingService.off("onOnlineEvent")
nim.V2NIMSignallingService.off("onOfflineEvent")
nim.V2NIMSignallingService.off("onMultiClientEvent")
nim.V2NIMSignallingService.off("onSyncRoomInfoList")
HarmonyOS
typescriptsignallingService.off("onOnlineEvent", function (event: V2NIMSignallingEvent) {})
signallingService.off("onOfflineEvent", function (event: V2NIMSignallingEvent[]]) {})
signallingService.off("onMultiClientEvent", function (event: V2NIMSignallingEvent) {})
signallingService.off("onSyncRoomInfoList", function (roomInfoList: V2NIMSignallingRoomInfo[]) {})
通知事件相关 API
V2NIMSignallingEventType
信令频道事件类型。
枚举类型 | 枚举值 | 描述 |
---|---|---|
V2NIM_SIGNALLING_EVENT_TYPE_UNKNOWN | 0 | 未知 |
V2NIM_SIGNALLING_EVENT_TYPE_CLOSE | 1 | 关闭信令频道房间 |
V2NIM_SIGNALLING_EVENT_TYPE_JOIN | 2 | 加入信令频道房间 |
V2NIM_SIGNALLING_EVENT_TYPE_INVITE | 3 | 邀请加入信令频道房间 |
V2NIM_SIGNALLING_EVENT_TYPE_CANCEL_INVITE | 4 | 取消邀请加入信令频道房间 |
V2NIM_SIGNALLING_EVENT_TYPE_REJECT | 5 | 拒绝入房的邀请 |
V2NIM_SIGNALLING_EVENT_TYPE_ACCEPT | 6 | 接受入房的邀请 |
V2NIM_SIGNALLING_EVENT_TYPE_LEAVE | 7 | 离开信令频道房间 |
V2NIM_SIGNALLING_EVENT_TYPE_CONTRO | 8 | 自定义控制命令 |
V2NIMSignallingEvent
信令事件相关信息。
Android
javapublic interface V2NIMSignallingEvent {
V2NIMSignallingEventType getEventType();
V2NIMSignallingChannelInfo getChannelInfo();
String getOperatorAccountId();
String getServerExtension();
long getTime();
String getInviteeAccountId();
String getInviterAccountId();
String getRequestId();
V2NIMSignallingPushConfig getPushConfig();
Boolean isUnreadEnabled();
V2NIMSignallingMember getMember();
}
iOS
objective-c@interface V2NIMSignallingEvent : NSObject
@property (nonatomic, assign, readonly) V2NIMSignallingEventType eventType;
@property (nonatomic, strong, readonly) V2NIMSignallingChannelInfo *channelInfo;
@property (nonatomic, copy, readonly) NSString *operatorAccountId;
@property (nonatomic, copy, readonly, nullable) NSString *serverExtension;
@property (nonatomic, assign, readonly) NSTimeInterval time;
@property (nonatomic, copy, readonly, nullable) NSString *inviteeAccountId;
@property (nonatomic, copy, readonly, nullable) NSString *inviterAccountId;
@property (nonatomic, copy, readonly) NSString *requestId;
@property (nonatomic, strong, readonly, nullable) V2NIMSignallingPushConfig *pushConfig;
@property (nonatomic, assign, readonly) BOOL unreadEnabled;
@property (nonatomic, strong, readonly, nullable) V2NIMSignallingMember *member;
@end
Windows/macOS
cppstruct V2NIMSignallingEvent {
V2NIMSignallingEventType eventType;
V2NIMSignallingChannelInfo channelInfo;
nstd::string operatorAccountId;
nstd::optional<nstd::string> serverExtension;
uint64_t time;
nstd::optional<nstd::string> inviteeAccountId;
nstd::optional<nstd::string> inviterAccountId;
nstd::string requestId;
nstd::optional<V2NIMSignallingPushConfig> pushConfig;
nstd::optional<bool> unreadEnabled;
nstd::optional<V2NIMSignallingMember> member;
};
Web/uni-app/小程序
typescriptexport type V2NIMSignallingEvent = {
eventType: V2NIMSignallingEventType
channelInfo: V2NIMSignallingChannelInfo
operatorAccountId: string
time: number
inviteeAccountId?: string
inviterAccountId?: string
requestId?: string
pushConfig?: V2NIMSignallingPushConfig
unreadEnabled?: boolean
member?: V2NIMSignallingMember
}
HarmonyOS
typescriptexport interface V2NIMSignallingEvent {
eventType: V2NIMSignallingEventType
channelInfo: V2NIMSignallingChannelInfo
operatorAccountId: string
serverExtension?: string
time: number,
inviteeAccountId?: string,
inviterAccountId?: string,
requestId: string,
pushConfig?: V2NIMSignallingPushConfig
unreadEnabled?: boolean
member?: V2NIMSignallingMember
}
参数说明:
名称 | 类型 | 是否必返回 | 是否只读 | 描述 |
---|---|---|---|---|
eventType |
V2NIMSignallingEventType | 是 | 是 | 信令频道事件类型。 |
channelInfo |
V2NIMSignallingChannelInfo | 是 | 是 | 信令频道房间信息。 |
operatorAccountId |
string | 是 | 是 | 操作者用户账号 ID。 |
serverExtension |
string | 否 | 是 | 服务端扩展字段,JSON 格式,长度最大为 4096 字符。 |
time |
number | 是 | 是 | 是否需要存离线消息。默认为 true,即存离线,当用户离线状态下再次上线会收到通知消息。 |
inviteeAccountId |
string | 否 | 是 | 被邀请者的用户账号 ID。当邀请或取消邀请他人加入信令频道房间的事件包含该字段。 |
inviterAccountId |
string | 否 | 是 | 邀请者的用户账号 ID。当对方接受或者拒绝邀请的事件包含该字段。 |
requestId |
string | 否 | 是 | 本次请求发起产生的请求ID, 以下事件包含该字段: |
pushConfig |
V2NIMSignallingPushConfig | 否 | 是 | 推送相关配置,邀请加入信令频道房间的事件包含该字段,可能为空(依赖于发起方)。 |
unreadEnabled |
boolean | 否 | 是 | 是否需要计未读数。默认为 true,需要。 |
member |
V2NIMSignallingMember | 否 | 是 | 频道房间成员信息,成员加入房间事件包含该字段。 |
此文档是否对你有帮助?