GetStream获取活动正在获取所有内容,而不是特定的ID

问题描述 投票:1回答:1

我正在研究一个连接到GetStream的函数,以便获取所选供稿组的活动。问题在于,GetStream返回的是提要组中的所有活动,而不是特定子弹的活动。用MySQL术语,它忽略了WHERE UUID = uuid:)

这是我当前正在使用的返回所有活动的代码,在设置它之前,我尝试将elementFeed设置为nil,但这也不起作用。

    func getStream(uuid: String, completion: @escaping([StreamActivity], Bool, APPError?) -> Void) {

    let group = DispatchGroup()
    group.enter()

    var activities     = [StreamActivity]()
    elementFeed = nil
    elementFeed = Client.shared.flatFeed(feedSlug: "element", userId: uuid)

    elementFeed?.get(typeOf: StreamActivity.self, enrich: false, pagination: .limit(20), ranking: "", includeReactions: [], completion: { results in
        if let foundActivities = results.value?.results {
            activities.append(contentsOf: foundActivities)
            group.leave()
        } else {
            completion([], false, .GetDiscussions)
            group.leave()
        }
    })

    group.notify(queue: .main) {
        self.isUserFollowing(uuid: uuid) { (following) in
            completion(activities, following, nil)
        }
    }

}

这是用于创建活动的代码:

func addActivity(type: ActivityType, body: String?, uuid: String, completion: @escaping(Bool, APPError?) -> Void) {

    var feed: FeedId?
    var originFeed: FeedId?

    switch type {
    case .comment:
        feed = FeedId(feedSlug: "element", userId: uuid)
    case .reply:
        originFeed = FeedId(feedSlug: "comment", userId: uuid)
    default:
        break
    }
    let activity = StreamActivity(actor: StreamUser.current!, verb: type.rawValue, object: "element:\(uuid)", body: body!)

    activity.feedIds = [feed!]


    elementFeed = Client.shared.flatFeed(feedSlug: "element", userId: uuid)

    elementFeed?.add(activity, completion: { (result) in
        if result.error == nil {
            completion(true, nil)
        } else {
            completion(false, .PostComment)
        }
        print("GETSTREAM: Activity added:\(result)")
    })
}
ios swift stream getstream-io
1个回答
0
投票

Stream Feed API不允许您读取Feed之外的活动。提要已实现,因此当您执行这样的呼叫时

Client.shared.flatFeed(feedSlug: "element", userId: uuid)

您没有执行查询(即SELECT * FROM活动,其中slug =?AND userId =?),但您正在读取(直接通过目标或从后面的提要)添加到元素的活动:$ uuid提要。

如果提要包含错误的活动,那是因为用于添加活动或创建关注关系的逻辑出了问题。

[当您阅读提要时,Stream会添加有关每个活动来源的信息;这样的信息存储在称为“来源”的字段中。如果原始字段丢失/为空,则表示该活动已直接添加到Feed中;如果活动是通过关注关系添加的,则“来源”字段将设置为活动来源的Feed ID。

例如:

如果元素:x跟随用户:z;用户Z添加的所有活动都会传播到element:x,并且在该供稿上的原点=“ user:z”。

您可以使用“来源”字段获取有关该活动为何在Feed中的更多信息;应该是非常有用的信息,以找出集成问题所在。

© www.soinside.com 2019 - 2024. All rights reserved.