You're thinking about building an iOS app but you're not technology-savvy? No problem, we'll walk you through the ins and outs of mobile iOS development for startups.
When deciding to build an app, the focus should be on its core functionality, not necessarily the technologies used for building it, so let's look at the things iOS as a development platform excels from a feature-wise perspective.
iOS is a great platform for developing apps that have ML features. The hardware in the new iPhones is capable of fastly processing large amounts of data and extracting useful information. A new platform comes to every decade and ML on mobile devices has just seen the light of day, there are a lot of unexplored territories and a lot of startups to be built. ML has many implications and has offered a ton of exciting and innovative capabilities that could be integrated into a startup, natural language processing, image recognition, and object tracking are just a few of the things possible. At appssemble, we're experts in ML and AI, and we've even written a summary of what's currently possible in the realm of ML and AI.
There are no other platforms that are even close to achieving the capabilities offered by iOS to developers for building AR applications. Apple heavily invests in developments in this area and leads the way by a large margin, not only do they offer great technologies for building AR apps, but they also equip their latest models with sensors meant to aid the process of building great AR apps. LiDAR, which was included on the iPhone 12 Pro and iPads, makes the detection of real objects much more precise and blazing fast, which means there are a lot of opportunities for building AR apps. By combining AR with ML, we are technologically capable of achieving exciting things like human pose detection, speed, and trajectory of real moving objects such as golf or basketballs, virtual object placement, and manipulation or accurately measuring real objects.
One of the latest technologies introduced by Apple is App Clips, which offers users the possibility of interact with an app before downloading it. It's a great way for startups that operate in the physical world to interact with their customers. For instance, restaurants or mobility startups could offer functionalities such as renting a car or ordering a food dish without needing to download an app for that. App Clips are also great for ticketing or offering information at an event or conference, as the user won't have to download an app to consume or consult digital content but they will able to do it in a user-friendly manner, just like they would use a native app.
eSims are not new, however, Apple has opened its doors to apps that could take advantage of those and allow users to lose their carrier and take advantage of new ones with better offers through mobile apps. Apple allows users to install and use eSims as they're pleased, which means is now possible to have different phone numbers every month or to have different plans, based on your needs, the country you're in and what types of services do you use. There are a lot of advances to be made in this sector and there is a huge opportunity for innovation.
Cross-platform on macOS
In the latest versions of the iOS SDK, Apple made it super simple to port a mobile app to a macOS one. This means with minimal effort, your iPhone app could also run on desktops and laptops. Previously, macOS developers were pretty hard to find and expensive, as not a lot of macOS apps are being built nowadays, however by porting your iOS app to macOS, you can reach more customers. If you're thinking about building an app that could be useful in a macOS context, such as photos or video manipulation, watching content, or even e-commerce, you could reach a lot of customers. If you wish to be a top-charting app in the App Store without spending a fortune on marketing, this is possible in the macOS store.
If you're reading this, then most probably you already know what you're trying to build, however, we hope the above-mentioned technologies got you excited and made you think about how you can build an even better product. Let's now talk a bit about what's a mobile app made of and how is it made.
At appssemble, we only do native development because it allows us to use the latest and shiniest tools from Apple, but more importantly, because is the only approved way (by Apple) for building those kinds of software products. So let's look a bit at the tech stack used for building those apps.
What's a tech stack you ask? A tech stack is a set of tools and technologies used for building a certain kind of product. As an analogy to cooking, if an iOS application would be an apple pie (pun intended) then the tech stack would be the ingredients that are required for cooking a pie (flour, sugar, butter, apples, etc.). Our job when developing an app is similar to what a cook does, it picks the best ingredients (tech stack) and with it does its magic to create delicious dishes (in our case, mobile apps).
At the basis of every tech stack, we have the programming languages used, for developing a native iOS application we can use:
- Swift — a powerful and robust language developed by Apple in 2014, that was developed with the ideas of security, performance, and fewer bugs in mind. It forces the developers to write code in a way that makes it harder to introduce bugs while developing features of the apps. This is our weapon of choice as it allows us to built more sturdy apps and do it fast.
- Objective C — developed 30 years before Swift, ObjC is an object-oriented programming language from the days of Apple's beginnings. It offers great flexibility and is great for building apps that should interact with low-level functionalities or C/C++ libraries as it offers excellent interoperability.
One of the most important things about a mobile app is how does it look like. Apple offers us, developers, great tools for building the user interfaces and the user interactions:
- UIKit — is the oldest UI framework in the iOS SDK all the native apps built till 2019 (that were not games) were using it. It allows developers to interact, build and handle all types of user events and to build complex interfaces. Apples have made working with UIKit fast and pleasant by offering developers tools to build UI interfaces graphically. This is by far the most used UI framework on Apple's platform and the one we recommend for the vast majority of apps.
- SwiftUI — is a new UI framework from Apple, introduced in 2019, its a completely new system for building user interfaces and user interactions. SwiftUI is still rather new, and there are a lot of things that are currently not possible, we would not advise exclusively using it into a new app just yet.
- Metal — is a framework used for graphic processing or graphic-intense apps such as FinalCut or 3D games. By using Metal, the developers gain access to tools that can interact directly with the GPU in mobile devices and tools for video and image processing.
The vast majority of apps need some data for them to function, that data can be anything, from user details, friends list, to recipes or images. But where do they come from or where do they reside?
- APIs / Third-party services — most of the apps have a backend server or a service somewhere that handles the data needed for the app. They store and manipulate app-specific entities such as user details, accounts, passwords, balances, photos, etc.. For an app to be able to use an external, third-party server, it needs to be connected to a network, so the app won't function without an active internet connection.
- CoreData — what if you don't want to use a third-party service, and your app just needs data from the user? That's exactly what CoreData is for, it's a local data storage that can store your app's data (photos, videos, text, or other app-specific data). CoreData is also used occasionally as a caching mechanism for the third-part services. If an app only uses the information available on the device, it means it can run without an internet connection. An example of an app that could take advantage of CoreData would be a navigation app for hikers, as they could easily lose their internet connections.
- CloudKit — sometimes all your app needs is storage, if that's the case and you don't need any complex algorithms on your backend CloudKit is a great choice. It allows developers to fastly build apps in which the users could share data, without the need for a third-party service.
Now that we've talked about technologies, and how to build an app, it's important to also talk about how a mobile app can be tested.
- Manually — not specific to iOS but still one of the most common ways of testing an app is through manual tests. When manually testing an app QA cannot only check the functionality of a feature but can also check how it integrates with other features, if the design is consistent, or if the app handles well all the corner cases -- such as receiving a phone call when doing a certain task. They can also validate more accurately the performance and the user of the app on different types of devices with different screen and hardware configurations.
- XCTest — is a framework from Apple that allows developers to write unit, integration, UI, and performance tests for their code. It offers a great report of the coverage of the tested code and what can be improved. In addition to other tools or other platforms, it speeds up the UI testing mechanisms by allowing developers to record (like in screen recording) flows that would be repeated and validated when the tests are run.
All of the above-enunciated technologies from Apple can be used for developing mobile apps through the Xcode IDE (Integrated Development Environment), also offered by Apple.
As we've seen, Apple takes good care of developers who want to build apps for its platforms by offering a rich ecosystem of tools and technologies for development and offers a lot of innovative technologies for the next generation of mobile apps.