NSUserActivity is a class to facilitate deeplinking into your app. The original (public) purpose was for handoff, it’s now been adapted for facilitating search and siri integration.
Setting up activities
You create one with an appropriate activity type, set the title, enable other properties as it makes sense, then finally call
Note that if you assign a user activity instance to a
userActivity property, then you don’t need to worry about calling the
resignCurrent methods - these are handled for you.
These are strings, usually in reverse-DNS style, that describe the domain and the particular type of activity - e.g.
com.rachelbrindle.second_brain.read_chapter describes opening/reading a chapter for
com.rachelbrindle.second_brain. The activity types your app supports MUST also be mentioned in the
Info.plist file, see NSUserActivityTypes.
isEligibleForHandoff property to
This allows spotlight to present more optimized results to the user, as well as allowing the user to search for an activity they were previously engaging in.
Note that your app must maintain a strong reference to any activity objects used for search results. Also, don’t use this to index all the app’s contents, that’s what the much more power core spotlight apis are for.
Continuing from a deeplink
(This only covers handoff, search and siri might be different)
The simplest way to continue from a deeplink is to implement
application(_:continue:restorationHandler:) on your app delegate. Optionally, if your app might take a while to set things up (e.g. need to retrieve data from the network), then implementing and having your app delegate respond to
application(_:willContinueUserActivityWithType:) will provide a nicer user experience.