元数据事件通知

更新时间不可用

了解如何在实时消息 RTM 中元数据事件通知,包括适用场景、配置步骤、实现要点和注意事项。

添加事件监听

如果想要接收 Storage 事件通知,你需要实现事件监听程序,详见事件监听。除此之外,如果你想要接收 Channel Metadata 的事件通知,你需要在订阅或加入频道时将 features 参数设为 enumv.joinchannelfeaturemetadata 或 enumv.subscribechannelfeaturemetadata,或将 withMetadata 参数设置成 true。如果你想要接收 User Metadata 的事件通知,你需要调用 storage.subscribeuser 订阅指定用户的 User Metadata。

事件通知模式

当前 RTM 仅支持全量数据更新模式,即当 User Metadata 或 Channl Metadata 发生变更后,返回的事件通知中的 data 字段包含用户或频道的全部属性数据。

事件通知类型

RTM 的 Storage 事件通知有以下四种类型:

事件类型描述
enumv.storageeventtypesnap1: 用户第一次订阅 Channl Metadata 或 User Metadata,或加入频道时触发,本地用户会收到此类事件通知。
enumv.storageeventtypeset

2: 当调用 storage.setchannel 或者 storage.setuser 时触发。

信息

该事件仅在增量数据更新模式下返回。

enumv.storageeventtypeupdate3: 当调用设置、更新或删除 Channel Metadata 或 User Metadata 的方法时会返回该类型事件。
enumv.storageeventtyperemove

4: 当调用 storage.removechannel 或者 storage.removeuser 时触发。

信息

该事件仅在增量数据更新模式下返回。

表格内容超出当前宽度,可横向滚动查看更多列。

Storage 事件的数据结构参数含义如下:

参数描述
storageType通知类型,可能的取值为NONE、USER 或 CHANNEL。USER 为用户属性变更,CHANNEL 为频道属性变更。
channelType频道类型,可能的取值为 MESSAGE 或 STREAM。
channelName事件发生的频道名称。该参数仅在频道属性相关事件中生效。
publisher触发此事件的用户 ID。
eventType事件类型。可能的取值为 NONE、SNAPSHOT、SET、REMOVE 或 UPDATE。
data用户或者频道属性数据。
表格内容超出当前宽度,可横向滚动查看更多列。
属性类型描述
channelTypeRtmChannelType频道类型。详见 RtmChannelType。
storageTypeRtmStorageTypeStorage 类型。详见 RtmStorageType。
eventTypeRtmStorageEventTypeStorage 事件类型。详见 RtmStorageEventType。
targetString用户 ID 或频道名称。
dataMetadataMetadata Item。详见 Metadata。
timestamplong事件发生的时间戳。
表格内容超出当前宽度,可横向滚动查看更多列。
属性类型描述
channelTypeAgoraRtmChannelType频道类型。详见 AgoraRtmChannelType。
storageTypeAgoraRtmStorageTypeStorage 类型。详见 AgoraRtmStorageType。
eventTypeAgoraRtmStorageEventTypeStorage 事件类型。详见 AgoraRtmStorageEventType。
targetString用户 ID 或频道名称。
dataAgoraRtmMetadataMetadata Item。详见 AgoraRtmMetadata。
timestampUInt64事件发生的时间戳。
表格内容超出当前宽度,可横向滚动查看更多列。
属性类型描述
channelTypeAgoraRtmChannelType频道类型。详见 AgoraRtmChannelType。
storageTypeAgoraRtmStorageTypeStorage 类型。详见 AgoraRtmStorageType。
eventTypeAgoraRtmStorageEventTypeStorage 事件类型。详见 AgoraRtmStorageEventType。
targetNSString用户 ID 或频道名称。
dataAgoraRtmMetadataMetadata Item。详见 AgoraRtmMetadata。
timestampunsigned long long事件发生的时间戳。
表格内容超出当前宽度,可横向滚动查看更多列。
属性类型描述
channelTypeRTM_CHANNEL_TYPE频道类型。
storageTypeRTM_STORAGE_TYPEStorage 事件类型。详见 RTM_STORAGE_TYPE。
eventTypeRTM_STORAGE_EVENT_TYPEStorage 事件类型。详见 RTM_STORAGE_EVENT_TYPE。
targetstring用户 ID 或频道名称。
dataRtmMetadataMetadata Item 数组。
表格内容超出当前宽度,可横向滚动查看更多列。
属性类型描述
channelTypeRTM_CHANNEL_TYPE频道类型。详见 RTM_CHANNEL_TYPE。
storageTypeRTM_STORAGE_TYPEStorage 类型。详见 RTM_STORAGE_TYPE。
eventTypeRTM_STORAGE_EVENT_TYPEStorage 事件类型。详见 RTM_STORAGE_EVENT_TYPE。
targetconst char*用户 ID 或频道名称。
dataMetadataMetadata Item 数组。
timestampuint64_t事件发生的时间戳。
表格内容超出当前宽度,可横向滚动查看更多列。
属性类型描述
channelTypeRtmChannelType频道类型。详见 RtmChannelType。
storageTypeRtmStorageTypeStorage 类型。详见 RtmStorageType。
eventTypeRtmStorageEventTypeStorage 事件类型。详见 RtmStorageEventType。
targetString用户 ID 或频道名称。
dataMetadataMetadata Item 数组。
timestampint事件发生的时间戳。
表格内容超出当前宽度,可横向滚动查看更多列。