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 called- Item 0.
- Inside - Item 0, add:- URL identifier> Set it to your custom scheme.
- URL Schemes>This creates an array.
- Item 0inside- URL 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 ( - shouldHandleOpenUrland- handleOpenUrl) 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 ( - shouldHandleOpenUrland- handleOpenUrl) will direct users straight to the app.
For further details, refer to the Apple documentation here.
Last updated
Was this helpful?
