Summary of platform changes and common questions
At it latest developer conference (WWDC 2019) Apple announced several new features and technologies, that will make developing iOS apps very different from what it has been for years.
In this short post, I tried to summarize the 7 most important platform changes and enhancements which developers need to stay updated on, and from my own experience some of the most common questions & challenges facing iOS developers today.
What is new ?
SwiftUI introduces declarative views instead of using storyboards or programmatic created views.
Declarative means in contrast to the current imperative way of building views, is that all possible different states of the views are declared up front, and SwiftUI adapts the view layout automatically as soon as the state changes, no need for logic or a control flow to change the views programmatically as in the imperative way.
The current imperative way of implementing views can be indeed error-prone as soon as you have multiple variable to observe, especially in a async environment. ( think of concurrent async UI updates on model changes or concurrent UI animations for example)
The views in SwiftUI are in contrast un-mutable structs and can not be modified programmatically, they are instead re-rendered (new created) as soon as a binded state Variable changes.
The binded variables are observed through SwiftUI ( similar to React frameworks), and when the values are modified, SwiftUI re-render the view automatically, no need for programmatic state observing.
SwiftUI follows also different architectural patterns than viewControllers, it does not follow MVC architecture, but it is more MVVM architectural patterns ( BindableObject), which is more state of the art today.
What does this mean for iOS developers:
- no more storyBoards are needed
- no more UIViewControllers are needed
- existing applications with MVVM architecture can be easily migrated in the future, since the ViewModel can be reused in SwiftUI Apps as BindableObject
- If you want an application today which is future proof ( >= iOS13) and still supports old iOS Versions, use the MVVM architecture
SwiftUI should be on the top of the the list of the skills to learn by every iOS developer, since this will be the future direction for iOS, and will be quickly adopted by customers.
2. Machine Learning (On Device)
Creating ML experience in Apps is becoming easier on the mobile platform with Core ML 3. Core ML 3 provides machine training directly on iOS devices, without the need of cloud services.
This is important for many use cases in respect of privacy, and fast availability, developers can create and train their models where needed, keeping the data locally, and not be dependent on cloud services.
3. Sign in with Apple
Similar to Gmail or Facebook Sign-In, Apple has now a service which can be used by Apps to delegate the login and the management of the user data to Apple, which is usually more trusted by users than an unknown App producer.
One of the big differences to the existing services like facebook and google, the mail Adress can be randomly generated and apple do the forwarding to the real iCloud mail address, which gives the users more control and privacy about their data.
4. VisionKit (OCR: optical character recognition)
With VisionKit, there is no more Need for the external libraries to scan documents (OCR) and images, VisionKit is a native framework which will do the job.
Encryption, Hashing and public-private key cryptography can be now done using a Swift Framework instead of more complex C based API’s or external libraries.
CryptoKit can though not be used in the context of Blockchains and cryptocurrencies wallets since exporting/sharing of private keys between apps is not allowed for good reasons, and some relevant digital signature functions are not supported ( like secp256k1 elliptic curve used by ethereum)
6. Augmented Reality
ARKit3 supports the integration of people with virtual objects in AR scenes and adds motion capture which enables the tracing of body movements as input into the AR scenes.
This will allow a faster and easier development of interactive games based on ARKit.
7. Swift Package Manager (SPM)
The Swift Package Manager supports now iOS. It will take a longer time until SPM can replace established package manager like CocoaPods, but it will gain importance in the next years.
Common questions & challenges
The new changes for the platform and frameworks are a logical adaption to the new technology trends, but they mean also a new learning and adaptation phase for every iOS developer.
As an IOS developer we are always concerned about paradigm shifts and advances in the technology, especially what they mean for our jobs and career, so I added here my point of view on some of those questions:
- Is iOS App development still a good career today ?
Yes. iOS app development and swift programming language are skills which will be in high demand in the future, and that for the following reasons:
- Native Apps are still the best choice for many Business use-cases because of usability , performance, easy Access to the device sensors, offline features without restrictions, push notifications, better control of power usage, fluid Animations, easier maintenance. Especially for online Business built around Apps like Uber, AirBnB, Payment Apps, their users will still be best served with a native App.
- Even for Corporations where a WebApp with a single Source Base is the better choice , there will be modules which need to be done natively for one or multiple reasons listed above
- On Device Machine Learning and IoT ( HomeKit, HealthKit, VisionKit..) will enable a new kind of native Apps using sensors directly on the device, web Apps will take time to catch up, with the advances.
- Secure Native Apps with Bio-sensors on personal mobile devices can be part of a future more decentralized web, and may be in conjunction with Blockchain part of the solutions of Web3
It is becoming difficult to be an expert on different platforms at the same time, because of the complexity of mobile development, and the speed of Web technology changes.
Especially with JS frameworks and higher level tools, somehow you have the feeling , that every 6 months there is a yet another framework which does the job better, but most developers don’t have the time to keep up.
So unless you want to have a general Know-How which is usually not enough to develop a Business Solution in reasonable time for the customer, you should stick to one platform, and hire an expert for others when needed.
3. What about Blockchain, IoT, ML ?
Blockchain will be very likely the backbone of the Internet in the future, mobile developers should understand and follow the development closely.
IoT & ML are and will be even more important topics for native apps, since the mobile device which is carried by the user at all times is a natural place for sensors and extensions to collect and analyze data using onDevice ML.
The Combination of personal mobile device, Blockchain and IoT will open a new kind of business uses cases and opportunities for App developers in the future
4. Should I start developing my own Apps for the Apple App Store as a Freelancer ?
Although being a Freelance developer location independent , office-time independent, and without an annoying boss is a very attractive option, the reality is not as easy, as it seems.
Indeed if you want to be successful on the Apple Store as a Freelance App developer, you will quickly realize that the implementation ( coding) is a only a small part of a successful product.
You need 2 other Building blocks which are at least as important as coding, and require mostly the same budget or even more:
- Excellent design and usability ( mostly not the strength of software developers and means also hiring a designer)
- Very good Marketing ( which means knowHow and often a big marketing budget)
Only if you have the required budget and only if you do well on the 3 Building blocks ( Design, Coding, Marketing), you can have a successful App.
For mobile Developers there is a always a magic in having their Apps in the hand of their users, it is exciting and rewarding. iOS development will be even more fun with the new features and frameworks in the next years.
So keep on learning and practicing.
If you need a fast track training to become an iOS developer, you can contact us on euraconsult.ch
We offer also a one day course well suited for front end developers to learn Blockchain smartskills.io