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.
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 (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.
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.
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.