Universal Links: Make the Connection
Learn how to connect your iOS app with your website using Universal Links, so users can tap a link and go directly to the corresponding content in your app! By Owen L Brown.
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Contents
Universal Links: Make the Connection
15 mins
Handling Universal Links
Now that the app and the web site are officially aware of each other, all the app needs is code to handle the link when it’s called.
Open AppDelegate.swift and add the following helper method:
func presentDetailViewController(_ computer: Computer) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard
let detailVC = storyboard
.instantiateViewController(withIdentifier: "DetailController")
as? ComputerDetailController,
let navigationVC = storyboard
.instantiateViewController(withIdentifier: "NavigationController")
as? UINavigationController
else { return }
detailVC.item = computer
navigationVC.modalPresentationStyle = .formSheet
navigationVC.pushViewController(detailVC, animated: true)
}
This method opens the ComputerDetailController and displays the Computer
parameter’s information. This provides you with a clean way of navigating to a specific single board computer. You’ll use this method next.
Right after the previous method, add the following delegate method:
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?
) -> Void) -> Bool {
// 1
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let url = userActivity.webpageURL,
let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else {
return false
}
// 2
if let computer = ItemHandler.sharedInstance.items
.filter({ $0.path == components.path}).first {
presentDetailViewController(computer)
return true
}
// 3
if let webpageUrl = URL(string: "http://rw-universal-links-final.herokuapp.com") {
application.open(webpageUrl)
return false
}
return false
}
iOS calls this method whenever the user taps a universal link related to the app. Here’s what each step does:
- First, you verify that the passed-in
userActivity
has expected characteristics. Ultimately, you want to get thepath
component for the activity. Otherwise, youreturn false
to indicate that the app can’t handle the activity. - Using the
path
, you look for a known computer that matches it. If you find one, you present the detail view controller for it andreturn true
. - If you can’t find a computer that matches the path, you instruct the
application
to open the URL, which will use the default system app instead — most likely Safari. You alsoreturn false
here to indicate that the app can’t handle this user activity.
Testing the Links
As discussed above, there isn’t a great way to test whether the universal links work in the tutorial app, but it’s important to understand the expected outcome for when you implement universal links in your own apps.
If you had implemented this in your own app, you would be able to email yourself a link (e.g., https://rw-universal-links-final.herokuapp.com/arduino.html), tap it, and verify that the app shows the correct page.
Remember that universal links can be triggered from other places as well, such as within a UIWebView
, WKWebView
, SFSafariViewController
, Notes or directly within Safari.
Where to Go From Here?
You can download the completed version of the project using the Download Materials button at the top or bottom of this tutorial. And you’ll find the finished web site here: https://rw-universal-links-final.herokuapp.com.
Congratulations! You’ve learned a lot about how to implement universal links in iOS. You’re now ready to apply this concept to your own app and create “real” universal links — you can do it!
Want to dig deeper into this topic? Check out the section on universal links (Chapter 3) in iOS 9 by Tutorials.
You can also find additional reference material directly from Apple’s documentation.
To test your implementation of universal links on your own web site, you can use this tool or Apple’s own link validator, both of which can point out possible problems in your setup.
If you have questions or comments, feel free to jump into the forum below and ask away!