Welcome to the first installment of our Swift and iOS application development tutorial series. Whether you are an experienced web developer or just starting out, this series will guide you through the fundamentals of Swift and iOS development.
If you’re interested, you can also check out our previous Swift introductory series here.
Before we dive into the details, let me provide a brief background about my experience in iOS and Mac development. I have been creating applications and games for iOS since the pre-Swift days around 2011, mainly using Objective-C. I’ve also built a few apps using Swift as it emerged. Although I have developed several Mac applications, they were primarily based on a web stack, combining HTML, CSS, and JavaScript. Therefore, I consider them distinct from native applications.
There’s something special about creating applications that run with native code. Swift, being a lower-level language compared to JavaScript, inherently has more complexity. But this complexity also offers unique opportunities that are not possible within the web environment. The iOS ecosystem provides a wide range of frameworks and primitives, making it a more intricate platform overall.
It’s important to note that iOS development and web development are two entirely different tools that operate within distinct environments. Let’s discuss some key differences between the two:
-
Openness vs. Walled Garden: The web is open, allowing anyone to create and publish a website or web application. However, iOS apps operate within Apple’s walled garden, providing improved platform security but also limiting certain freedoms. Apple has the authority to reject or remove applications that don’t meet their quality standards or policies. Additionally, each app update requires Apple’s approval, which can take several days.
-
Control and Vendor Environment: With web development, you have limited control over user devices and browsers, as they are owned by different people and companies. On the other hand, iOS development allows you to decide which devices to support, with Apple being the sole vendor.
-
Native Experience: iOS apps are first-class citizens on Apple devices such as iPhone, iPad, and Apple Watch. Having your app run natively on these devices provides a remarkable experience. In contrast, there can be limitations to the mobile experience of web applications due to security measures imposed by Apple. Native iOS apps have exclusive access to features that make them great.
-
Centralized Decision-Making: Apple determines the future of Swift and iOS development, providing a clear roadmap for both the language and the devices. This centralized decision-making process enables faster improvements and advancements. In contrast, web development involves multiple companies contributing to the evolution of features, which can have both positive and negative implications.
-
Distribution and Management: The web requires developers to handle app distribution, provisioning, and server management. In contrast, Apple takes care of these aspects for iOS apps. Additionally, the iOS App Store provides access to a massive market of 1 billion iOS users, making it easier for app discovery.
However, having an app in the App Store doesn’t guarantee widespread usage. While the potential audience is vast, people tend to use a small number of popular apps regularly. This brings us to the topic of marketing, which plays a crucial role in app success.
Discoverability is a challenge both on the web and in the App Store. However, with web applications, we have more control over the initial user experience compared to iOS apps. Web developers can craft a unique first-time experience, whereas iOS apps often require users to decide whether to install or not.
In conclusion, there is no competition between the web and iOS platforms. Both are excellent platforms, and each may be better suited for certain types of apps. Understanding the differences and nuances between the two allows developers to make informed decisions and leverage the strengths of each platform.