不同行业的企业会有特殊的业务场景,比如某些制造业的企业的工厂是物理隔离的,但工程师需要拿着平板输入很多生产数据;某些煤炭和矿业企业,在实际的工作区都是比较偏远,信号比较差,但是又需要用手机打开应用输入信息,等等这些业务场景需要都需要一个离线的应用来支持。
首先,我们来看一下有哪些类型的离线应用。

从上图我们可以看出,支持离线应用的有PWA,Hybrid,Native共三种。

其中Hybrid套壳移动应用,支持原生功能+复用Web资源,但是开发比较复杂,本次将不会介绍。PWA开发的应用无需依赖应用市场,体积小、加载快,提供部分独立应用能力的网页应用,但是离线功能基于所使用的浏览器,比如苹果的Safari不支持离线缓存能力,Chrome支持离线缓存,但是基于PWA的应用能力受限于浏览器,比如无法获得手机上每天运动的步数,心率等数据。所以本文会重点介绍通过移动原生开发的离线应用。移动原生应用具有更好更快用户体验,更好集成移动设备的各种功能。
下载路径:
Download Android Studio & App Tools - Android Developers
首先下载Android studio安装包,如果只是测试移动原生的基本功能和调试,可以使用推荐的APP-Make it Native,但是如果需要测试离线功能和自定义移动原生组件则需要安装此工具来测试。Make it Native只支持标准原生组件的测试,且无法测试离线功能。

基本是一直点Next直到安装完成,网上有很多安装教程,这里就不介绍具体的安装细节了。安装成功点击finish,等待启动。

继续点击Next安装,直到打开如下界面。

点击More Actions,然后选择Virtual Device Manager。

运行设备

把开发出的离线应用生成APK文件,然后拖入到打开的手机端安装。构建原生应用程序(iOS 上的 IPA 和 Android 上的 APK)。可以参考文档Building, Testing, and Distributing Apps | Mendix Documentation

打开安装的应用

输入本地的IP地址,然后启动

然后我们的移动应用就启动了,在测试移动原生应用的时候需要同步启动Studio Pro里的项目,上面生成的APK文件是用于测试开发移动原生应用功能的。测试离线功能的话,需要生成最终面向客户的APK安装文件。运行此文件时不需要如上图输入地址而会自动运行,在测试离线功能的时候,只需要在Studio pro里停止运行的项目,即可测试离线功能。
Mendix平台支持构建完全脱机优先的应用程序,无论是移动原生应用程序还是PWA渐进式 Web 应用程序。
无论连接如何,离线优先的应用程序都能提供持续的体验。页面和逻辑与设备上的离线优先数据库交互,用户与服务器同步数据。针对本地数据库工作可获得更快速的UI、更高的可靠性和更长的设备电池寿命。请注意,离线优先应用程序需要网络连接才能进行多项操作,例如首次启动应用程序或用户尝试登录时。
Mendix支持为移动原生和渐进式网络应用程序构建离线优先应用程序。移动原生和渐进式 Web 应用程序 (PWA) 共享相同的核心,赋予它们相同的离线优先功能。移动原生应用程序始终离线优先,
同步是将数据和文件从应用程序的服务器复制到设备并使用在本地设备上所做的更改更新服务器的过程。应用程序首次启动时会填充本地数据库。初始同步后,数据将在应用程序中保持可用,因此它可以在没有互联网连接的情况下工作。您可以对何时以及如何执行后续同步进行建模。在某些情况下, Mendix 用户可能会自动执行同步。设计高效的同步策略对于高性能应用程序和流畅的用户体验至关重要。
Mendix会自动分析您应用程序的数据模型,以根据您的离线优先导航配置文件中使用的页面和纳米流来确定应同步哪些实体。此外,该平台考虑了实体访问,因此仅同步允许用户访问的数据。
在以下情况下会自动触发同步:
同步也可以通过Mendix应用程序中的不同位置进行配置,例如:
同步在数据库级别执行。这意味着如果您在对对象进行一些未提交的更改时进行同步,则本地数据库中的属性值将被同步,而忽略未提交的更改。同步后未提交的更改仍然可用。
可以从用户触发三种不同类型的同步:
此模式为离线优先应用程序中使用的所有实体执行上传和下载阶段。您可以使用可定制的同步来定制每个实体的行为。
这种类型的同步只能通过纳流内的Synchronize操作来完成。在这种模式下,所有更改提交到离线优先数据库的对象都会同步。有关自上次同步以来删除的对象的信息也会发送到服务器。

选择性同步能通过纳流内的Synchronize操作来完成。在这种模式下,一组特定的对象将被同步。 已删除的对象无法使用选择性同步进行同步。同时也可以通过微流里的Synchronize to device来把对应的数据从服务器同步到设备里。

同步过程包括两个阶段。在上传阶段,您的应用程序使用提交的新对象或更改的对象更新服务器数据库。在下载阶段,您的应用使用服务器数据库中的数据更新其本地数据库。请注意,同步仅适用于数据库级别。这意味着新的未提交对象和属性更改不会同步。
上传阶段执行以下操作:
如果上载阶段成功,则下载阶段开始,其中本地数据库使用来自服务器数据库的最新数据进行更新。下载阶段的行为因同步类型而异:
同步完成后,您应用当前页面上的小部件将被刷新以反映最新数据。如果同步是从纳流触发的,则会更新所有纳流对象/列表变量(未提交的更改仍会保留)。
请注意,如果对象在同步过程中从设备中移除,则纳流对象变量的值在同步后可能会变为empty 。在以下情况下可能会发生这种情况:
这些设置不适用于选择性同步。默认情况下, Mendix自动确定哪些对象需要同步,如同步中所述。
根据用例,可能需要更细粒度的同步控制。因此,可以更改实体的同步模式。您可以在以下选项中进行选择:
如果您的自定义小部件或 JavaScript 操作使用了Studio Pro在您的离线优先配置文件中无法检测到的实体(因为它仅在代码中使用),您可以使用可自定义的同步来包含此类实体。

同时我们在最新版本10.2发布的内容中可以看到,新增了online同步模式,这样我们就可以更灵活地决定哪些实体可以用于离线,哪些实体必须在在线情况下才能使用。

您可以使用相同的概念(域模型、页面、微流等)和编辑器来为 Web 应用程序建模,从而为离线优先应用程序建模。然而,离线优先应用程序与网络应用程序有根本的不同。 Mendix Studio Pro执行验证以确保您的应用程序遵循离线优先方法并且即使在没有连接的情况下也能正常工作。
离线优先应用程序的主要区别在于它们使用本地数据库而不是服务器数据库。这意味着您需要将应用程序所需的对象同步到离线优先客户端的本地数据库。但是,同步太多对象可能会导致性能问题。
用户所做的变化也存储在这个离线优先的数据库中。这意味着在更改与服务器同步之前,其他用户不会存在此类更改。将应用程序中所做的更改同步到服务器数据库时,开发团队需要考虑几个方面。例如,同一对象可能已被不同用户编辑或删除,或者由于应用程序模型中定义的访问规则而无法再访问。在开发项目开始时就工作流程达成一致,以保持开发顺利进行。
开发离线优先应用程序的另一个重要方面是向后兼容性。通常,当您将新版本的 Web 应用程序部署到云端时,所有用户都可以立即访问最新模型。但是,离线优先应用程序并非如此。应用程序模型的某些部分作为本机移动应用程序包的一部分分发,例如页面、纳流和 JavaScript 操作。这意味着即使您更改和部署这些部分的新版本,您的用户也无法访问最新版本,直到他们通过 OTA 包或在线应用商店(如 Google Play 或 App Store)更新他们的本机移动应用程序。
想象一下,您已经部署了本机移动应用程序的第一个版本,您的用户已经下载了它,现在他们正在使用它。此时,您应该考虑对模型引入的更改。例如,假设您重命名一个实体并将其部署到Mendix公有云。用户设备中的本地数据库仍将使用旧的实体名称。如果您的用户尝试同步您重命名的实体的新对象,这可能会导致同步错误,因为服务器不再具有旧名称的实体。即使您的用户更新了设备上的应用程序,也可能存在使用旧模型域创建的数据需要与服务器同步。此类问题就是您需要确保应用程序的模型更改向后兼容的原因。
关于其他应用程序元素的更改可能会出现类似的问题,包括用户可用的微流和常量。例如,如果您的新部署重命名微流或修改其参数,则尚未更新其应用程序的用户将使用应用程序的先前模型,其中它引用具有旧名称的微流。
为确保Mendix应用程序的最佳用户体验,请遵循以下最佳实践:
当您对 Web 应用程序进行建模并将其部署到生产环境时,所有用户都可以立即访问它。然而,对于离线优先的应用程序来说,情况通常并非如此。用户设备上安装的应用程序不会立即更新(对于本机移动应用程序尤其如此)。通常,您在 Google Play 商店和 Apple App Store 中创建并分发应用程序的新版本,这可能需要一些时间。或者, Mendix提供了一种无线 (OTA) 更新机制来更新您的应用程序,而无需完成发布过程。
有关安全更新离线优先应用程序的信息,请参阅构建、测试和分发应用程序。Building, Testing, and Distributing Apps | Mendix Documentation
最后,让我们断开Studio pro的项目,来测试离线应用吧。

关于Mendix公司
在一个数字化先行的世界中,客户希望自己的每一项需求都得到满足,员工希望使用更好的工具来完成工作,而企业意识到自己只有通过全面数字化转型才能生存并取得成功。Mendix公司,a Siemens business正在迅速成为企业数字化转型的推动者。其业内领先的低代码平台和全方位的生态系统整合最先进的技术,帮助企业创造出提高互动性、简化操作和克服IT瓶颈的解决方案。Mendix公司以抽象化、自动化、云和协作为四大支柱,大幅提升开发者的生产力,并且依靠自己的工程协作能力和直观的可视化界面,帮助大量不熟悉技术的“公民”开发者在他们所擅长的领域创建应用程序。Mendix公司是权威行业分析师眼中的领导者和远见者,也是一个云原生、开放、可扩展、敏捷和饱经考验的平台。从人工智能和增强现实,到智能自动化和原生移动,Mendix公司已成为数字化先行企业的骨干。Mendix公司企业低代码平台已被全球4000多家领先的公司采用。