Есть пара вещей, о которых нужно помнить.
Прежде всего, вероятно, ваш клиент был освобожден после завершения запроса, и поэтому обратный вызов не был вызван, но журналы могли показать вам, что запрос был выполнен. Я предлагаю вам использовать экземпляр общего клиента, и это будет легко использовать. Для настройки общего клиента вам нужно написать это:
Client.config = .init(apiKey: "<MyApiKey>", appId: "<MyApiKey>", token: "<Token>")
Подробнее о настройке клиента на вики-странице .
Второе важное, что вы должны создать / обновить своего пользователя Stream. Со стороны сервера вы получаете свой токен с Stream userId
и можете запросить пользователя Stream. Самый простой способ - вызвать Client.shared.create(user:)
там, где пользователь будет создан / обновлен. Итак, это все еще часть настройки Stream Client:
Client.shared.create(user: GetStream.User(id: Client.shared.currentUserId!)) { result in
// Update the client with the current user.
Client.shared.currentUser = try? result.get()
// Do all your requests from here. Reload feeds and etc.
}
Больше информации в документах .
Я предлагаю вам создавать каналы только с параметром feedSlug
, а поток userId
будет взят из токена. Но это было бы необязательно, потому что currentUserId
является необязательным. Например:
let ericFeed = Client.shared.flatFeed(feedSlug: "user")
ericFeed?.add(activity)
А для ваших действий клиенты Stream всегда должны использовать текущего пользователя Stream в качестве актера. Итак, нам нужно обновить определение вашего MyActivity
.
Наконец, вот ваш код, который должен работать:
// Define your activity.
class MyActivity: EnrichedActivity<GetStream.User, String, DefaultReaction> {
// ...
}
// Setup Stream Client.
Client.config = .init(apiKey: <MyApiKey>, appId: <MyApiKey>, token: <Token>)
// Setup the current user.
Client.shared.getCurrentUser {
let ericFeed = Client.shared.flatFeed(feedSlug: "user")
let activity = MyActivity(actor: Client.shared.currentUser!, verb: "waves", object: "picture:10", foreignId: "picture:10")
ericFeed?.add(activity) { result in
print("!result!")
print(result)
}
}