一种无需阅读通知源即可将通知标记为可见的方法?

Val*_*tin 5 getstream-io

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

如果用户单击推送通知,我希望能够将相应的活动标记为可见。目前无法做到这一点,因为 addaddToMany调用不会返回添加的活动的 ID 供我在通知负载中发送。

理想情况下,我想要一种方法来标记通知源项目,如活动组 ID 或其他唯一 ID(或 )所示foreignId。有没有办法做到这一点?如果不是,还有什么替代方案?

Ken*_*off 4

这个答案分为两部分:

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

addActivity各种 Stream 客户端库(我在本例中使用)中的调用将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' 
}
Run Code Online (Sandbox Code Playgroud)

将通知源项目标记为已查看或已读

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

从该调用中,将返回通知源,但不将项目标记为已查看或已读 - 但下一次检索通知源的调用将相应标记项目。

更多相关文档:https ://getstream.io/docs/flat_feeds/#notification_feeds

活动ID-->活动组ID

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

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

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