---
title: "移动应用开发编程技术"
date: "2020-07-01"
categories: 
  - "app-development"
  - "low-code"
  - "mobile-development"
  - "tools"
tags: 
  - "cross-platform-mobile-apps"
  - "cross-platform-mobile-development"
  - "mobile-development-tools"
  - "mobiletogether"
description: 探索在MobileTogether中使用的编程技术，用于跨平台移动应用开发，包括用户函数和动作组，以提高应用程序的效率。
---
Status: #blog

Tags:  #cross-platform-mobile-apps #cross-platform-mobile-development #mobile-development-tools #mobiletogether

Categories: [mobile-development](/blog/zh/category/mobile-development.md) | [low-code+no-code](/blog/zh/category/low-codeno-code.md) 
# 移动应用开发编程技术

MobileTogether 是一款易于使用的低代码应用开发框架，它允许您通过单一的设计，为所有平台创建复杂的应用程序。

低代码并不意味着完全不需要编写代码。数据库专家可能会从几个SQL查询开始，然后利用MobileTogether的拖放界面，创建一个应用程序，该应用程序具有美观的表格和图表，用于报告企业最新的数据。而经验丰富的开发人员通常会使用熟悉的编程技术来进行移动应用开发，从而构建出高度复杂、精美的MobileTogether解决方案。

开发者可以定义用户函数、参数、变量、循环，或者复杂的的数据结构，这取决于具体的需求。MobileTogether 能够快速、轻松地控制设备上的所有功能，包括摄像头、麦克风、GPS、短信、手写输入等等。MobileTogether 能够帮助您快速实现您的想法，并构建出极具吸引力的移动应用程序，让它们拥有病毒式传播的潜力。

MobileTogether 的目标是提高工作效率，而不是限制您完成工作的方式。接下来，我们来看看 MobileTogether 应用中一些编程技术的示例。

![](/blog/images/single_developer01.jpg)

<!--more-->

MobileTogether Designer是一款[桌面应用程序，用于创建跨平台的移动应用](https://www.altova.com/zh/mobiletogether/app-development)。它完全免费使用，并且附带了一系列示例应用程序，您可以深入研究这些应用程序的构建方式。

### 软件包递送应用程序中的用户功能

“包裹配送”示例是一个真实世界包裹配送应用的完整模拟。用户扮演一家配送公司的司机，负责将包裹从新泽西州的仓库运送到纽约市的各个目的地，并使用GPS进行导航。您可以在设计工具的模拟器窗口中运行该应用，以查看逼真的移动轨迹，了解前往每个目的地的路线。如果您在自己的手机上运行“包裹配送”应用，您的移动设备将使用其内置的GPS功能。但是，如果您不在纽约，该应用会显示较长的路线和到达每个目的地的预计时间！您只需点击应用中的“我在这里”按钮，即可跳过路线追踪，直接前往目的地。

“Parcel Delivery”是由一位经验丰富的开发者编写的应用程序，它高度依赖用户操作。例如，该应用会在一天开始时向用户展示一份配送任务列表。在完成配送的过程中，用户可以返回此页面，查看尚未完成的任务，如图所示，以下截图来自一部安卓手机：

[![针对包裹递送移动应用程序中的司机，提供的配送任务](/blog/images/parcel-delivery-android.png)](parcel-delivery-android.png)

该应用程序通过单个页面设计，同时呈现两种不同的视图，具体的显示效果取决于对用户功能的评估。以下是在 MobileTogether 设计器中查看该页面的方式：

[![在应用程序的“作业”页面，您可以找到用户函数示例，这些示例展示了移动应用开发中的一些编程技巧](/blog/images/page-design-1-1.png)](page-design-1-1.png)

开发者在这个页面上定义了两个用户函数：`PartiallyFinishedDestinations()` 和 `RemainingDestinations()`。 仅从表面上看，我认为 `PartiallyFinishedDestinations()` 前面的 IF 语句会返回一个真/假的结果。 也就是说，运输车辆是否已经完成了任何配送？ 并且 `RemainingDestinations()` 应该是一个包含所有剩余配送地点的列表。

让我们在模拟器中运行这个应用程序，看看我的判断是否正确。以下是待办事项列表在模拟器中的首次显示效果：

[![利用MobileTogether模拟器来研究移动应用开发中的编程技术](/blog/images/delivery-list-1-1.png)](delivery-list-1-1.png)

执行操作需要点击“开始配送”按钮。与其继续，我们可以点击位于“页面源代码”下方的“XPath工具”按钮，对应用程序的内部结构进行分析。点击“XPath”按钮会打开下面的窗口，其中我已经从“用户自定义函数”列表中选择了“PartiallyFinishedDestinations()”

[![表达式构建器窗口中的用户自定义函数](/blog/images/simulator-1.png)](simulator-1.png)

现在，我可以在顶部的工具栏中点击绿色的“开始”按钮或“评估器”按钮来评估该函数

[![在程序执行暂停时，评估表达式的值](/blog/images/simulator-2.png)](simulator-2.png)

用户函数的结果为“假”——驱动程序尚未完成任何交付。对剩余目的地函数（RemainingDestinations()）执行相同的步骤，结果如下：

[![评估 `RemainingDestinations()` 函数](/blog/images/simulator-3.png)](simulator-3.png)

`RemainingDestinations()` 用户函数的结果是一个列表，其中每个元素都是一个数据结构，包含了关于目的地的所有详细信息。

MobileTogether Designer 的主菜单中包含一个用于用户功能的选项

[![移动应用开发中的编程技巧：功能主菜单选项](/blog/images/main-menu.png)](main-menu.png)

在这里，开发者最初定义了用户函数，现在我们也可以来到这里查看或编辑这些用户函数。 “列表显示所有...” 菜单选项会在“消息”窗口中生成一份报告。

[![移动应用程序中的编程技术：关于用户函数使用情况的报告](/blog/images/function-report.png)](function-report.png)

### 移动应用开发中的编程技巧：带有参数的子程序

在 MobileTogether 中，动作组（Action Groups）本质上是子程序，它们收集了一系列动作，您可以在应用程序的任何需要时调用这些动作。您可以[了解更多关于动作和动作组的信息](https://www.altova.com/zh/mobiletogether/low-code-app-development#action-trees)，或者[观看视频演示](https://www.altova.com/zh/mobiletogether/demos#video_Demos)。

就像在任何高级编程语言中使用的子程序一样，有时在运行时将输入值作为参数传递给一个“动作组”是最有效的方法。例如，我们来看一个名为“空气质量”的应用程序，它从“世界空气质量指数”项目查询网络服务，并报告来自全球各地传感器的读数。

空气质量会受到自然灾害（如森林火灾和火山爆发）、大规模的工业和商业活动，以及个人行为的总和（如烹饪、取暖和驾驶）的影响而下降。天气模式会影响污染物在任何时间和地点的聚集或扩散。该应用程序允许用户选择一个特定地点或一个区域，然后报告最新的空气质量指数（AQI）读数。这款应用程序是由一位业余公民开发者编写的。

[![一款由普通公民开发者编写的手机应用程序，用于报告空气质量指数的测量数据](/blog/images/air-quality-iphone.png)](air-quality-iphone.png)

世界空气质量指数API使用不同的REST请求来获取不同类型的地理位置的数据，并且每个请求返回的数据集略有不同。一个共同点是，每个测量结果的当地时间都会以格林威治标准时间（GMT）的形式返回，并带有时区偏移量。您需要对这些数值进行处理，才能向用户显示正确的当地时间。

处理日期和时间计算可能会变得复杂！相信我，如果您从未自己做过，或者可以阅读我们关于[数据转换验证](https://www.altova.com/blog/validating-data-transformation/)的文章。但这是一个非常适合使用“操作组”来构建并从工作流程的多个环节调用的应用。如果我们将时间和偏移量作为参数传递，那么这个操作组只需要一套操作来计算和格式化来自任何查询的本地时间。

以下是在“设计器”中的“操作组”对话框中对“操作组”的定义：

[![移动应用开发中的编程技巧：为子程序定义参数](/blog/images/parameter-definition.png)](parameter-definition.png)

参数定义位于顶部，其中“time”和“adj”这两个参数由开发者指定。由于“可选”复选框未被勾选，因此在调用该操作组时，这两个参数都是必需的。

开发者在操作组中添加了比你可能预想的更多步骤——原来并非所有时区都与格林威治标准时间（GMT）相差整整一个小时。例如，加拿大纽芬兰和伊朗德黑兰，它们的时差分别是正负30分钟。

以下是“Calc 本地时间”功能，它被从另一个动作组内部调用：

[![在调用动作组时，提供参数值](/blog/images/parameter-provide.png)](parameter-provide.png)

这是应用加载地图和信息页面，以显示某个城市空气质量指数（AQI）的最后一步。参数直接通过引用API查询结果传递，无需进行任何不必要的处理。参数可以传递单个值，如我们在此示例中所示，也可以传递数组或映射。您可以将参数与操作组、子页面、控制模板结合使用，或者在关闭一个应用程序时自动启动另一个应用程序。

这篇文章仅介绍了两种可用于 MobileTogether 的移动应用开发技术。请运用您的所有技能和工具，以最快的速度构建最高效的应用程序！您可以观看我们的[视频演示](https://www.altova.com/zh/mobiletogether/demos#video_Demos)，查看更多[示例应用程序](https://www.altova.com/zh/mobiletogether/demos)，或者查阅[在线手册](https://www.altova.com/manual/MobileTogether/mobiletogetherdesigner/)，以全面了解所有信息。当您准备好开始使用 MobileTogether，以创纪录的速度构建自己的跨平台移动应用程序时，请[下载 MobileTogether Designer](https://www.altova.com/zh/mobiletogether/download)。
