Skills and Apps Needed for IoT Mobile App Developers

2022-07-13 13:05:23
关注

Unique Skills and Apps for Building IoT Mobile Applications


Many Internet of Things (IoT) products or services rely on mobile applications. Whether they are for industrial, commercial, or consumer use cases, mobile applications are often critical user interfaces to communicate with, configure, or control connected-devices or digital services in an IoT system.  

A lot of traditional mobile application development companies say they can do IoT, and that might be true. However, we find that creating IoT applications requires specialized expertise to do it well. If a traditional app development company lists IoT as just one of their many mobile capabilities, that should be a warning flag. Doing IoT right takes expertise that only comes with a focus on IoT over an extended period of time.

Based on our years of experience building end-to-end IoT systems that integrate mobile applications with connected-devices and digital services in the cloud, we’ve gathered a list of some of the unique capabilities and skills that mobile application developers for IoT systems need to have.


'If a traditional app #development company lists IoT as just one of their many mobile capabilities, that should be a warning flag. Doing IoT right takes expertise that only comes with a focus on IoT over an extended period of time.' - @SpinDanceIncClick To Tweet

Important Mobile App Skills for IoT Developers

Bluetooth Low Energy


First on our list is Bluetooth Low Energy (BLE). BLE allows smartphones to connect directly to IoT devices such as sensors, smart appliances, and so on. This allows mobile applications to do things like collect data from the devices, control or configure their behavior, provision network credentials, update the device’s firmware, etc.

Although based on the same radio technology as traditional Bluetooth, BLE uses less power. BLE is better suited for IoT applications which by their nature are often battery powered and don’t send/receive a large amount of data. BLE has universal support within modern smartphones.

BLE is especially useful in its ability to provision network credentials, such as sharing WiFi SSIDs and passwords to an IoT device. The key is to do this securely, which requires know-how beyond the basics.

Working with BLE requires knowledge of not only the communication protocols, but also the unique behaviors of the IoT devices. This includes knowing how to troubleshoot and debug issues that come up. More often than not, this demands experience working with the embedded microcontroller systems that power most devices. Many traditional mobile app firms do not have this type of experience.

Knowledge of the nuances of BLE in different mobile application frameworks such as React Native, as well as iOS and Android environments is also critical. Each framework or environment does things a little differently.  

Zero-Configuration Networking

Zero-Configuration (often called Zeroconf) is another way that smartphones can identify and communicate with nearby devices. It is less commonly used than BLE for this purpose, however it is useful for communicating with devices that are connected on the same local WiFi network as the smartphone. A variety of protocols are available that allow for the mobile app to discover devices on the network without requiring any special network configuration. Thus, these protocols are collectively known as Zero-Configuration Networking. Such protocols include MultiCast DNS (MDNS) and Apple Bonjour.

Smartphones send multicast messages on the network to discover specific device types. The devices that support the protocol will respond with their service name and their IP address. The smartphone is then able to establish a direct connection with the device.

Having skills and experience with networking and embedded devices is important for implementing Zeroconf networking. Security is also of the utmost importance. Experience troubleshooting and debugging is critical.

IoT Cloud Service Integration

Most IoT mobile applications integrate with IoT cloud services. This connection to digital services running in the cloud allows users to interact with devices even if they aren’t within range of them. It also helps users tap into and gain useful insights from IoT system data. Cloud service providers offer several unique software services specifically for IoT that do things like route messages, index devices, process events, and aggregate data. Mobile applications often need to interact with these services.

Frequently, mobile applications for IoT interact with custom cloud APIs that streamline the interaction between the mobile application and the cloud services. Experience with HTTPS and REST API standards is very important. Equally important for IoT applications is having familiarity with GraphQL and MQTT.

When connecting to cloud services, implementing good security protections is of the utmost importance. This requires expertise in methods for authenticating user accounts as well as setting up access policies. This ensures the right users and systems have access to the right resources and others do not. This is a non-trivial task for IoT and knowledge of the nuances of IoT services is required.

Mobile app developers that have cloud experience, especially the IoT-specific cloud services and patterns, are extremely useful when building great mobile apps for IoT. Experience with multiple cloud service providers and their different capabilities and subtleties is a huge plus. Having this experience also helps select the optimal services and providers for specific use cases.

Interfacing with IoT Devices

By their nature, Iot systems bridge physical devices through networks to digital services and user interfaces. To perform their functions, these physical devices have computing capabilities embedded inside them. These small computers have external interfaces to take sensor measurements, drive displays, store data, etc. As mentioned earlier, often mobile apps connect to IoT devices over BLE, however, the actual data passed over BLE varies from device type to device type. The way the data is packaged and sent over BLE depends on the firmware running on the device. This data could be in a variety of formats including binary.

To unpack this data and debug any issues as they come up, it is critical to have knowledge of encoding, decoding, serialization, and bitwise operations. Additionally, understanding the data requires understanding the nuances of how the IoT device works. This may require reading datasheets and specification documents and sometimes even reviewing the embedded firmware. Having embedded systems knowledge together with mobile knowledge makes this process smoother and more efficient.

Security

IoT systems operate on networks and often handle important and private data. They are sometimes the target of attacks by criminals, security researchers, or others just looking for a challenge. To protect your products and your brand, IoT systems require good security measures that cross the boundaries between the devices, cloud, and mobile apps.

Authentication of users and devices is a critical feature. Mobile apps need to make sure that a user attempting to login is valid. This user must have unique permissions and data access policies depending on their account.  Also, mobile apps need to ensure that any device they attempt to connect to is authentic and hasn’t been tampered with. This is possible with cryptographically signed software and digital certificates. The data between devices and the mobile apps should be encrypted as well. Lastly, mobile apps often play a critical role in updating the firmware of the specific connected devices that they are designed to support. This may require securely downloading firmware files, verifying them, and transmitting them over to the device.

To build such systems, security knowledge is required from end-to-end. Experience with data access policies, claiming devices to accounts, and Over-the-Air (OTA) firmware updates with cryptographically signed firmware is critical.  

Cross Platform Development

Why write two apps when you can write one? Just a few years ago applications for Android and iOS had to be developed separately. However, today there are mature cross-platform development frameworks that target both. This means a single development project can result in mobile applications for both Android and iOS.

We have found that cross-platform development frameworks such as React Native and Flutter can generate excellent results in less time. Each of these frameworks allow developers to write code in a single language but then render applications in native code. The native code differs between Android versus iOS. This means that there is not much of a performance tradeoff. The resulting mobile apps perform well and have the look and feel that Android or iOS users expect.

These frameworks have been used in thousands of mobile applications as well as web applications. Leveraging a common framework for both web and mobile applications, brings a lot of benefits to the consistency of your user experience.

With IoT systems, having experience with cross-platform frameworks as well as native app development environments is crucial. This is especially true with the lower level interfaces such as BLE and networking. (Read our recent post on selecting an IoT platform)  

Mobile App Architecture for IoT

Mobile apps for IoT have to look and feel great. They also have to function flawlessly. We acknowledge that the best people to construct the user interfaces are not always the developers who specialize in the core functionality.  Look for a company that delivers the core IoT capabilities for an app inside a bundle of software that customers or other partner companies use within the mobile application they are building. This allows them to focus on creating a polished user experience, and not worrying about the complexities of the IoT features underneath.

Your developer should bundle the core IoT capabilities into mobile software development kits (SDK) that abstract all the IoT complexity into a bundle of software that exposes clear APIs to other mobile app developers.

These SDKs include APIs for cloud connectivity, account management, device data access, and so on. This gives mobile developers with less IoT experience access to the IoT APIs, so they can focus on the user facing features of the application. This collaborative mindset combined with known patterns for success is critical.  

Summary

These are just a few reasons why Mobile Apps for IoT are unique and require unique skills to develop. These include the IoT-specific core features of mobile development such as BLE as well as the cross-domain experience such as embedded and cloud. If you are looking to create great IoT experiences for your customers then working with a company that has these skills under one roof is a great advantage. By partnering with an experienced mobile app development company, you can achieve greater success and lower risks than trying to pull everything together yourself or working with less experienced firms. Ultimately, this saves cost and time in the long run.



  • Bluetooth
  • Cloud Software
  • IT and Security
  • Security



  • Work
  • Developer
  • Bluetooth
  • Cloud Software
  • IoT Prototyping and Development


参考译文
物联网移动应用开发人员所需的技能和应用程序




IoT移动应用开发的独特技能和应用
许多物联网(IoT)产品或服务都依赖于移动应用。不论是用于工业、商业还是消费场景,移动应用通常都是与IoT系统中连接设备或数字服务进行通信、配置或控制的关键用户界面。

很多传统的移动应用开发公司都说他们可以开发IoT应用,这也许是真的。然而,我们发现,要真正做好IoT应用,需要专业的技能和经验。如果传统应用开发公司只是将IoT列为他们众多移动能力之一,那应该引起警惕。要正确地开发IoT应用,需要长期专注于IoT领域积累的专业知识。

根据我们多年来开发端到端IoT系统,并将移动应用与云端连接设备和服务集成的经验,我们总结出IoT系统中移动应用开发者需要具备的一些独特技能和能力。

“如果传统应用开发公司只是将IoT列为他们众多移动能力之一,那应该引起警惕。要真正做好IoT需要专业知识,而这只有长期专注于IoT领域才能获得。” - @SpinDanceInc 点击推特

IoT开发人员需要掌握的重要移动应用技能

蓝牙低功耗(BLE)
我们列出的第一个技能是蓝牙低功耗(BLE)。BLE允许智能手机直接连接到IoT设备,如传感器和智能家电等。这使移动应用可以执行诸如从设备中收集数据、控制或配置其行为、提供网络凭据、更新设备固件等操作。

虽然BLE基于与传统蓝牙相同的无线电技术,但其功耗更低。由于IoT应用通常以电池供电,且数据传输量不大,因此BLE更适合IoT应用。BLE在现代智能手机中得到广泛支持。

BLE在提供网络凭据方面特别有用,例如将WiFi的SSID和密码共享给IoT设备。关键在于安全地进行这项操作,这需要超越基础的技能和知识。

使用BLE不仅需要了解通信协议,还需要理解IoT设备的特有行为。这包括知道如何排查和调试问题。大多数情况下,这需要具备嵌入式微控制器系统的开发经验。许多传统移动应用公司缺乏这种经验。

此外,了解不同移动应用框架(如React Native)以及iOS和Android环境中BLE的细微差别也很关键。每个框架或环境在处理方式上略有不同。

零配置网络(Zero-Configuration Networking)
零配置(通常称为Zeroconf)是另一种智能手机识别和与附近设备通信的方式。虽然用于此目的的使用频率不如BLE高,但它对于与同一本地WiFi网络中的设备通信非常有用。多种协议允许移动应用在不进行任何特殊网络配置的情况下发现网络中的设备。因此,这些协议统称为零配置网络。其中包含MultiCast DNS(MDNS)和Apple Bonjour等。

智能手机在网络中发送多播消息以发现特定类型的设备。支持该协议的设备将响应其服务名称和IP地址。智能手机随后可以与该设备建立直接连接。

在实现Zeroconf网络时,具备网络和嵌入式设备的技能和经验是重要的。安全性也是重中之重。具备排查和调试经验同样至关重要。

IoT云服务集成
大多数IoT移动应用都会与IoT云服务集成。这种与云端数字服务的连接使用户即使不在设备附近也可以与设备进行交互。它也帮助用户获取和分析IoT系统数据,以获得有价值的信息。云服务提供商提供多种专为IoT设计的独特软件服务,这些服务可以进行消息路由、设备索引、事件处理和数据聚合等。移动应用通常需要与这些服务进行交互。

通常,IoT移动应用会与定制的云API进行交互,以优化移动应用与云服务之间的互动。熟悉HTTPS和REST API标准非常重要。同样重要的是熟悉GraphQL和MQTT。

连接到云服务时,实施良好的安全保护至关重要。这需要在用户账户认证和访问策略设置方面具备专业知识。确保正确的用户和系统能够访问正确的资源,同时防止未授权访问,对于IoT来说是一项非同小可的任务,并且需要对IoT服务的细微差别有深入了解。

具备云开发经验的移动应用开发者,尤其是在IoT专用云服务和模式方面,对于构建出色的IoT移动应用非常重要。熟悉多个云服务提供商及其不同功能和细微差别的经验是一个巨大的优势。这种经验也有助于为特定使用场景选择最优的服务和提供商。

与IoT设备的交互
IoT系统通过网络将物理设备连接到数字服务和用户界面。为实现其功能,这些物理设备内嵌有计算能力。这些小型计算机有外部接口,用于采集传感器数据、驱动显示屏、存储数据等。如前所述,移动应用通常通过BLE连接到IoT设备,但通过BLE传输的数据因设备类型而异。数据的打包和传输方式取决于设备上的固件。这些数据可能以多种格式存在,包括二进制格式。

为了解析这些数据并解决出现的问题,掌握编码、解码、序列化和位操作非常重要。此外,理解数据还需要了解IoT设备的运行机制。这可能需要阅读数据表和规范文档,有时甚至需要审查嵌入式固件。拥有嵌入式系统和移动开发的双重知识可以让这个过程更加顺畅高效。

安全
IoT系统在网络上运行,通常处理重要和私人的数据。这些系统有时会成为犯罪分子、安全研究人员或追求挑战者的攻击目标。为保护您的产品和品牌,IoT系统需要具备跨越设备、云端和移动应用的全面安全措施。

用户和设备的身份验证是关键功能之一。移动应用需要确保试图登录的用户是真实的。根据用户账户的不同,该用户应具备独特的权限和数据访问策略。此外,移动应用还需要确保其连接的任何设备都是真实且未被篡改的。这可以通过使用加密签名的软件和数字证书来实现。设备和移动应用之间的数据也应进行加密。最后,移动应用通常在更新其支持的特定连接设备的固件中扮演关键角色。这可能包括安全地下载固件文件、验证文件并将其传输到设备。

要构建这样的系统,需要具备端到端的安全知识。在数据访问策略、将设备绑定到账户以及使用加密签名固件进行空中(OTA)固件更新方面拥有经验是至关重要的。

跨平台开发
既然可以开发一个应用,为什么还要开发两个?几年前,Android和iOS应用必须分别开发。然而,今天已有成熟的跨平台开发框架,可以同时针对这两个平台。这意味着一个开发项目可以生成适用于Android和iOS的移动应用。

我们发现,像React Native和Flutter这样的跨平台开发框架可以在更短的时间内生成出色的结果。这些框架允许开发者用一种语言编写代码,但将应用渲染为原生代码。Android和iOS的原生代码是不同的,这意味着性能上的损失并不大。最终的移动应用性能良好,并具有用户所期望的Android或iOS的外观和感觉。

这些框架已被用于成千上万的移动和Web应用中。在Web和移动应用中使用通用框架,对用户体验的一致性带来了许多好处。

在IoT系统中,具备跨平台框架以及原生应用开发环境的经验非常重要。这一点在较低层的接口(如BLE和网络)上尤为明显。(阅读我们最近的IoT平台选择文章)

IoT的移动应用架构
IoT的移动应用不仅要外观精美、操作流畅,而且必须功能完美。我们承认,构建用户界面的最佳人员并不总是专注于核心功能的开发人员。寻找一家能够为其他公司或合作伙伴在其移动应用中使用的移动应用提供IoT核心功能的公司非常重要。这让他们可以专注于打造高质量的用户体验,而无需担心IoT功能的复杂性。

您的开发人员应将IoT核心功能封装成移动软件开发工具包(SDK),将所有IoT的复杂性抽象成一个软件包,并向其他移动应用开发人员提供清晰的API。

这些SDK包括云连接、账户管理、设备数据访问等API。这为具有较少IoT经验的移动开发者提供了IoT API,使他们能够专注于用户界面功能。这种协作思维与已知的成功模式相结合,至关重要。

总结
以上只是IoT移动应用的独特之处以及其开发需要独特技能的几个原因。这包括IoT特定的核心功能,如BLE,以及跨领域的经验,如嵌入式系统和云服务。如果您希望为客户提供出色的IoT体验,那么与一家具备这些技能的公司合作将是一个巨大优势。通过与经验丰富的移动应用开发公司合作,您可以比自己尝试整合所有资源或与经验不足的公司合作获得更大的成功和更低的风险。从长远来看,这将节省您的成本和时间。

蓝牙 云软件 IT与安全 安全 开发者 蓝牙 云软件 IoT原型与开发

您觉得本篇内容如何
评分

评论

您需要登录才可以回复|注册

提交评论

广告
提取码
复制提取码
点击跳转至百度网盘