Ranking - GetStream/stream-swift GitHub Wiki

Custom Ranking

Setup a class PopularityActivity

final class PopularityActivity: Activity {
    private enum CodingKeys: String, CodingKey {
        case popularity
    }

    var popularity: Int

    init(actor: String, verb: Verb, object: String, popularity: Int) {
        super.init(actor: actor, verb: verb, object: object)
        self.popularity = popularity
    }

    required init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        popularity = try container.decode(Int.self, forKey: .popularity)
        try super.init(from: decoder)
    }

    override public func encode(to encoder: Encoder) throws {
        var container = encoder.container(keyedBy: CodingKeys.self)
        try container.encode(popularity, forKey: .popularity)
        try super.encode(to: encoder)
    }
}

Add Activity.

let activity = PopularityActivity(actor: "User:2", verb: "pin", object: "Place:42", popularity: 5)
user1.add(activity) { result in /* ... */ }

Retrieving Activities

// Get activities sorted by the ranking method labelled "activity_popularity" (Ranked Feeds Enabled):
user1.get(ranking: "activity_popularity")