如何在getStream.io平台上隐藏用户Feed流中的特定类型活动?
GetStream.io 实现用户隐藏特定类型活动动态方案
这个需求属于GetStream原生支持的个性化配置范畴,不需要额外做复杂的定制开发,按照以下步骤落地即可:
- 首先给所有活动动态统一新增
activity_type字段,发布动态时给该字段赋值为你预设的类型枚举值,比如post、comment、system_notice、repost等,后续过滤逻辑全部基于该字段匹配。 - 在用户维度维护屏蔽类型清单,你可以选择存在自有业务库,也可以直接存储在GetStream提供的用户自定义扩展属性中,格式为数组即可,例如
blocked_activity_types: ["system_notice", "repost"]即代表该用户需要屏蔽系统通知、转发两类动态。 - 调用Feed流查询接口时传入过滤条件即可实现动态过滤,以JS SDK为例的参考代码如下:
// 获取当前登录用户的屏蔽类型清单 const currentUserId = 'user_123'; const userBlockedTypes = await queryUserBlockedTypes(currentUserId); // 初始化Feed实例并调用带过滤的查询接口 const userTimelineFeed = client.feed('timeline', currentUserId); const filteredActivities = await userTimelineFeed.get({ filter: `activity_type:not_in[${userBlockedTypes.join(',')}]`, limit: 20 });
- 如果你不需要每次查询都手动传过滤参数,也可以直接在GetStream后台给对应用户的Feed流配置全局过滤规则,配置完成后平台会自动完成过滤,返回结果默认排除用户屏蔽的类型。
注意:如果后续有新增的动态类型,只需要同步更新类型枚举和用户端屏蔽可选选项即可,原有过滤逻辑不需要调整,GetStream原生过滤的性能不受数据量影响,不会出现查询延迟升高的问题。
内容的提问来源于stack exchange,提问作者Komal Gupta
相关产品推荐
相关产品推荐

