Deep Linking

Prev Next

Overview

Deep Linking in iOS applications allows seamless navigation to specific app pages triggered by external events, such as push notifications or hyperlinks. This functionality enhances user engagement by directly linking to relevant content.

Note:

Mapp Engage routes push-click URLs through the standard application:openURL:options: path. Two related flags affect that behavior:

  • open_landing_page_inside_app in AppoxeeConfig.plist — when true, landing-page URLs from the push payload open in an in-app web view; otherwise the system browser opens. See Basic Automated Setup.

  • The apx URL scheme below is reserved for Mapp Engage push-click handling. If you also need a custom scheme for marketing links, declare an additional entry in CFBundleURLSchemes.

Use Case

  1. Purpose:

    • Provide direct access to specific app content from external triggers.

    • Enhance the user journey by eliminating unnecessary navigation steps.

  2. Benefits:

    • Increase user retention through targeted and efficient navigation.

    • Drive campaign-specific actions by linking users directly to promotional content.

Implementation Details

  1. URL Scheme Definition: Define custom URL schemes for your application in the Info.plist file:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>apx</string>
            </array>
        </dict>
    </array>
  2. Handling Deep Links: Implement URL handling in the AppDelegate class.

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        if url.scheme == "apx" {
            let targetPage = url.host
            navigateToTargetPage(targetPage)
            return true
        }
        return false
    }
    
    func navigateToTargetPage(_ page: String?) {
        // Implement navigation logic based on the page identifier
    }
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
        if ([[url scheme] isEqualToString:@"apx"]) {
            NSString *targetPage = [url host];
            [self navigateToTargetPage:targetPage];
            return YES;
        }
        return NO;
    }
    
    - (void)navigateToTargetPage:(NSString *)page {
        // Implement navigation logic based on the page identifier
    }
  3. Push Notification Integration:

    • Include the deep link URI in the aps payload when sending push notifications.

    • Use delegate methods to handle push notification clicks and open the appropriate app page.

Keep in mind:

  • Test deep link handling for multiple scenarios, such as app launched, app in the background, and app not installed.

  • Ensure deep links work consistently across different iOS versions.

  • Document deep link formats and usage for marketing and development teams.