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 0insideURL 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
}- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation
{
//handle URL here to navigate to custom views
return YES;
}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)")
}// Extends NetmeraPushDelegate
// In didFinishLaunchingWithOptions
[Netmera setPushDelegate:self];- (BOOL)shouldHandleOpenURL:(NSURL *)url forPushObject:(NetmeraPushObject *)object {
// Deeplink is checked (valid or invalid)
return YES;
}
- (void)handleOpenURL:(NSURL *)url forPushObject:(NetmeraPushObject *)object {
// Control and redirect method
NSLog(@"handleOpenURL: %@ forPushObject %@", url, 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 (
shouldHandleOpenUrlandhandleOpenUrl) will direct users straight to the app.
For further details, refer to the Apple documentation here.
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
// Handle url
}
return YES;
}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 (
shouldHandleOpenUrlandhandleOpenUrl) will direct users straight to the app.
For further details, refer to the Apple documentation here.
Last updated
Was this helpful?