通知

更新时间: 2024/08/29 16:26:41

云信信令的通知包括在线通知、离线通知以及同步通知,您可以通过 addSignallingListeneron("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 频道房间成员信息,成员加入房间事件包含该字段。
    此文档是否对你有帮助?
    有帮助
    去反馈
    • 信令通知概述
    • 在线通知
    • 离线通知
    • 多端同步通知
    • 其他同步通知
    • 注册信令服务相关监听
    • 通知事件相关 API
    • V2NIMSignallingEventType
    • V2NIMSignallingEvent