An operating system (OS) is a collection of programs that control the application software that users run and provide a link between the hardware and software currently running on the computer. The OS is also responsible for management and control of all resources such as memory, hard drive and monitor that are shared among the different application programs that may be running simultaneously.
A mobile OS is an OS for devices such as smartphones, tablets, PDAs and other mobile devices.
iOS (originally iPhone OS) is a mobile OS developed by Apple Inc. and distributed exclusively for Apple hardware. It was unveiled with the iPhone at Macworld Conference & Expo on January 9, 2007, and released in June of that year.
The iOS software development kit (SDK) contains the tools and interfaces needed to develop, install, run and test native apps that appear on an iOS device’s Home screen. Native apps are built using iOS system frameworks and Objective-C language and run directly on iOS. Unlike Web apps, native apps are installed physically on a device and are therefore always available to the user, even when the device is in Airplane mode. These reside next to other system apps, and both the app and any user data is synced to the user’s computer through iTunes.
At the highest level, iOS acts as an intermediary between the underlying hardware and the apps you create. Apps do not talk to the underlying hardware directly. Instead, these communicate with the hardware through a set of well-defined system interfaces. These interfaces make it easy to write apps that work consistently on devices having different hardware capabilities.
The implementation of iOS technologies can be viewed as a set of layers, which are shown in Fig. 3. Lower layers contain fundamental services and technologies. Higher-level layers build upon the lower layers and provide more sophisticated services and technologies.
Cocoa Touch layer. This layer contains key frameworks for building iOS apps. These frameworks define the appearance of an app. These also provide the basic app infrastructure and support for key technologies such as multitasking, touch based input, push notifications and many high-level system services.
High-level features available in Cocoa Touch layer are App extensions, Handoff, AirDrop, TextKit, UIKit Dynamics, Multitasking, Auto Layout, User Interface (UI) State Preservation, Apple Push Notification Service, Local Notifications and Gesture Recognisers, among others.
Described next are the frameworks of Cocoa Touch layer and the services these offer:
Address Book UI framework. Address Book UI framework (AddressBookUI.framework) is an Objective-C programming interface that you use to display standard system interfaces for creating new contacts and for editing and selecting existing contacts. This framework simplifies the work needed to display contact information in the app and also makes sure that the app uses the same interfaces as other apps, thus ensuring consistency across the platform.
EventKit UI framework. EventKit UI framework (EventKitUI.framework) provides view controllers for presenting standard system interfaces for viewing and editing calendar-related events.
GameKit framework. GameKit framework (GameKit.framework) implements support for Game Centre, which lets users share their game-related information online.
iAd framework. iAd framework (iAd.framework) lets you deliver banner based advertisements from your app. Advertisements are incorporated into standard views that you integrate into your UI and present when required.
MapKit framework. MapKit framework (MapKit.framework) provides a scrollable map that you can incorporate into your app’s UI. Beyond just displaying a map, you can use the framework interfaces to customise the map’s content and appearance.
In addition to displaying maps, MapKit framework integrates with Maps app and Apple’s map servers to facilitate directions.
Message UI framework. Message UI framework (MessageUI.framework) provides support for composing emails or SMS messages from your app. The composition support consists of a view-controller interface that you present in your app.
Notification Centre framework. Notification Centre framework (NotificationCenter.framework) provides support for creating widgets that display information in Notification Centre.
PushKit framework. PushKit framework (PushKit.framework) provides registration support for voice-over Internet protocol (VoIP) apps. This framework replaces the previous application program interfaces (APIs) for registering VoIP apps. Instead of keeping a persistent connection open, and thus draining the device’s battery, an app can use this framework to receive push notifications when there is an incoming call.
Twitter framework. Twitter framework (Twitter.framework) has been replaced by Social framework, which supports a UI for generating tweets and support for creating URLs to access Twitter service.