欢迎光临散文网 会员登陆 & 注册

我们如何为Aurora创建移动银行:本国移动OS的开发功能

2020-06-20 13:07 作者:严溪居士  | 我要投稿

VTB博客移动应用开发移动应用设计IT金融
最近,我们已经完成了Aurora OS(唯一的俄罗斯移动操作系统)下的移动互联网银行应用程序的开发。在短短几个月内,我们创建了一个应用程序,使您可以访问VTB Bank的所有基本服务。通过该应用程序,您可以为购买和服务付款,转账到卡和帐户,使用付款模板等等。在这篇文章中,我们将分享应用程序的历史,并讨论家用移动操作系统的开发功能。




您需要了解的有关Aurora下的开发的知识


我们决定在Aurora OS上为银行创建一个移动应用程序,而无需更改后端的任何内容并使用现有协议。开发工作是有远见的项目形式,这对条款(不超过3-4个月)和预算施加了严格的限制。
为了开发应用程序,该平台的创建者提供了SDK(软件开发套件)。这套包括:

基于Qt Creator的集成环境-一种跨平台的免费IDE,可以在C,C ++和QML中进行开发。它具有代码编辑器,设计器和调试器。

Build Engine-用于构建应用程序的工具,包括为i486和armv7hl体系结构开发项目。它是基于Oracle VirtualBox的虚拟机。

在内部装有该系统的完整功能的Sailfish OS模拟器也是基于Oracle VirtualBox的虚拟机。

API示例,手册和文档。


Sailfish OS SDK适用于Linux,Windows和Mac OSX。该平台的应用程序用C ++和Qt框架(QML的图形界面)编写。您可以连接JavaScript。
Qt框架用于创建跨平台的C ++应用程序,并且是Aurora OS中的主要开发环境。它提供了最常用设备功能的访问接口,并包含用于实现QML接口的QtQuick库。

Qt QML模块定义并实现了QML语言,这是一种基于JavaScript的声明性编程语言。该模块具有将QML转换为Qt类的机制,这使得描述用户界面成为可能。对于在Sailfish OS下进行开发,可以同时使用C ++和Python,这对于资源要求不高的应用程序特别方便。

Sailfish OS SDK包含Sailfish Silica-一个包含特定于该平台的QML组件的模块:它们外观并由Sailfish OS的应用程序标准进行管理。使用这些组件使得随后很难将开发的应用程序移植到其他平台。例如,在Qt上开发Android应用程序时,将使用Sailfish不支持的QtQuick.Controls组件。反之,Android上不支持二氧化硅组件。

关于Silfish应用程序的标准大小,字体,缩进,颜色和其他样式组件的信息包含在Silica库的Theme组件中。此外,操作系统还具有确定应用程序外观和行为的预定义“气氛”列表:背景图像,颜色和声音方案。

大多数现代移动设备都配备有传感器:方向,照明,旋转,角度,接近度,磁场强度,加速度计等。在Aurora操作系统中,提供了Qt Sensors API来使用它们。SQLite数据库充当设备上的数据存储。LocalStorage库提供了从QML访问数据的功能。

标准Qt框架类提供对地理位置信息的访问。要使用位置,请使用“ Qt定位”和“ Qt位置”模块。Qt Network和Qt WebSockets库负责发送和处理网络请求,其中包含为此所需的所有类。

典型应用架构


使用MVC(模型-视图-控制器)编程模式是设计应用程序的最常见,最有效的技术之一。Qt中也提供了这种方法的变体-模型视图模板。

模型/表示体系结构仍然将数据的存储方式与向用户呈现的方式分开,但是基于与MVC相同的原理提供了一个简单的结构。



在此,模型负责数据并对其进行访问。由于在图形界面中,相同的元素通常负责显示元素并接收用户的输入,因此将视图和控制器结合起来的想法似乎是合乎逻辑的。

这就是Qt的工作原理:该视图不仅显示数据,而且还执行控制功能,并且还负责与用户进行交互。为了不失去灵活性,我们引入了委托的概念。委托使您可以确定如何显示此数据以及用户如何更改它。该视图实际上变成了代表实例的容器。

为了彼此交互,模型,视图和委托使用信号和插槽:

来自模型的信号通知视图数据源中的数据更改;

来自演示文稿的信号提供有关用户与所显示元素交互的信息;

在编辑期间会使用来自委托的信号;它们会通知模型并查看编辑器的状态。


设计特色:在Aurora中不失个性


用于Aurora OS的VTB移动银行应用程序的开发始于其外观的定义。在此阶段,操作系统的功能已经使我们摆脱了通常的方法。事实证明,在Aurora下的应用程序中应用VTB公司样式-公司颜色,字体,徽标和其他设计元素-是有问题的。

首先,在Aurora OS中,所有屏幕元素(例如屏幕本身(页面))都具有半透明的背景,因此无法始终对其进行重新定义。例如,诸如Button之类的元素没有类似的属性(尽管从版本3.1。*开始,出现了一种控制渲染的方法)。使用Rectangle + MouseArea,您可以绘制自己的元素,但这已经与Aurora OS应用程序样式的概念背道而驰。

其次,字体的颜色,各种重音和背景以及应用程序中元素的大小由所谓的“大气”(Aurora OS中电话屏幕的主题)确定。您可以使用手机的预装氛围之一,也可以自定义自己的自定义主题。

这些功能可以节省开发时间,而应用程序在任何设备上的外观都不错。但是如何不失去企业色彩呢?Aurora OS的应用程序并不多,尤其是对于移动银行而言,没有人可以窥视。因此,我们决定保留透明性,而不是脱离Aurora风格,而是要个性化地将VTB徽标放置在应用程序的每个屏幕上。

Aurora OS具有许多现成的UI元素,包括针对用户的新元素,例如,下拉菜单。它们在屏幕上显示为突出显示的条。要进行呼叫,必须向下(PullDownMenu)或向上(PushUpMenu)拖动屏幕。





但是,要在不相关的屏幕之间导航,我们缺少诸如Android或iOS中的底部导航栏之类的元素。我们不想发明另一种类型的导航,所以我们做了类似的组件。他切换屏幕“主要”,“产品”,“付款”,“展示”和“其他”。



与服务器交互协议的实现


Web Bank API使用一种罕见的数据交换协议-Burlap。使用这种轻量级的自描述XML RPC协议,不再需要外部IDL或WSDL文件。粗体调用是URL的HTTP POST。参数以Burlap XML格式序列化并传输到服务器。

为了在Qt中使用此协议,我们没有找到现成的库,我们不得不编写自己的对象解析器。在HTTP请求和响应的主体中,Burlap可以使用指向XML中已经描述过的对象的指针(refs)。为了正确读取指针编号,必须反序列化接收对象的整个层次结构。否则,链接计数器会飞,而不是沿着它拉动所需的东西。

解析器经过很长时间的调试:在开发过程中,出现了新类型的对象,指向集合的指针等。在Qt中实现了Burlap支持之后,我们开始实现应用程序协议。

操作应用程序协议的功能


服务器端应用程序协议的实现是灵活和高级的。借助它的帮助,您可以远程控制脚本,以用于移动或Web应用程序的几乎所有操作。

该操作的脚本包括几个阶段。每个阶段都定义了一组UI元素和相关数据,对事件的反应,输入掩码和正则表达式,以及在此执行阶段用户可使用的操作。

为了提供所有这些功能,我们开发了一种用于动态创建UI元素的机制。服务器返回的UI元素的类型范围很广。对于每种类型或类型集,我们使用其自己的属性列表创建了单独的QML类。原来有几十个此类。另外,在操作的每个阶段,都会调用用于创建这些相同元素的脚本,从而形成屏幕内容。

QML和JS的组合既方便又灵活。在Aurora OS中,比在Android或iOS中实现起来容易得多。


结果,该机制确保了几乎所有付款交易的执行:向约1000个不同服务提供商的地址付款,通过电话号码,卡,账户之间的账户以及另一自然人或法人账户的资金转账。

地理位置和地图


为了方便用户,我们希望将带有ATM标记区域地图的屏幕添加到应用程序中。Sailfish OS不使用用于Android和iOS开发人员的常用API来处理地图,例如Google Map或Yandex.Maps。

地图数据和其他有用信息的来源是平台创建者和独立开发者提供的插件。Aurora操作系统有两个插件可用:OpenStreetMap和HERE WeGo。我们使用OpenStreetMap是因为HERE WeGo需要API密钥。



对于地理定位,Qt框架提供了两个模块:Qt定位和Qt定位。第一个子系统可以获取有关设备当前位置的信息,第二个子系统可以对地图上的信息进行地理编码和显示。
这些插件和库使我们能够显示带有地图和所有添加的ATM的屏幕。但是起初,当前的地理位置没有正确确定:我们在Paveletskaya地铁站的莫斯科办公室中,并且参议院广场出现在屏幕上-默认值。

事实证明,错误的原因是手机中缺少SIM卡。在这种情况下,通常会执行GPS传感器的冷启动-这需要花费大量时间。传感器本身可能不是最强大的:使用了INOI R7。10-15分钟后,尽管有错误,仍可以确定位置。也许在“干净的领域”中可以更好地定义坐标。

项目组装


为了使用Qt Creator,我们使用Windows工作站。最初,一切都进行得很顺利,但是从2.1.1版更新了Sailfish SDK之后。在2.2.4中,应用程序的汇编开始执行的时间要长很多倍。我们求助于WMD的开发人员,发现问题与在Build Engine VM上执行IDE组装命令并连接到它的延迟有关。平均而言,仅通过SSH连接到VM大约需要50-60秒,而检查从IDE到VM的连接只需要一秒钟。

如果直接使用构建引擎在VM上构建而不使用IDE,则可以解决该问题。但是我们不仅需要构建,还需要调试应用程序,并且没有IDE的话,它非常慢且不便。我不得不切换到Linux,那里的问题不是很严重。

结果




我们有一个有效的应用程序。尽管它并不完美,但我们还有一些工作要做:

方便地输入应用程序。现在,为此使用SMS代码。

使应用程序充分发挥功能并加速其工作;

充分利用Aurora操作系统:基于加密GOST 28147-89和增强的电子签名的SSL。


该应用程序可以使用了。因此,迈出了在家用移动操作系统上开发生态系统的第一步。

感谢帮助我们进行此应用程序的“ Net1 Universal Technologies”公司,以及“ Open Mobile Platform”公司的员工,他们为解决开发过程中出现的问题提供了不断的咨询和帮助。



我们如何为Aurora创建移动银行:本国移动OS的开发功能的评论 (共 条)

分享到微博请遵守国家法律