Dear Lifehacker, I have a little background in coding, and I'd like to make an iOS app. I'm just not sure where to get started or what tools I need. Where do I start? Thanks, App Store Amateur
If you're versed in coding, you'll need to become familiar with Apple's development tools and their guidelines. Apple is known to restrict apps for all kinds of reasons, so it's good to know what you can and can't do before you start.
We're not going to walk you through the entire process of making an app -- that's far too much information for this post. However, we will get you set up with the coding environment, point you to Apple's guidelines, and give you a few resources to help you learn Apple's different languages for iOS.
Xcode, Swift and the iOS SDK
Apple's IDE (integrated development environment) for both Mac and iOS apps is Xcode. It's free and you can download it from from Apple's site. Xcode is the graphical interface you'll use to write apps. Included with it is also everything you need to write code for the OS with Apple's new Swift programming language. It's also only available for Mac, so if you plan on making iOS apps, you'll need to be running OS X.
While Apple is pushing Swift pretty hard these days, you can program iOS in any number of languages, including Objective-C. Which you decide to use it really up to you, but here are a few guides, classes and tutorials to get you started:
- Start Developing iOS Apps Today: This is Apple's official starting guide. It walks you through setting up Xcode, structuring your app, implementing everything, and submitting it to the App Store.
- Introducing Swift: Apple's new programming language, Swift, is made specifically for iOS and Macs. It's supposedly much easier to work with and use, so if you're totally new to iOS development it's a good place to start. It works with and is similar to Objective-C (which you can also use if you prefer).
- Apple's Development Videos: Apple includes a lot of videos from WWDC teaching you various aspects of development. They're a great resource for learning industry tricks and getting to know the basic toolset you're working with.
- Ray Wenderlich's Tutorials: If you want to make games, Ray Wenderlich's tutorials are a great place to start. He covers all kinds of thing beyond games too, so you're bound to learn something about Swift and Objective-C even if you'd prefer to make a productivity app.
- Apple's API Capabilities: Apple has a lot of different APIs to access app extensions, Touch ID, Photos, HealthKit, and more. Familiarise yourself with these so you can integrate more advanced features into your app.
- Code School's iOS App Development class: You can get a grasp on the basics of iOS development for free through Code School's intro classes.
- Stanford's iOS Development Classes: Stanford has a set of free classes to learn iOS development. It's still only available for iOS 7, but most things you learn should transfer over nicely to iOS 8. Chances are there will be an updated class for iOS 8 in the near future.
That should get you set up with your development tools and give you a good grasp on how things work on iOS.
Apple's App Store review guidelines
It's no secret that Apple's App Store Review Guidelines are incredibly strict. Apple has a very specific view of what apps will be allowed in the store, so it's useful to get to know the rules before you even try to build your app. If you don't, you might spend your time producing something that Apple won't allow into the App Store.
When you finish your app, you'll submit it to the App Store and it will be reviewed based on a content, design (more on that in the next section) and technical details. So, head to the Review Guidelines page and get to reading. Apple also has a list of the common reasons apps get rejected here. Typically, it's because of crashes, broken links, advertisements or incomplete information. Apple is also known to block apps that include any type of adult or political content.
Likewise, many of Apple's APIs have their own set of review guidelines. So, if you're going to integrate your app with HealthKit or Apple Pay, it's good to get to know those as well. Here they are:
Keep in mind that Apple tends to be very conservative with its app review process. Chances are, if you're contemplating something even remotely risqué, it will be rejected, so be mindful of that before you start making your app.
Apple's design guidelines
Beyond Apple's review guidelines, there is also a set of design and interface guidelines. Apple wants all the apps in its store to have some type of consistency, and while this doesn't have to mean good design, it does mean apps use the same basic UI elements.
To get a grasp on this, check out Apple's Human Interface Guidelines page. Here, you'll find the basics of what's required in both apps and icon design. Apple also has a set of Do's and Don'ts that summarise that massive guide so it's easier to get started.
Thankfully, Apple doesn't leave you totally in the dark on how to make a well designed app. Here are a few resources to help you design something worthwhile:
- Designing Great Apps: Apple collected together some of the best talks from WWDC about design to help you get started with designing an interface.
- Designing A User Interface: Apple put together a guide for designing interfaces in iOS 8 using the built-in tools of Xcode.
You can also find plenty of resources online to help improve your design chops.
Register For GitHub And TestFlight
Unless you're some kind of super-genius, you don't want to create your app in a bubble. Instead, it's good to get other people to look at your code and invite beta testers to try your app out.
GitHub is the go-to for software versioning and collaborative work. Once you register for GitHub, it's incredibly easy to link Xcode into it so everything you do is saved and accessible by other people on your team. If you need a little help setting up GitHub, the service guides walk you through the process.
Developing for iOS is really all about familiarising yourself with Xcode. Once you're comfortable there, you can write your app in a wide variety of languages or take a stab at learning Swift. As you move along to actually writing that app, you'll certainly need to dig up answers to more specific questions, but the tools above will get you started on the right path.
Have a question you want to put to Ask Lifehacker? Send it using our contact form.