【问题标题】:A way to mark notification as seen without reading the notification feed?一种在不阅读通知提要的情况下将通知标记为已见的方法?
【发布时间】:2020-05-31 08:44:30
【问题描述】:

我的情况如下: 我正在使用 stream-js 库。我将条目添加到某些事件的用户通知提要中 - cmets、关注等。在我写入他们的提要后,我还会向该用户的设备发送推送通知。

如果用户点击推送通知,我希望能够将相应的活动标记为已查看。目前没有办法这样做,因为 addaddToMany 调用不会返回添加的活动的 ID 以便我在通知负载中发送。

理想情况下,我想要一种方法来标记通知提要项,使其可以通过活动组 ID 或其他一些唯一 ID(或 foreignId)看到。有没有办法做到这一点?如果没有,还有什么办法?

【问题讨论】:

    标签: getstream-io


    【解决方案1】:

    这个答案的两个部分:

    获取您刚刚添加的活动的 ID

    各种 Stream 客户端库中的 addActivity 调用(在本例中我使用 stream-js)将返回创建的活动,其中应包含活动 ID。响应看起来像这样:

    { 
      actor: 'ken',
      duration: '9.65ms',
      foreign_id: '',
      id: '8b5d69a9-8b73-11e8-98ab-12cb9e7b86a4',
      object: 'some-object',
      origin: null,
      target: '',
      time: '2018-07-19T16:48:21.045496',
      verb: 'add-activity' 
    }
    

    将通知供稿项标记为已读或已读

    将通知提要项标记为已读或已读的方法有点奇怪 - 首先,您可以像往常一样获取提要,但您还要传入 mark_seenmark_read 选项。 (true 会将所有项目标记为已查看或已读,并且活动 ID 数组将仅标记这些项目。)

    从该调用中,将返回通知提要没有标记为已查看或已读的项目 - 但 下一个 调用检索通知提要将标记项目相应地。

    更多文档在这里:https://getstream.io/docs/flat_feeds/#notification_feeds

    活动 ID --> 活动组 ID

    您可能已经注意到在添加活动时获得了活动 ID,但在标记已查看或已读项目时需要传入活动 ID。

    所有通知提要实际上也是聚合提要 - 默认情况下,它们使用的聚合格式只是活动 ID,这意味着每个活动组只有一个活动,活动组 ID 将与活动 ID 相同。因此,您只需使用 addActivity 调用返回的活动 ID 即可获取通知源并将该活动组标记为已查看或已读。

    如果您没有使用默认聚合格式(例如,活动组 ID 与活动 ID 不同),那么您可能必须检索通知供稿并抓取从那里获得必要的活动组 ID。

    【讨论】:

    • 嗨,肯 - 感谢您的回答。不过,在添加通知活动时,我主要使用addToMany 调用,我注意到除了调用花费了多长时间之外,它没有返回任何内容。我真的不想切换到使用addActivity,因为我可能会同时填充许多提要,所以这是不切实际的。在我看来,将单个活动标记为所见的方法是:向服务器发送唯一的活动 id -> 获取通知提要 -> 查找匹配的 id -> 进行另一个 get 调用以将该活动标记为已读。似乎效率低下,但我想没有其他办法了吗?
    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2017-10-04
    相关资源
    最近更新 更多