It simplifies things a bit that the topic of this book is outsourcing native apps for Apple devices. That narrows the focus and makes the topic much straightforward. If we were to take on the topic of device app development outsourcing generally, with so many devices and features and requirements – things could get very complicated very quickly. One of the most confusing aspects of device apps is learning about all the devices.
The common denominator of iPhones, iPads, and iPod Touches is that they run the same operating system, known as the iOS. (The operating system is the software that allows you use and manage the device – like Windows 7 or Window 8 for a PC. Apps and programs also have to interact with operating system.) The iOS version is often included when referencing the iOS, for example iOS 6.1. The iPhone started with iOS 1.0, and every new iOS version released came with new features and increased functionality and processing power.
Compatibility between operating systems is sometimes a concern. If your developer creates an app for iOS 6.1 will it work on an older phone running iOS 4.0? It is hard to provide any specific advice here, since iOS revisions and compatibility is a very dynamic thing. What is true today regarding a specific iOS could be different tomorrow or next week. However, a general rule of thumb is that apps should be backward compatible with recent iOS versions still in use. For example, if iOS 7.0 is just released, but at least half of iPhone users will be using iOS 5 and iOS 6 for the foreseeable future then obviously you want you app to work on all of these OS versions.
Determining exactly what compatibility issues face your iPhone or iPad app in your timeframe will take some research and some discussion with the developer. You might want to add compatibility to the “Concerns” list in the concept design to make sure it is addressed with the developer.
Apps for Apple devices are programmed with the Objective C language. The C programming language, and it’s iterations like C++, Visual C, and Objective C, is one of the most powerful programming languages. Plus, many programming experts claim it creates the cleanest machine code – the ones and zeros that provide instructions to the processor. Clean machine code makes programs run faster and smoother, with fewer lockups or runtime errors.
All three Apple devices that can download and run apps can also connect to the Internet via wifi. This is not true of the standard iPod, which can do neither; it only plays music and videos. Of course, iPhones also have the capability to connect to the web through cellular data networks with a data plan, but this is an optional feature on iPads.
Since we are interested in Apple smart devices, we don’t need to go into great detail about other smart devices, but it is good to have a general impression of the marketplace and the major players.
The following table lists most of the well-known smartphones, tablets, etc., but it is by no means comprehensive. The table also lists the device operating system (OS) and the programming language(s) generally used for native app development. You may notice that a lot of devices use the Android operating system. Android is a Linux-based operating system developed specifically for devices. It is open source, meaning the operating system code is available and it can be freely modified by smart device producers. It also has permissive licensing which has made it very popular with device producers. With these attributes, along with smooth and functional operation, Android has become an industry standard.
Also note that the table lists devices generally, and doesn’t include every variation or iteration. For example, it seems there are countless versions of the Samsung Galaxy.
|Common Handheld Devices|
|Device Name||OS||App Languages|
|Apple iPhone||iOS||Objective C|
|Apple iPad||iOS||Objective C|
|Apple iPod Touch (iTouch)||Blackberry OS||Java|
|Amazon Kindle Fire||Android||Java|
|Asus Transformer Infinity||Android||Java|
|Barnes & Noble Nook||Android||Java|
|Google Nexus 4||Android||Java|
|Google Nexus 7 & Nexus 10||Android||Java|
|Nokia Lumia||Windows Phone||Visual Studio & Silverlight|
|Samsung Galaxy Note||Android||Java|
|Microsoft Surface||Windows RT or Windows 8||Depends on OS|
You are now familiar with some of the basics about smart devices and the apps designed for them. You know that the phrase “Android devices” does not likely refer to futuristic robots, and when someone suggests Java you will understand that they are probably not talking about going out for coffee. With a little background knowledge you can move forward in you app development project with more confidence.
Now onto creating the app concept design!