Problems in software development often arise when unforeseen complications or requirements present themselves. iOS apps are unique in that they are part of a larger, tightly controlled ecosystem. For example: iOS apps have to be distributed in a set of predefined ways, not all devices can take advantage of the same features and new tools are being pushed by Apple all the time. Therefore, it is important that you ask the right questions at the beginning of the project to limit the number of issues later on. Planning for these platform specific questions early can allow your developers to take advantage of the latest technologies, prevent your developers from having to rewrite large portions of the app later on and in return save time.
These are a few of the key technical questions we ask at the beginning of an iOS project:
- How should we distribute the app?
- What iOS versions do we need to support?
- What language should we use?
The answers to these questions affect the entire development process. They impact the project plan, determine what technologies the team can use, and, as a result, dictate the entire architecture of the app.
The chosen distribution method affects the development process and timeline. If you are unsure of how you will distribute your app, it is best practice to account for the most time consuming method until you reach a decision. Include the distribution method and number of releases in all estimates of work. A release to the App Store can add 7+ days to the development plan.
- App Store Distribution
- Best suited for potentially large scale consumer-facing apps
- Time consuming, 7+ day average review period
- Requires product owners participation in iTunes Connect setup (marketing materials, legal info, etc.)
- B2B Internal App Store Distribution
- Best suited for internal tools
- Same process as App Store Distribution
- App only available in internal app store of specified by client / company
- Wireless Ad Hoc Distribution
- Best suited for beta tests and small distributions
- Bypasses the App Store
- No review process by Apple
- Used for small distributions
It is important to decide which iOS version you are targeting before a project begins. This decision will impact what features the designers and developers can take advantage of in the app. Targeting the latest version of iOS is often preferable. It is customary to target the latest stable release. This ensures that the app is not plagued by OS related bugs.
Support only the latest version of iOS (currently iOS 9) when:
- The project is new
- The main functionality requires APIs only available in latest OS release
- The analytics from previously existing products or market research show customers use the latest version of iOS (Example: Google Analytics provide device information)
Support earlier versions of iOS when:
- Your target market uses older iOS devices (health app that targets elderly users, educational software targeted at schools, etc.)
- The product launch is just after major OS release
- You want analytics from previously existing products to show existing user base uses older iOS devices
Tools / Language
Swift is a new open source programming language introduced by Apple in 2014. Apple puts a continued emphasis on Swift being the future of iOS development and aggressively improves the Swift language. We should assume Objective-C and older tools to slowly be phased out. Thus, moving forward with iOS development, it is important to write Swift whenever you can. Yet, existing Objective-C projects should not be re-written in Swift. In most cases you stand to gain very little technically by rewriting Objective-C apps in Swift. Instead add new Swift components to an Objective-C project is a more viable option.
These are just a few of the questions we ask at Cantina when starting a new iOS project. Use these questions as a starting point for your project. If this is your company's first iOS project, expect to be asking additional questions. Identify which mobile specific questions are right for your project. Save time, save money, and make your iOS developers life's a little better by answering these questions early.