移动开发市场一直以来都被 iOS 和 Android 所垄断,但近年来得益于国内智能手机的蓬勃发展,国产移动应用市场也有了长足的进步,但这些市场大多以消费者为导向 ,对开发者提供的服务有限 。在综合考虑了硬件用户基数、云后端功能支持、开发者友好度等因素的基础上,本文最终选择了华为应用市场 AppGallery Connect 作为这次的测试对象。
1. 华为应用市场 AppGallery Connect
AppGallery Connect,又简称 AG Connect,是针对开发者推出的一站式创意、开发、分发、运营到分析的应用全生命周期服务。这项服务于 2019 年 4 月 18 日正式上线,到目前为止,它已经历了多个版本的迭代,服务功能也一直在不断增强和优化。以最新 10.5 版本为例,它已累计为 160 多万开发者开放了 67 项服务,覆盖了全球 170 多个国家和地区。
自创立伊始,AG Connect 就把开发者体验放在首位,并结合华为应用市场以及其背后强大的设备终端,致力于为开发者提供应用创意、开发、分发、运营、分析等全生命周期服务,构建全场景智慧化的应用生态,使开发者能够真正将重心放到自身业务的发展上。[1]
技术上,AG Connect 采用了当前最流行的 Serverless(无服务器)架构,即将服务器管理、操作系统管理、资源调配,甚至是应用逻辑都集成为服务,开发者可以直接通过 API 接口来调用后端的各种能力实现。依托华为强大的云平台,开发者可以通过端云协同框架快速集成如帐号 、支付、消息推送等功能,同时可以整合云函数、云存储、云数据库等公有云服务,极大减少了重复开发及后台运维管理工作,真正实现了云原生开发与应用的快速上线。
下一步,我们将重点关注 AG Connect 的用户认证和云数据库服务,通过深入的分析和测试来全面体验 AG Connect 的快捷便利。
2. 测试目标
本文将结合 AG Connect 提供的示例代码,在 Android 平台中构建一个简易的图书管理系统。该系统支持匿名帐户、微信用户认证以及短信验证码双重认证。数据库采用了最新的云数据库服务,不仅支持多种控制权限设置,而且可以自动实现不同设备之间的数据同步。云数据库提供离线化支持,离线状态下依然可用,并且在系统上线后会第一时间与云端数据完成同步。
3. 认证服务
一款好的 App 软件一般都需要有一个可靠的身份认证和权限验证功能。这一功能非业务核心但相信很多开发者都曾为之头疼。为了给用户创造一个安全便捷的应用登录体验,开发者不仅需要花费大量的开发精力,而且在很多情况下还要负担额外的资源,如服务器、数据库等。AG Connect 的认证服务则很好地解决了这一问题。
3.1 功能特点
AG Connect 认证服务提供了云侧服务和 SDK,我们只需要在应用客户端简单调用云端 API,就可以轻松实现用户注册、登录等功能。该服务同时支持包括手机、邮箱、华为帐号 、国内外主流第三方帐号 、匿名帐号等在内的多种帐号认证, 认证服务也提供了自有帐号来允许开发者实现认证服务尚未支持的其他认证方式 。在跨平台支持方面,认证服务提供了 Java 以及 Objective-C 两种版本的 SDK,用户无论使用哪种设备,都可以获得统一的认证体验。可以说该服务为开发者提供了一套安全、低成本、免运维、多帐号支持的身份验证解决方案。
3.2 工作原理
1、移动端获取认证凭证:
a.对于第三方帐号认证,认证凭据是第三方认证服务颁发的 OAuth 令牌。
b.对于匿名帐号 ,认证凭据是端侧 SDK 为该应用安装实例生成的唯一标识。
c.对于自有帐号 ,认证凭据是您已有认证系统通过 Server SDK 生成 Token。
2、认证服务 SDK 上报认证凭据到云端
3、云端验证凭据
4、返回认证结果
5、至此,用户可以在移动端进行权限范围内的相关操作
3.3 源码测试
1、在 AG Connect 上开通认证服务
登录 AG Connect,点击“我的项目”,然后在项目列表中找出当前的项目。点击“构建 > 认证服务”,进入认证服务的页面,从而开通该服务。(如何构建项目,请参考此处)
图 1 AG Connect 认证服务
2、"启用"所需要的认证方式
本文选择匿名帐号 、微信以及手机认证方式,其它方式请参考开发文档。
图 2 AG Connect 认证服务中认证方式选择
以上为云端设置,接下来将进入移动端的设置及开发。在开始前请确定已在 AndroidStudio 中集成了 AG Connect 的 SDK, 详情参阅此处。
3、匿名帐号登陆
4、微信帐号认证
发送请求获取微信授权的 code
在 onResp(BaseResp baseResp)中接收授权后的 code
上述代码最终生成了如下请求来获取 accessToken 和 openId:
微信帐号授权 AppGallery Connect,由 AppGallery Connect 来提供 AppGallery Connect 的用户信息
至此,客户端可以使用 getCurrentUser 方法获取用户帐号数据
5、短信验证码推送(可直接选择手机帐号认证,或单独选择此功能同其它登录方式绑定)
申请手机注册的验证码:
获取验证码
上述代码汇中,如果 credentialWithVerifyCode()中输入了密码,则启用密码和验证码的双重验证。获取 credential 成功后,进入登录函数。
3.4 总结
到这里,我们的认证服务就构建完成了。笔者曾试图开发过自己的用户认证系统,说实话整个过程可以用惨烈来形容,用户权限设置、密码加密、信令交互、三方认证等等,每一项都让人极度崩溃。反观这里的构建过程,客户端 SDK 完成了绝大部分的功能实现,我们只是在云端选择所需的功能,然后进行简单的组装,整个过程方便快捷。
4. 云数据库服务
相信对于移动开发者来说,数据库是核心业务之外的另一个开发痛点。首先,数据管理对安全性的要求丝毫不亚于用户认证;其次,数据访问常常会成为 APP 的性能瓶颈,尤其是高并发访问的情况,这也是很多大型应用都要求业务数据分离的原因;最后,数据的事务处理以及同步也让很多人望而生畏。如果说有一项服务可以很好解决这些问题,相信很多人都会乐意尝试。所以在 AG Connect 发布该服务后,笔者第一时间进行了申请测试。(注:云数据库是 10.5 版本中的新增的一项服务,目前尚未对外公测,有兴趣的开发者可参考此处申请试用。)
4.1 功能特点
AG Connect 云数据库是一款端云协同的数据库产品,提供端云数据的协同管理、统一的数据模型和丰富的数据管理 API 接口等能力。在保证数据的可用性、可靠性、一致性,以及安全等特性基础上,能够实现数据在客户端和云端之间的无缝同步,并为应用提供离线支持,以帮助开发者快速构建端云、多端协同的应用[2]。
更多 AG Connect 云数据库的参数指标请参考此处。
4.2 工作原理
图 3 产品架构图
作为一款端云协同的产品,AG Connect 云数据库的移动端采用了 Android 编程接口,可以方便开发者快速上手。它基于认证服务实现了权限管理 ,并提供了传输通道加密等安全机制 ,并负责数据的动态同步,不仅可以对服务端通信,还能对其它移动端进行平级通信,最后对本地数据读写追加了加密操作,进一步保证了产品的安全性。
与移动端对应,其云端同样实现了相应的安全、同步、存储以及通信管理机制,而且在此之上还增加了一个 OM 控制平台,可以方便对数据库系统进行监控、维护、安装以及升级等。
AG Connect 云数据库有缓存和本地两种数据同步模式。缓存时,本地数据只是作为云端数据的缓存,最终写入操作将在云端进行。开发者也可以选择本地方式,这样数据只存在本地而不会同云端产生任何交互,这主要是针对离线操作的场景,可以保证终端用户的离线使用体验。
4.3 源码测试
1、开通云数据库服务
登 录 AG Connect,选择“我的应用”,并在“构建 > 云数据库”下开通服务(如何构建我的应用,请参考此处。)
2、云端创建数据
创建对象类型 “BookInfo”
创建如下字段
创建索引名“bookName”
设置如下角色权限
创建存储区 QuickStartDemo
3、客户端配置,初始化云数据库并创建对象类型和 Cloud DB zone 配置文件,同步方式选择缓存模式
4、客户端向云端写入数据
5、客户端侦听数据,当云侧数据发生变化时,客户端能够感知变化,并随时接收数据完成更新
4.4 总结
到这里,一个简单的云数据库就构建完成了(更复杂的操作设置请参阅此处)。在操作逻辑上,我们不难发现云数据库同传统数据库基本保持了一致。开发者可以通过 API 接口快速实现对存储区数据的增、删、改、查、数据侦听等操作。对于该功能的体验,除了简单快捷,笔者其实更惊讶于其背后华为云的支持能力,数据同步和安全自然不必说,高并发高可用乃至基于多区域数据复制的容灾支持等能力,这都为该服务的扩展提供了无限可能。
5. 结语
至此,我们对用户认证和云数据库的初步测试就结束了。整个构建过程充分体现了其无服务器模式的设计理念。无论是之前的用户认证和云数据库服务,还是云函数、云存储等其它服务,都可以让开发者直接通过华为云托管实现,保证了数据的可靠性、服务的可用性和系统的安全性。
而这所有的一切又秉承着同一个核心目标:帮助开发者简化开发流程、提升开发效率、快速构建应用。在构建应用时,开发者们可根据自身需求选择某一种服务,也可以将几种服务结合起来使用,从而达到开发效率最大化,文件数据安全化以及成本最低化。
相信随着华为硬件终端和云平台的不断发展,AG Connect 在未来的表现将更加出色。
参考文献:
[1]https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-introduction
评论