Deep Linking
Deep Linking
To redirect users to a specific page or view in your app via push notifications with custom action buttons, you can use deep links. Follow these steps to set up deep linking in your app:
Set Up a URL Scheme In your Xcode project, define a custom URL scheme (
netmera://
).Configure Info.plist
Open your Info.plist file.
Add a new key:
URL types
. Xcode will create an array with a dictionary calledItem 0
.Inside
Item 0
, add:URL identifier
> Set it to your custom scheme.URL Schemes
>This creates an array.Item 0
insideURL Schemes
> Set it to your custom scheme.
Handle the Deep Link Add this method to your app delegate:
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool
{
//handle URL here to navigate to custom views
return true
}
Scheme and Host Properties
You can use the scheme and host of a URL to navigate to different screens in your app.
For example, if you have deep links like netmera://screenOne
and netmera://screenTwo
, the scheme is netmera
, and the host tells you which screen to show (screenOne
or screenTwo
).
Here’s how you can use it in code:
if url.scheme == "netmera" {
if url.host == "screenOne" {
// Present view controller for screenOne
} else if url.host == "screenTwo" {
// Present view controller for screenTwo
}
// Or you can use the host property directly
}
Deep Link Callback
Netmera SDK triggers openURL
when users tap a notification. To ensure deep linking works properly, implement Netmera Delegate:
// Extends NetmeraPushDelegate
// In didFinishLaunchingWithOptions, after calling Netmera.start()
Netmera.setPushDelegate(self)
func shouldHandleOpen(_ url: URL!, for object: NetmeraPushObject!) -> Bool {
// Deeplink is checked (valid or invalid)
return true
}
func handleOpen(_ url: URL!, for object: NetmeraPushObject!) {
// Control and redirect method
print("handleOpenUrl: \(url), for pushObject: \(object)")
}
Universal Links
Configure the Project
Add "Associated Domains" capability.
In the domain section, add entries like
applinks:www.mywebsite.com
.
Configure the Website
Create an apple-app-site-association
file:
{
"applinks": {
"apps": [],
"details": [{
"appID": "4321.com.netmera.naturalworld",
"paths": ["/products"]
}]
}
}
Handle Universal Links in the App
Implement the following method in your AppDelegate:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if (userActivity.activityType == NSUserActivityTypeBrowsingWeb) {
let url = userActivity.webpageURL
// Handle url
}
return true
}
User Experience
Using userActivity methods will prompt users with "Open in Safari or in the application?" when clicking a notification.
Handling Universal Links via Netmera Delegate methods (
shouldHandleOpenUrl
andhandleOpenUrl
) will direct users straight to the app.
For further details, refer to the Apple documentation here.
Last updated
Was this helpful?