直播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:
-
Stream Chat Client → 用于与 Stream Services 通信的低级客户端
-
Stream Chat Livedata & Offline → Stream Chat Client 的包装器,可为你提供一些像离线支持以及使用Jetpack LiveData事件的订阅这样的功能。
-流聊天 UI 组件 → 用以使用开箱即用来创建你的聊天功能的 UI 组件集合。
在这个例子中,我们将使用低级客户端。
我们需要采取的第一步是使用 API 密钥初始化 Chat SDK。为此,我们将使用ChatClient.Builder
类,并且我们将启用在它上面的的日志,以便能够查看调试过程中发生的状况。
一旦我们启动了ChatClient
,我们需要指定使用它的用户。为了设置当前用户,ChatCLient
的方法setUser()
可以配置不同的属性。它将需要一个User
项目表示聊天的对象,并存储例如 ID、姓名、个人资料图片和用户身份令牌这些信息。如果我们服务器使用的 JWT 令牌有使用期限,那我们可以配置一个函数,每次过期都会自动刷新令牌。我们需要设置的最后一个属性是回调,不管信息是否发送成功都将调用此回调。
就是这样!我们已经配置好聊天客户端并准备开始使用了。
创建新频道
一旦我们初始化了 ChatClient,我们需要获取发送消息的通道。流提供了一些带有自定义规则的预配置频道类型,并允许你创建属于自己的类型,所需最常见类型已经配置完毕,你可以点击此处查看。在示例中,我们将使用频道类型“直播”。要与通道交互,我们需要创建一个ChannelController
帮助我们查询流服务的对象。
为了创建 ChannelController
,我们需要显示ChannelType
并标识它的 id。
现在我们的ChannelController
已经准备好了, 我们可以使用它来获取消息历史记录。为此,我们使用带有QueryChannelRequest
的query()
方法。我们可以配置QueryChannelRequest
向Stream服务器请求不同的信息。在下面的示例中,我们为通道命名并查询最近发送的 100 条消息。
订阅新消息
我们已创建完通道并查询了最后 100 条消息,现在我们想接收所有新消息。为此,我们可以订阅频道上发生的新事件。此处详述了在通道上可能发生各个类型事件,但我们只需要获取代表新消息的事件就行。为此,我们需要向订阅添加过滤器。具体操作可参考以下代码:
现在,发送到通道的每条新消息都将在我们传递给subscribe()
方法时在lambda 上接收,并且我们已准备好呈现新消息。
当用户离开流时,我们不想再接收消息,因此我们需要取消订阅并停止观看频道。
发送新消息
最后一步,我们将介绍向通道发送消息。要发布新消息,我们需要使用我们之前创建的ChannelController
并调用用来接收消息的sendMessage()
方法作为参数。
总结
这就是实现直播聊天所需的步骤。在存储库示例中,你可以看到我设计视图的过程,这并不难,你还可以自定义以适合自己的APP。
我希望你能熟练地将流集成到APP中以创建简单的实时流聊天。在示例中,我们仅讲到了基本集成。尽管如此,流为你提供了许多功能,例如:角色、删除/更新消息、反应、推送通知,并且所有这些功能都可以在多个平台上使用,例如:Android、iOS、React 和 Flutter。
原文作者 Jc Miñarro
原文链接 https://medium.com/@jcminarro/add-livestream-chat-to-your-android-app-a88813ea3ac