-
视频流App概念证明
本凡 / 2022-07-20 / 阅读次数:548
背景故事
具有视频流的移动App已成为离线会议的有效替代方案。此外,社交媒体App、医生点播项目和虚拟事件软件也应用了视频流功能。
在APP Solutions,我们经常收到来自潜在客户的视频流App开发请求。将The APP Solutions视为技术合作伙伴的客户正在寻找我们在视频流和社交媒体App开发方面拥有专业知识的证据。
我们决定构建视频流App的概念证明,以确保技术专业知识的所有权。我们还详细描述了我们应用的整体架构、功能列表和技术。
什么是概念证明(POC)?
概念验证(POC)是介于设计和主要开发阶段之间的早期产品版本。POC已经成为初创企业和成熟企业测试他们的想法是否真的可行的常用方式,因为POC证明了该项目是可以完成的。概念证明也为整个项目的开发创造了一个起点。
由于复杂架构和新技术的利用(与视频流移动App相关)而无法保证技术结果可以实现时,企业需要概念验证。因此,通过开发POC,开发人员和利益相关者可以获得项目可行的证据。
我们的挑战
使用社交媒体App的基本功能开发视频流App的概念验证。为了实现这一目标,我们需要:
实现以下移动屏幕和用例:
注册/登录。用户可以注册/登录系统。
查看个人资料。用户可以查看他们和其他用户的个人资料数据。
编辑个人资料。用户可以编辑他们的个人资料数据,例如姓名、头像和简历。
搜索。用户可以按名称搜索其他用户并关注他们。
开始流式传输。用户可以启动实时视频流。
查看流媒体列表。用户可以查看活动流列表。
加入流。用户可以作为观众参与另一个用户的流式传输。
集成多种授权方式,如:
电子邮件和密码
谷歌授权
脸书授权
苹果授权
我们的解决方案-视频流应用概念验证
我们开发了具有社交媒体App基本功能的视频流App的概念验证,以展示我们在直播方面的技术专长,并展示此类项目的外观。
实现的功能:
通过电子邮件和密码、Facebook、Google和Apple ID登录/注册。
技术栈
Swift for iOSApp
Firebase实时BD支持来自移动和Web平台以及后端App的直接连接
Firebase用于用户身份验证和授权、数据和图像存储
用于托管应用后端的Google Cloud Platform
用于App后端的Python
Agora.IO,一个用于视频广播和参与视频流的SaaS
贡献者
iOS开发者Vitalii Pryidun
后端开发人员Ihor Kopaniev
DevOps支持Vasily Lebediev
带有POC代码的存储库可在链接上找到。
我们如何开发流媒体应用的概念证明
核
我们使用MVP+Router+Configurator架构构建了应用的POC,包括MVVM+Combine for list等。
我们使用ServiceLocator Singleton制作了DI,它是一个抽象服务工厂。
主要服务
用于保存JWT和Apple登录凭据的钥匙串。
Network、AuthorizedNetwork、TokenProvider、APIErrorParser用于执行网络请求。对于在标头中包含令牌的请求, 所有请求都必须符合APIRequestProtocol或APIAuthorizedRequestProtocol。
TokenProvider用于从钥匙串中获取令牌并在需要时通过Firebase刷新它。如果您的应用必须使用后端请求刷新令牌,请转到Core/Networking/TokenProvider并重写此服务以手动恢复令牌。
FirebaseManager用于使用电子邮件+密码、验证ID、社交媒体、密码重置、注销等进行身份验证。
FirebaseDatabaseManager用于获取关注者列表、获取用户等。
FirebaseStorage用于设置和获取头像。
AuthService只是一个用于验证Firebase JWT令牌的存根。如果您的后端需要JWT验证,请在validate方法中插入验证请求。
SearchService用于从搜索字段中获取输入的用户。
FollowService用于关注/取消关注使用SearchService获取的用户。
UserService用于更新用户配置文件(名称等)。
StreamService用于获取加入agora频道的令牌,通知后端频道的开始/结束,订阅用户反应,发送反应等。
我们的结果
视频流App概念验证的开发为我们提供了以下专业知识:
我们使用Agora.IO SaaS将视频流功能集成到POC。
我们通过Firebase Authentication实现了身份验证和授权。
我们使用Firebase实时数据库,它支持与最终用户App(如移动、Web等)服务器端App的直接连接。
我们通过应用即用型Firebase功能优化了开发流程。
因此,我们展示了我们在视频流App开发方面的专业知识。