当前位置 : 主页 > 手机开发 > 其它 >

getstream-io – 如何使用聚合和平面类型构建新闻源?

来源:互联网 收集:自由互联 发布时间:2021-06-22
Facebook上的一个简单功能是显示朋友的帖子,以及朋友分享的帖子.在共享帖子的情况下,它被标题为“Kelly和4个其他人”共享的XYZ帖子.此外,如果你的几个朋友分享了这个帖子,Facebook汇总了
Facebook上的一个简单功能是显示朋友的帖子,以及朋友分享的帖子.在共享帖子的情况下,它被标题为“Kelly和4个其他人”共享的XYZ帖子.此外,如果你的几个朋友分享了这个帖子,Facebook汇总了它们,只显示一次帖子,它不会多次显示. Facebook似乎在同一时间线视图中显示平面Feed和聚合Feed.

我想要一种方法,用于在用户的时间轴(平面Feed)中显示聚合和平面Feed类型.我有以下Feed设置:

时间线馈送(扁平)

用户提要(平)

每次用户A跟随用户B时,我都会调用getstream来更新用户A的时间轴提要以跟随用户B的用户提要.

除了上述内容之外,我还想做的是作为向用户展示的示例时间轴:

Flat Post 1(来自以下用户A)

Flat Post 2(来自以下用户B)

聚合帖子1(你关注的4个人分享了帖子X)

Flat Post 3(来自以下用户A)

Flat Post 4(来自以下用户C)

聚合帖子2(你关注的3个人赞了Y的帖子)

现在看来,这样做的方法是我必须从getstream获取时间轴提要中的活动,然后还获取聚合提要并以某种方式将两者混合在我们的后端上?

您可以通过使用单个聚合Feed并调整聚合规则来实现此目的.在你的情况下,你似乎需要的是:

>将同一职位的股份分组在一起
>在单项活动上保留帖子
>小组喜欢同一个帖子

如下所示的聚合规则应该有效(未经过测试):

{% if verb.infinitive == 'like' %}
    "likes"-{{ object }}
{% elif verb.infinitive == 'share' %}
    "share"-{{ object }}
{% elif verb.infinitive == 'post' %}
    "post"-{{ object }}
{% else %}
    {{ actor }}-{{ verb.infinitive }}-{{ time.strftime('%H') }}
{% endif %}

快速解释这项工作是如何到期的.聚合规则用于确定活动如何组合在一起.您可以将它们视为使用activity作为参数执行的函数.实际上,聚合规则类似于输出字符串的Jinja2模板.

如果两个活动的输出相同,则它们将属于同一个聚合活动.

例如:Tom喜欢发布“xyz”的活动,James喜欢发布“xyz”的活动将输出like-xyz,因此将被组合在一起.另一方面,Sam发布的“xyz”活动将输出post-xyz并假设只有一个名为xyz的帖子,它将永远不会与其他活动分组.

我的建议是使用Stream的仪表板中提供的预览功能将一些示例数据发送到Feed并调整您的聚合规则.

网友评论