Wednesday, 1 March 2017

What Does iOS 10 Bring for App Developers?

Announced at WWDC 2016, iOS 10 introduced a plethora of changes for the developers, the most significant revamp since 2013. The SDK for iOS 10 brings in new APIs and services that lead to new application types and features. In order to work on iOS 10, one would need to do the programming using Swift 3 and also download Xcode 8 for building the iOS applications. Let's focus on the key developed related features that have been introduced in iOS 10.
Improved User notifications
iOS 10 marks the advent of the User Notification framework (UserNotifications.framework) and User Notifications UI framework and end to UILocalNotification. The User Notification framework helps in supporting and handling remote as well as local notifications. Developers can use the classes of the framework for modifying remote and local notifications as they are delivered to the device. The appearance of local and remote notifications can be customized with help of User Notifications UI framework. With help of these two frameworks, Apple has not changed the overall local notifications but has significantly improvised the functionalities.
The biggest change by the new notification system is that it brings in an intermediary between message arrival and device display- a notification service provider capable of end-to-end encryption with app receiving the encrypted message from Apple, decryption happening on the user device and displaying the notification in the notification center.
Enhanced iMessage
A plethora of APIs has been introduced in iOS 10 especially enhancements to Messages App. App extensions can interact with Message app and users can send media files, interactive messages, stickers. The Sticker pack brings in a set of stickers to the message content. iMessage app not only helps users search images but also provides a user interface within the app.
From the development perspective, the custom interface for the messages can be made with help of MSMessagesAppViewController. MSSession and MSMessage could help in the modification of the message, with former having built-in support for expiring messages. In order to provide a custom sticker browser to the message application, MSStickerBrowserViewController can be used.
As witnessed, the new and improved Messages extensions are better and more powerful.
Changes in Animations
In iOS 10, better control over animations is established. The capability to control animate properties like the resume, stop or positions are fine-grained in iOS 10. UIViewPropertyAnimator is the important class which helps in creating and triggering the animations.
Speech Recognition
A new API is brought in which supports continuous speed recognition. This helps developers in building new apps for recognizing speech and transcribing it to text. Most of the magic is done with help of APIs in Speech framework, especially with classes such as SFSpeechRecognizer, SFSpeechURLRecognitionREquest, SFTranscription etc.
Integration with Siri
Get integrated with Siri for most apps like messages, calling, payments, photos etc. iOS 10 now let users use their voice to perform actions and all these is achieved with help of Sirikit. The concerned domains need to be registered with response done.
For non-graphical intents, developers need to make use of Apple Maps whereas for graphical intents also known as Intents UI extensions, developers can extend the user interface for the interface design.
ReplayKit gets better
iOS 10 has bought new enhancements to the ReplayKit introduced in iOS 9 I.e introduction of live broadcasting of Replaykit streams, which means a user can broadcast media through other sites or applications and broadcast US extension which helps user sign into a service and set up a broadcast. Developers need to create RPBroadcastActivityViewController to allow users to select the streaming service that would love to use. The action would return RPBroadcastController that helps in starting, pausing live broadcasts.
There are smaller other improvements and some of them are
  1. Enable property for Safari content blockers in order to verify the content blockerhas been switched on by the user.
  2. The openURL() method of UIApplication is now considered as obsolete.application(_:open:options:) needs to use instead.
  3. New property set enabled for UIPasterboard for handling cross-platform clipboard between iOS and macOS.
  4. SKTileGroup class has been provided to SpriteKit in order to make square,hexagonal, or isometric tilemaps.
  5. For smoother scrolling, prefetchDataSource can help in preloading content.