TL;DR

New App Extensions

1. Broadcast UI & 2. Broadcast Upload

ReplayKit was introduced in iOS 9 as a way to let users record themselves using an app or game, then share it with friends. iOS 10 takes the whole process a step further by introducing live broadcasting of ReplayKit streams, and does so by building on existing live streaming services: users install apps that support live streaming, and ReplayKit lets you hook into them.

So, let's say you want to stream someone's game to a service like Twitch: you start by creating a RPBroadcastActivityViewController to let the user choose which streaming service they want to use. That will return back a RPBroadcastController that can start, pause, and stop live broadcasts, and also tell you whether broadcasting is currently happening through its isBroadcasting.

3. Call Directory

The CallKit framework (CallKit.framework) lets VoIP apps integrate with the iPhone UI and give users a great experience. Use this framework to let users view and answer incoming VoIP calls on the lock screen and manage contacts from VoIP calls in the Phone app’s Favorites and Recents views.

CallKit also introduces app extensions that enable call blocking and caller identification. You can create an app extension that can associate a phone number with a name or tell the system when a number should be blocked.

4. Intents

SiriKit support is divided into domains, each of which defines one or more tasks that can be performed. In order to support SiriKit, apps must support one of the following domains:

  • VoIP calling
  • Messaging
  • Payments
  • Photo
  • Workouts
  • Ride booking
  • CarPlay (automotive vendors only)
  • Restaurant reservations (requires additional support from Apple)

Each domain defines one or more tasks that an app can perform. These tasks are known as intents because they represent the intentions of the user. When the user makes a request through Siri or Maps, the system fills an intent object with the details of the request and delivers that object to your app extension. You use the intent object to validate the request data and perform the associated task.

5. Intents UI

When you handle an intent, Siri and Maps often display the details from the response object your Intents extension provided in a standard interface. If you want to add your own custom content to the standard interface, you must provide an Intents UI extension.

6. Messages

iMessage apps work same as extensions. If you already have an app and you want to provide iMessage functionality, you won’t have to create an entire new app. You can just plug in the iMessage functionality and submit it to the App Store. There’s also going to be a mini version of the App Store, especially for iMessage apps, integrated right inside the Messages app. The user will be able to browse all apps compatible with iMessage and install them – right there.

7. Notification Content & 8. Notification Service

Notifications have gotten more than a visual refresh in iOS 10. As part of the new UserNotifications framework, Apple has given us the ability to make notifications that contain images, sound, video, or even custom content generated on the device. Much of this capability comes via three new features showcased at WWDC: media attachments, notification service extensions, and notification content extensions.

9. Sticker Pack

Apple hopes that lots of creative people submit awesome sticker packs to the iMessage store. And they’re making it really easy to make sticker packs. Apple things a normal person will be able to submit a sticker pack using Xcode – without writing a single line of code. Create a new project, select stickers template, add yours stickers, add icons and that’s pretty much it. Open the simulator and start playing around.

Speech Recognition

iOS 10 introduces a new API that supports continuous speech recognition and helps you build apps that can recognize speech and transcribe it into text. Using the APIs in the Speech framework (Speech.framework), you can perform speech transcription of both real-time and recorded audio. For example, you can get a speech recognizer and start simple speech recognition using code like this:

let recognizer = SFSpeechRecognizer()
let request = SFSpeechURLRecognitionRequest(url: audioFileURL)
recognizer?.recognitionTask(with: request, resultHandler: { (result, error) in
     print (result?.bestTranscription.formattedString)
})
Proactive Suggestions

iOS 10 introduces new ways to increase engagement with your app by helping the system suggest your app to users at appropriate times. In iOS 10 and later, you can provide information about what users do in your app, which helps the system promote your app in additional places, such as the keyboard with QuickType suggestions, Maps and CarPlay, the app switcher, Siri interactions, and (for media playing apps) the lock screen.

In iOS 10, the NSUserActivity object includes the mapItem property, which lets you provide location information that can be used in other contexts. For example, if your app displays hotel reviews, you can use the mapItem property to hold the location of the hotel the user is viewing so that when the user switches to a travel planning app, that hotel’s location is automatically available.

App Search Enhancements

The new CSSearchQuery class supports in-app searches of content that you index using existing Core Spotlight APIs. Using this API can eliminate the need to maintain your own separate search index and lets you take advantage of Spotlight’s powerful search technology and matching rules to allow users to search for content without leaving your app, just as they do within Mail, Messages, and Notes.

In iOS 9, using search APIs (such as Core Spotlight, NSUserActivity, and web markup) to index content within your app let users search for that content using the Spotlight and Safari search interfaces. In iOS 10, you can use new Core Spotlight symbols to let users continue a search they began in Spotlight when they open your app. To enable this feature, add the CoreSpotlightContinuation key to your Info.plist file, give it the value YES, and update your code to handle an activity continuation of type CSQueryContinuationActionType. The user info dictionary in the NSUserActivity object that you receive in your application:continueUserActivity:restorationHandler: method includes the CSSearchQueryString key, whose value is a string that represents the user’s query.

Widget Enhancements

iOS 10 introduces a new design for the lock screen, which now displays widgets. To ensure that your widget looks good on any background, you can specify widgetPrimaryVibrancyEffect or widgetSecondaryVibrancyEffect, as appropriate (use these properties instead of the deprecated notificationCenterVibrancyEffect property). In addition, widgets now include the concept of display mode (represented by NCWidgetDisplayMode), which lets you describe how much content is available and allows users to choose a compact or expanded view.

Apple Pay Enhancements

In iOS 10, users can make easy and secure payments using Apple Pay from websites and through interaction with Siri and Maps. For developers, iOS 10 introduces new APIs you can use in code that runs in both iOS and watchOS, the ability to support dynamic payment networks, and a new sandbox testing environment.

iOS 10 introduces new APIs that help you incorporate Apple Pay directly into your website. When you support Apple Pay in your website, users browsing with Safari in iOS or macOS can make payments using their cards in Apple Pay on their iPhone or Apple Watch.

Video Subscriber Account

iOS 10 introduces the Video Subscriber Account framework (VideoSubscriberAccount.framework) to help apps that support authenticated streaming or authenticated video on demand (also known as TV Everywhere) authenticate with their cable or satellite TV provider. Using the APIs in this framework can help you support a single sign-in experience in which users sign in once to unlock access in all of the streaming video apps that their subscription supports.

Animations

iOS 10 revamps animation in a pretty amazing way: you now have much more fine-grained control over your animations, including the ability to pause, resume, stop, and scrub through animations for any animatable properties – positions, alpha, transform, and more.

The main class to use is called UIViewPropertyAnimator, which lets you create reusable animations and trigger them whenever you want. This animator acts directly on views you specify, and exposes things like startAnimation(), pauseAnimation(), fractionComplete, and more.

Other lots of minor changes
  • The UIRefreshControl has broken free of table views, and is now available right inside UIScrollView – a huge improvement for this under-used little control.
  • Collection views and table views now have a prefetchDataSource to let you preload content to make scrolling smoother.
  • Collection view cell can now berearranged, iOS 10 provides interactiv movement of cell
  • Collectionview has paging option now.
  • To make content readable on large width iPad devices UIView provides two options UIView.layoutMarginGuide , UIView.readableContentGuide
  • The openURL() method of UIApplication is now firmly deprecated. You should use application( _ :open:options:) instead.
  • UIPasteboard has lots of new properties to handle the new cross-platform clipboard between iOS and macOS. So, you can now query hasColors, hasImages, and hasStrings, and you can set items using a localOnly option for when your copied data shouldn't be shared with Handoff.
  • In iOS 10, the UIColor class uses the extended sRGB color space and its initializers no longer clamp raw component values to between 0.0 and 1.0. If your app relies on UIKit to clamp component values (whether you’re creating a color or asking a color for its component values), you need to change your app’s behavior when you link against iOS 10.
  • When you use the AVCaptureDevice class for video or photo capture, you can choose to use the dual camera device to gain these features, or to specifically use only the wide-angle or telephoto camera for more manual control.

Previous Post Next Post