Do you have a Mac? If so, then you already have almost everything you need to get started writing apps for iPhones and iPads. And any other devices that run the iOS operating system. In this guide I will walk you through what you need to know about setting up a development environment. Writing an app, and distributing it to users.
New apps for iOS are usually written using the Swift programming language. If you aren’t familiar with the Swift language there are many resources available to help you learn. And if you are new to coding and looking for a fun approach, check out Swift Playgrounds. If you are an experienced developer already familiar with C-like languages. Then you might prefer starting with a cheatsheet like this one or this one.
Language you NEED to learn :
The Swift language has evolved a lot since it was released in 2014. The current version of Swift is version 5.2, released on March 24, 2020. As you look for Swift learning resources pay attention to what version Swift is being used. There were some major changes that occurred when Swift 3 was released. And to a lesser degree when Swift 4 was released. Since then, source compatibility has been maintained across releases. Therefore, resources that cover Swift 4 or later are likely still relevant; those that cover earlier versions may be less useful.
Apps for iOS can also be written using the Objective-C programming language. Objective-C was the only supported language for writing iOS app during the time between when the first iOS SDK was released in 2008 and when Swift was released in 2014. You will often come across Objective-C code in older iOS development resources, and legacy iOS apps maintained by larger companies are often written in Objective-C. It is hard to find up-to-date resources about Objective-C development and I strongly urge you to focus on Swift first.
Which IDE Should i Use ?
Xcode is the integrated development environment (IDE) used to write, run, debug, test, and distribute iOS software. You can download it here for free from the Mac App Store. You will need an Apple ID in order to download and use Xcode. If you don’t already have an Apple ID you can create one here for free.
To write iOS software you need to know more than just the Swift language; you also need to understand the tools and frameworks. Apple’s Getting Started with Xcode video is a great introduction to the development environment.
If you are a complete beginner to iOS and Swift then the free Your First iOS and SwiftUI App video course from raywenderlich.com would be a great option to learn how to write your first app.
If you prefer your tutorials to be web-based instead of video-based then a good option would be to work through Apple’s Learn to Make Apps with SwiftUI tutorial series.
All three of these resources use Apple’s new SwiftUI framework to build user interfaces. However, a lot of existing iOS content you find online will be based on the UIKit framework. If you anticipate needing to work with UIKit-based projects you might want to start with the Your First iOS and UIKit App video course from raywenderlich.com instead.
To run, debug and test iOS software you can use either an iOS simulator running on your Mac, or an iOS device connected to your Mac. The simulators and connected devices are managed using Xcode.
What to do After ?
To distribute iOS software you will need an Apple Developer Program membership. It costs $99/year. You can enroll here, but feel free to wait to enroll until you’ve written something that you want to distribute.
The most common way to distribute iOS software is through the App Store. There are a lot of guidelines to follow, however, and it is entirely possible that your app may not pass App Review on the first attempt, or ever.
Fortunately, other distribution methods are available. For instance, you can use Ad Hoc distribution to distribute your app to up to 100 specific iOS devices. This method is tedious, however, if you don’t own all of the devices that you want to distribute the app onto.
Distribution :
Another method is TestFlight, a free service from Apple that allows you to distribute your app. Along with updates, to up to 10,000 beta testers of your choosing, whom you invite by email address. If you just want to share your app with family and friends and don’t want to bother with App Store review then TestFlight distribution is going to be the easiest option.
Before you distribute your iOS app you should review the Preparing Your App for Distribution and Distributing Your App for Beta Testing and Releases guides from Apple.
You probably don’t need to understand the full details of how signing certificates and provisioning profiles work as long as the “Automatically manage signing” setting is enabled in your Xcode project. Even so, it still wouldn’t hurt to read the What is app signing? guide.
App Store Connect now requires apps to have app icons in an asset catalog before they will be accepted for distribution. Review the Create asset catalogs and sets guide for more information. The free Icon Set Creator tool from Nicolas Miari is really helpful for creating all the different sizes you need.
I recommended that you distribute your app to beta testers via TestFlight before attempting to distribute the app through the App Store.
Conclusion :
To distribute your app via TestFlight you should first use Xcode to upload a build of your app to App Store Connect. The workflow is described here. There is a lot of useful information on the page, but the key thing to know is that you must create an app record in App Store Connect before you can upload a build of your app from Xcode.
After you have tested your app using TestFlight you can follow the Distribute an app through the App Store guide to publish your app to the App Store.
I hope that was helpful. There is so much more to learn, but that should get you started.
When you are ready to learn more, the most authoritative source of information about specific iOS technologies will almost always be the Apple developer videos. Hearing directly from the engineers who built the technologies is often invaluable.