Recently, we’ve made a brisk preview of iOS 7 key features that will affect mobile development. Now that iOS 7 is officially released, we can give you a deeper insight.
As it was already mentioned, the drastic changes in iOS design could result in some bugs and mismatching UI elements in many existing iOS 6 apps. Let me illustrate the point with some screenshots. Below you see how an app looks both in iOS 6 and iOS 7 if built without any adjustments for the latter OS:
iOS 6 iOS 7
As you can see, the app version for iOS 7 looks buggy and somewhat half-baked. Therefore, I underline this point again, most of the existing iOS 6 apps will require some adjustments. So, iOS developers, get ready for some extra work.
Having abandoned its noted skeuomorphic style, Apple, nevertheless, stays faithful to the real-world concept and presents us with a new dynamic interface. The UI elements in iOS 7 seem to move through a real, physical world rather than a flat pixel one. They react to gravity and applied forces, collide and bounce off hindrances.
This dynamic behavior of interface elements is not limited to entertainment applications like games, but is a new design concept for the entire OS. However, I believe that utilizing it in mobile apps should be done with caution. In my view, developers should make it serve usability not just create pointless bells and whistles that will start to annoy users sooner or later.
Text Kit, a text and typography framework, has been further enhanced. Beginning with iOS 7, it features new classes and extensions to existing classes that make working with text and types more convenient and require less code than before.
Starting with iPhone 5S with A7 processor onboard, iOS 7 will support both 32 and 64-bit applications, as well as system frameworks. Upon request, iOS will load the necessary — either 32 or 64-bit — framework. This means that if all the installed apps will be 64-bit, only 64-bit libraries will be executed. Yet, if a user launches a 32-bit app along with 64-bit running, both types of libraries will be required leaving less memory for the other apps. Even though using solely 64-bit apps is more memory-friendly, we’ll have to wait for at least 1-1,5 years until such apps could replace their 32-bit predecessors.
The new Xcode will build both 32 and 64-bit app versions at once, which evidently will result in larger size of the applications. Though it does not mean a straight two-fold increase in size, since resources such as images and sounds are the same for both apps. Only the size of executable files will be doubled and this size varies considerably from app to app.
Running 64-bit apps will apparently require more memory than the 32-bit ones; yet, for some tasks they will work faster.
For developers the shift from 32 to 64-bit architecture will be a certain challenge. Apple recommends to test each app on 64-bit device to make sure that the app works correctly.
Apple unveils a number of new frameworks for iOS 7:
Provides an interface for interaction with game controllers.
Provides support for sprite-based animation and rendering.
Ensures direct data exchange between devices.
Manages the presentation of text content in media files, e.g. subtitles. This framework works together with new standard settings for applications where users can manage related options.
- Safari Services
Ensures support for functions responsible for adding links to web-pages in Safari reading list.
Support for two new background execution modes is definitely a very useful change in iOS multitasking. Here’s the gist:
- Fetch mode (Regular automatic launches)
Apps receiving data from the Internet on a regular basis could be periodically launched by the system in the background. This way such apps can download and process all necessary data not just without disturbing users but even not appearing on the device screen at all.
- Remote-notification mode (Push notifications)
Background data updates could also be initiated by push notifications. The notifications could be in "hidden" mode, so they would not trouble the user.
Besides, the opportunity to suspend regular updates to the background state, could be programmed to start only under certain conditions. So, for example, an update starts only if the system is not in sleep mode and there is stable wireless Internet connection.
Moreover, Apple has exceeded possibilities for the NSURLRequest class by adding a new class — NSURLSession, which allows to create a list of tasks for receiving all necessary content and controlling its processing.
Great news for all game developers out there! Meet Apple's brand new native platform for creating 2D and 2.5D games. We will see if it beats cocos2D, one of the most popular frameworks for game development, in terms of functionality and convenience of use.
Apart from the graphics rendering and animation system, the framework features tools for simulating reactions of the game objects to the laws of physics. Moreover, the new Xcode contains special instruments for creating special effects and texture atlases.
Ever since Apple’s Maps were introduced in iOS 6, we’ve all heard lots of criticism and jokes about the system’s errors.
Image via reddit.com/r/funny
So you might be wondering, did Apple’s Maps get any better now that iOS 7 is here? Turns out, Apple continues enhancements and the new Maps version features a number of interesting improvements:
- Developers could control the viewing perspective on the programmatic level: now they could set camera parameters for the 3D mode by defining the optimal view angle.
- Custom overlays with information could be positioned on various levels in the map content for better user experience.
- The new MKDirections class allows to obtain direction-related route data from Apple and to display it on maps as a new overlay; note that the route visualization requires additional programming and couldn't be drawn by the framework automatically.
- A new special class will allow to create a line-based overlay that follows natural curves of the Earth's surface.
- Each of the map tiles could be replaced by a custom one.
Features of iOS's big brother Mac OS X are gradually migrating to the mobile OS. AirDrop technology simplifies data sharing between users of different devices nearby. Data is transferred directly, not via emails, cloud services and alike.
Apple recommends developers to read the manual on processing the received data before implementation, since this procedure has certain peculiarities.
AudioUnit.framework has been enhanced as well. Now applications are enabled to exchange MIDI commands and audio streams on a device. This novelty would be particularly useful for entertainment and audio editing/recording apps, and could probably find some other interesting application.
In addition to AirDrop, iOS 7 features MultipeerConnectivity.framework — one more data exchange framework for content sharing and communication between iOS devices via Wi-Fi, peer-to-peer or Bluetooth.
Some developers would be glad to hear that besides Apple’s standard SDK for discovering and managing nearby devices, it is still possible to implement custom solutions.
Enhancements to Existing Frameworks
A number of existing frameworks also contain significant improvements.
- New design for all standard control elements.
- Changed UIViewController: simplification of view controller transmissions.
- Individual settings for status bar style and visibility for each view controller.
- Graphic sources could be grouped into albums on the development stage and later be addressed when calling the imageNamed method. This makes working with images for different resolutions easier. The grouping criteria could be any.
- UIScreenEdgePanGestureRecognizer — a new gesture recogniser that monitors pan gestures appearing by the screen edges.
- Starting with iOS 6 any device could be manually switched to the special Guided Access mode. This mode restricts users from leaving an application or even using certain interface elements inside the app. Starting with iOS 7 it could be done on the programmatic level.
- Saving and restoring of apps between closing and launching/waking up.
The major improvement of the Store Kit framework features a new receipt system that can be used for in-app purchase verification. This new system simplifies the verification procedure considerably; it can be used either on the mobile device or on server.
As for the recent improvements of Pass Kit via its new API, it is now possible to group passes, display links with custom text on the back of a pass along with storing data that could not be displayed to users.
One more piece of great news to game developers: iOS 7 supports OpenGL ES 3.0 that will undoubtedly affect both efficiency and performance of multimedia applications, especially games. The support for OpenGL ES 2.0 also includes solid, useful improvements.
Support for attaching files to messages has been added to the standard Edit Message interface.
The iAd framework update opens new possibilities for incorporating ads into apps. Thus, commercials could be displayed before video playback or before the view controller sends any content to the screen.
Core Motion brings new opportunities for determining device motion speed and step counting. The framework makes it possible to analyse and distinguish various motion types including running, moving on foot, by bus, etc. These features can be used by nautical apps for route calculation or adjusting directions given to users on a route.
The Core Location framework enriches the function of region monitoring and ranging by using Bluetooth (iBeacons). Compared to other options, such positioning ensures higher accuracy. For example, it allows to mark and place iBeacon near each picture in an art gallery.
Besides, it is now possible to define conditions for getting notifications on changes of location updates. Thus, notifications could be put off until a certain time in future or until a user has moved a certain distance.
This framework has been improved considerably. The most useful improvement, in my point of view, is real-time barcode recognition.
As any other major update, iOS 7 brings not just new frameworks, features and APIs but deprecation macros as well. Even though deprecation is not an immediate abounding of a specified API, there is a strong recommendation not to use it in active development. The most vital depreciations have been already mentioned in a previous post: UDID and MAC address of a iOS device.
The bottom line
To summarize, I’d like to point out that iOS 7 isn’t just a new, simplified design. The new operating system offers many interesting features and opens up new possibilities for iOS developers. Not to mention, Apple is continually working on their iOS and we should see even more exciting things coming soon. Now that iOS 7 is officially released, I’m sure it will become very popular among users, so all the extra effort spent on iOS 7 support will be well worth it in the future.