在 Android APP中添加直播聊天

直播APP已成为 App Store 中最受欢迎的程序类型。谷歌、亚马逊、Facebook 和 Twitter 等大公司至少有一款APP提供此类服务。例如:YouTube、Twitch、Instagram 和 Periscope,这些都共有一个配套功能:直播聊天。

直播聊天是一项重要功能,可提高用户对你APP的参与度。它允许用户与其他人进行实时交互。在本文中,我将向你展示在不到 20 分钟的时间里,在APP中创建直播是多么容易。

结果将类似于:

动画在顶部显示有视频的聊天室

示例总览

示例项目将包含两个屏幕。第一个显示项目列表,每一个代表一个视频。当用户单击其中一个时,他们将导航到开始播放视频的另一个屏幕。在视频下方,有一个包含所有消息的聊天室,还有一个文本框,可让你编写并发送消息。APP可在多台设备同时打开,所有设备实时收发消息

因为这是一个例子,所以你会在Models 文件中找到一些数据存储。有一个模拟 API 调用结果的视频列表。为了简化示例,APP上的用户是随机选择的,在真实的APP中,会有一个登录过程,接收正确的 JWT 令牌以与 Stream Services 一起使用。

为了让示例尽可能简单,我们没有在项目中额外添加任何层,也没有创建任何复杂的架构。不过,你可以(应该)使用你最熟悉的架构。

具体可以在以下 GitHub 存储库中找到完整的代码示例:https :

//github.com/GetStream/livestream-chat-android-example

初始化流 SDK

流提供了三个可以在你APP中使用的补充 SDK:

-流聊天 UI 组件 → 用以使用开箱即用来创建你的聊天功能的 UI 组件集合。

在这个例子中,我们将使用低级客户端。

我们需要采取的第一步是使用 API 密钥初始化 Chat SDK。为此,我们将使用ChatClient.Builder 类,并且我们将启用在它上面的的日志,以便能够查看调试过程中发生的状况。
image

一旦我们启动了ChatClient ,我们需要指定使用它的用户。为了设置当前用户,ChatCLient 的方法setUser() 可以配置不同的属性。它将需要一个User 项目表示聊天的对象,并存储例如 ID、姓名、个人资料图片和用户身份令牌这些信息。如果我们服务器使用的 JWT 令牌有使用期限,那我们可以配置一个函数,每次过期都会自动刷新令牌。我们需要设置的最后一个属性是回调,不管信息是否发送成功都将调用此回调。

就是这样!我们已经配置好聊天客户端并准备开始使用了。
image

创建新频道

一旦我们初始化了 ChatClient,我们需要获取发送消息的通道。流提供了一些带有自定义规则的预配置频道类型,并允许你创建属于自己的类型,所需最常见类型已经配置完毕,你可以点击此处查看。在示例中,我们将使用频道类型“直播”。要与通道交互,我们需要创建一个ChannelController 帮助我们查询流服务的对象。

为了创建 ChannelController ,我们需要显示ChannelType 并标识它的 id。

image

现在我们的ChannelController 已经准备好了, 我们可以使用它来获取消息历史记录。为此,我们使用带有QueryChannelRequestquery() 方法。我们可以配置QueryChannelRequest 向Stream服务器请求不同的信息。在下面的示例中,我们为通道命名并查询最近发送的 100 条消息。

image

订阅新消息

我们已创建完通道并查询了最后 100 条消息,现在我们想接收所有新消息。为此,我们可以订阅频道上发生的新事件。此处详述了在通道上可能发生各个类型事件,但我们只需要获取代表新消息的事件就行。为此,我们需要向订阅添加过滤器。具体操作可参考以下代码:

image

现在,发送到通道的每条新消息都将在我们传递给subscribe() 方法时在lambda 上接收,并且我们已准备好呈现新消息。

当用户离开流时,我们不想再接收消息,因此我们需要取消订阅并停止观看频道。

image

发送新消息

最后一步,我们将介绍向通道发送消息。要发布新消息,我们需要使用我们之前创建的ChannelController 并调用用来接收消息的sendMessage() 方法作为参数。

总结

这就是实现直播聊天所需的步骤。在存储库示例中,你可以看到我设计视图的过程,这并不难,你还可以自定义以适合自己的APP。

我希望你能熟练地将流集成到APP中以创建简单的实时流聊天。在示例中,我们仅讲到了基本集成。尽管如此,流为你提供了许多功能,例如:角色、删除/更新消息、反应、推送通知,并且所有这些功能都可以在多个平台上使用,例如:Android、iOS、React 和 Flutter。

你可以在我们的博客上查看文档和更多教程。

原文作者 Jc Miñarro
原文链接 https://medium.com/@jcminarro/add-livestream-chat-to-your-android-app-a88813ea3ac

推荐阅读
相关专栏
开发者实践
182 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。