Yet not all downloaded apps get the chance to be regularly used. In fact, Localytics research finds that 25 percent of users uninstall an app after just one use. With the average user retention of only 36 percent, your mobile product needs to provide a truly exceptional experience and performance to avoid getting lost among those thousands of apps flooding the market every day.
Being known for their focus on security and intuitive UX, Apple devices are widely used in business and enterprise. In order to reap all the benefits of your next project, here are 27 business-critical best practices to consider when building iOS application.
Proving the business case for application development
1. Identify your target audienceWhen building an application, it’s important to understand who will use your product. If you have a functioning business, you already know your target audience. If your core business is a retail company building an m-commerce solution, then you should keep in mind the people who will use your app to purchase your products. An app might appeal to a particular part of your customer base, but not all of them. If you have an EHR-type of product for physicians to access and analyze medical data, an app you might want to build should be facing patients first in order to collect the required data.
You can either utilize the existing user base to analyze the trends and single out the user groups most likely to benefit from using a mobile app, or use tools like Statista and Google Adwords/Trends to gain valuable data about your industry and audience. You may also take a look at the competitors, the users they are targeting, and understand how their products are performing using tools like App Annie and App Data. A number of survey services, similar to SurveyMonkey or Survata, come in handy when you need to hear the voice of your potential audience. ProductHunt and LaunchSky can help you pitch your idea to potential users and see who your early adopters might be.
2. Research your user profileAfter you identify who might be using your app, it’s time to get to know them better. Having a good understanding of your target users’ demographics and geography will help you build a relevant, appealing, and, most importantly, useful application. The geography and demographics of your target audience define the platform you need to build your app for.
While the global mobile market is dominated by two main platforms, Apple’s iOS and Android by Google, the adoption of each one of them varies greatly from country to country.
Image source: deviceatlas.com
Image source: deviceatlas.comTherefore, if you decide to target the US audience with your app, the iOS platform would be your best choice. However, if your product will be aimed at the middle-class workers in China, you should probably go with Android. Similarly, research finds that iOS devices are preferred by younger mobile users (aged 16-24 and 25-34) in the UK.
Data source: statista.com
3. Weigh the costs and benefitsApp development can be a costly enterprise. If you are planning to make the future app your core business, you should evaluate the possible benefits carefully to make sure it will be worth the effort. The Red Hat survey finds that 74 percent of organizations using KPIs to measure mobile success report a positive return on investment from implementing mobile solutions. Moreover, according to VMware 2015 State of Business Mobility Report, an average ROI of adopting business mobility equals 150 percent. Along with the significant returns, the companies tend to see increased benefits in “the ability to more rapidly bring new revenue streams online, cost of lost business opportunity and user access to mission-critical apps.”
4. Choose the engineering teamThe role of the mobile solution in your business usually defines the approach to engaging tech talent. For a product that will require long-term involvement, continuous maintenance and regular upgrades, you should consider hiring an in-house engineering team or engaging a remote dedicated development center. The latter will ensure the fastest time to market and smart resource allocation, while keeping your on-site team focused on your core business. For a less important project, such as an internal business tool to automate one or several day-to-day business processes, it is possible to completely delegate the mobile development effort to an off-site engineering team. At the same time, this will allow you to significantly reduce the cost of development.
5. Decide on the development approachEven if you already decided to target iOS as you primary platform, there is always a dilemma of native vs cross-platform mobile development. While platforms like Xamarin allow to speed up development through extensive code sharing, they often prove inefficient when building customer-facing applications with heavy custom or platform-specific UI. Being able to share only logic, you still need to build UI from scratch. So even if you build only an iOS application, it typically makes no sense to compromise performance and UX, as you won’t benefit significantly from cross-platform development.
Setup and Tech fundamentals
6. Follow Human Interface GuidelinesWhile UX and UI come before code, they do not end with the finalized app mockups. UI implementation and app performance are as important for the overall mobile experience as pixel-perfect designs. Being known for its strict requirements and policies, iOS has its own formal conventions for UI and UX. Therefore, prior to writing a single line of code, make sure every member of your team understands and follows the basic guidelines provided by Apple.
7. Objective-C vs SwiftPowerful yet simple, Swift programming language has caused controversy even among its most die-hard fans. First introduced by Apple in 2014, the language has recently received a major update, Swift 3. Offering a number of neat features, its adoption is increasing among engineers. Yet most of the iOS developer community agree that for a complex project, you should probably go with the tried and true Objective-C or at least mix it with Swift, taking the best out of each language. Actually, the research shows that only 11 percent of App Store’s Top 100 applications use at least some Swift, while the rest still relies primarily on Objective-C.
8. Use XcodeA must have for an iOS developer, Xcode is an IDE provided by Apple. While there are several alternatives, such as AppCode by JetBrains, no other environment provides the native level of integration and tooling to build iOS applications.
9. Agree on iOS version supportAs new versions of iOS are released every year, the older platforms become obsolete fast. Therefore, with the combined adoption rate of over 94 percent, the two latest versions, namely iOS 9 and iOS 10, are currently dominating the market. Backwards compatibility with the earlier versions is nice to have, but it makes more sense to focus on the current versions and make your app future-ready, not to be left behind when the new iOS is released.
10. Support the main devicesBeing less diverse than Android device selection, the iOS ecosystem is still quite rich. The choice of your target devices should depend on the purpose and specifics of the application. While consumer-facing apps are usually built for iPhones only, enterprise and business apps often target iPads. However, it is becoming a standard practice to build universal apps, which adjust to the size of the device screen.
Source: david-smith.orgMoreover, you can adapt your app to run on the Apple Watch or even Apple TV, if there is a good reason for that. For example, an Apple Watch application could be a valuable addition to the health monitoring tool. And a multimedia app would definitely benefit from allowing the users to access it from Apple TV.
11. Establish a coding styleIf there is a large dedicated development team working on your application, make sure the coding style is consistent throughout the process. Establishing solid coding standards, or adopting the existing ones, such as GitHub Objective-C or Swift guides, Google Objective-C guide, helps create an application which is easy to maintain and update. Following a common programming approach, every member of the team or an outside developer can easily read the code and make the required edits
12. Adopt optimal architecture designProper architecture is a foundation for building an extendable and well-structured application. While there are several architecture design approaches, the one most commonly used in iOS development is the Model-View-Controller (MVC) pattern. Moreover, it is the one recommended by Apple. Simply put, the pattern breaks the code down into objects (see more at №13. Object-Oriented programming), assigning one of three main functions (view, model, controller) to each one of them. Thus, each app screen represents a view, a data model controls the content it contains, and the controller manages the interactions between the view and the model.
But most engineers agree that it is no silver bullet. For better results they combine the MVC pattern with other options, such as Model-View-ViewModel (MVVM).
Software engineering process and tools
13. Apply the best naming and project structureOne of the most important but often overlooked aspects of writing clear, high quality code is the naming principles. When giving names to classes, methods, functions, constants, and other code elements one should follow the Apple's basic conventions, keeping the names clear and brief, avoiding abbreviations and ambiguity. In addition to that, the naming principles should be consistent across the whole project, not to mention using proper grammar and spelling. Another aspect of building a clear and maintainable code is keeping its source files in order. Thus, it might be a good idea to set some common folder structure, keeping it consistent across the project. Depending on the basic architecture approach, the structure can include the following folders: Models, Views, Controllers, Stores, Helpers.
14. Make use of libraries and frameworksOne of the benefits of iOS popularity is the significant number of libraries and frameworks. They can be used to solve a number of issues, from implementing custom UI animations to working with device hardware. Consequently, these third-party tools can significantly reduce the amount of effort and cost of building the same features from scratch.
15. Engage open source toolingAlthough considered “closed,” due to its numerous restrictions, the iOS platform still has plenty of open source projects to make use of. With the release of Swift as an open source project, Apple has made a huge step away from its limitations, allowing independent developers to contribute to the language as well as create more useful and accessible tools. In fact, using accessible and free third-party tools is a good practice. Numerous resources list dozens of such libraries and whole apps with open code, so why reinvent the wheel.
16. Conduct peer reviewsEven with consistent coding style and common practices in place, there is no one way to build software. Every engineer relies on experience and knowledge when writing every single line of code. Thus, fostering code review and refactoring practices within your team has positive impact on the quality of code and the quality of software in general. For better results, IBM developerWorks resource offers some standard practices that can help you achieve the best results.
17. Adopt event-driven object-oriented programmingWhile iOS apps tend to have a strong focus on UI, event-driven programming is one of the key paradigms to follow. It presupposes that specific events, triggered by user actions or sensor outputs, determine the flow of the app. Thus, identifying and understanding the logic behind the interactions that will drive your app is the foundation for the code that will execute your app’s logic. Event-driven programming and the apps that were built using this approach have a number of benefits for a business, such as automated workflows, eased interactivity and flexibility.
Object-Oriented Programming (OOP) is another best practice in iOS app development. It represents a software development paradigm that uses objects as key structure units for building software. In other words, focusing on separate objects, you decompose complex software into smaller pieces, making it easier to develop and manage. Good understanding of the OOP principles and its key aspects allows you to maximize the code reuse in your application while minimizing the maintenance cost and effort.
18. Take time for preliminary researchDealing with complex projects, especially in health care or fintech, developers often have to tackle some project-specific problems with out-of-the-box solutions. Granting enough time for research might result in significant savings in the long run. For example, our data science team has spent about 3 months building and polishing a machine learning algorithm for a sound recognition application. While the algorithm was the core of the whole application itself, such preliminary scientific research was crucial for the product success. Therefore, sometimes it is better to spend a week working on the proof of concept then to find out the product cannot be implemented as planned several months after the start of the project.
19. Mind code signingIn order to be able to launch an app, you need to have the certificates issued by Apple: iOS Development and iOS Distribution. While the first one is personal and is used to run an app on an actual device in the development, the second one is issued for a team and makes further distribution and App Store submission possible. So if you decide to build an iOS application you should consider getting the required certificate in advance.
20. Employ continuous integration and deliveryContinuous Integration (CI) is a standard practice in software engineering in general, not only iOS app development. Being an integral part of agile product development, CI can be implemented using a number of tools, including Jenkins CI, Greenhouse CI, CircleCI, or in-built Xcode Server CI tool. Being quite varied, the listed tools use different approaches to the process of CI and provide a number of custom features. Yet, all of them have a common purpose: They help you make builds, automate your tests, manage defect logs, build environment, and deploy your app fast and with minimum effort.
21. Choose the distribution modelAs soon as your app is ready to be shipped, it’s important to decide upon the optimal distribution method for it. Apple currently offers 3 distribution models. The most widely used option is to upload the application directly to the App Store. This way it will become available for every iOS user. Additionally, you can set some parameters, such as target country, supported device, or iOS versions. If you want to beta-test your app before launching it globally, you can use the TestFlight service provided by Apple. It allows you to invite up to 100 users to test the application privately. For enterprise level apps or internal business tools, you can use the iOS Developer Enterprise Program or Volume Purchasing Program. Although a costly alternative to the previous two methods, this approach offers complete privacy, making your application available only for your employees and contractors.
22. Focus on securityParticularly crucial for health care, fintech, or internal enterprise applications when dealing with important business data, security practices are a must-have for any serious application. Although Apple claims to have “designed the iOS platform with security at its core,” it is practically impossible to establish 100% protection from data theft or corruption, unless you don’t store any data at all. What you can do is follow the official Secure Coding Guide by Apple or employ some of the best practices, including custom encryption, the use of keychain and data protection with HTTPS and SSL certificates.
23. Don’t forget about reporting, analytics, engagementHowever, the work does not end once your app is deployed and installed by the end user. Having implemented the reporting and analytics tools on top of you core app logic, you can see how your customers interact with the product. This provides valuable insights to help you further improve your application. Among the most popular analytics tools are Mixpanel, Yahoo’s Flurry, Firebase - Google Mobile Analytics, iTunes Connect App Analytics, and Localytics.
24. MonetizeWhile over 75 percent of app revenues were generated through paid downloads back in 2013, the share is projected to decrease to 37.8 percent by 2017. This is mostly due to the growing adoption of in-app purchases. And so building a free product with in-app purchases is a good practice to ensure high revenues. The best advice in this case would be to keep the in-app purchase options simple and offer enough value even within the basic version of your app. Yet not all types of apps can benefit from such a monetization model. For example, if your app complements your core product, you might want to provide it as a free addition for your paying customers or premium subscribers.
25. Make your app world readyUnless you are planning to target a specific country with your app, you might consider laying the groundwork for easy further app localization. This includes the so-called app internationalization, the process of making it able to adapt to different languages, regions, and cultures, which usually takes place while your app is still in production. Preparing an app for localization requires first separating language and locale differences from the rest of your user interface and code. It is possible to export the user-facing text using Xcode, so it can be translated into any language and then imported as a separate file, without having to interfere with the rest of the app. Special attention should be paid to right-to-left languages as they require not only text translation but mirroring the whole UI and changing the text direction as well. The process is typically incremental and all changes should be thoroughly tested using pseudolocalizations.
26. Benefit from third-party integrationsAs we have already mentioned, there are some valuable third-party tools you might want to integrate with your app. These are analytics tools, payment processors, data sources or hardware APIs that can help you improve your product or provide additional value for your users. However, it is important to choose only trusted and reliable tools that will not ruin the project you have been building for months. While a brand new tool by a promising startup might seem like a good option and come at a good price, in the long run it can turn out to be a waste of time when the startup goes broke or is acquired by a company that will shut it down.
27. Plan for upgradesIn software development, the product is never actually finished. While you might have implemented 99% of the planned features, the chances are, sooner or later, you will have to add more features, or, on the contrary, remove some of the existing ones. Earlier this month, Apple made an announcement about its intentions to “ensure that apps available on the App Store are functional and up-to-date.” The apps which are no longer updated on a regular basis will be removed from the market. While research shows that about 25 percent of the apps haven’t been updated for over a year, this is a great way to keep the market competitive and relevant to the users. However, this will lay additional obligations on the app developers.
Remember: Apple is generally right.Despite having a number of restrictions and policies we mentioned earlier in the article, Apple is known for its solid approach to providing developer resources and tools. If you are thinking of investing in iOS app development, a great place to start your venture would be the Apple developer resources website. No matter how skilled your development team is, understanding the basics of the platform and development best practices proves to be invaluable for a product owner.
Even if you decide to go for cross-platform mobile development with Xamarin, you will need to dip your toes in the water of iOS development first in order to build an app that is relevant to the platform and successful.