Platform Setup

This setup ensures reliable delivery of iOS Universal Links, Android App Links, and custom deep link schemes.

iOS Integration

1. Modify AppDelegate

Handle custom schemes and Universal Links by adding the following to your AppDelegate file.

objectivec
// Objective-C

#import <React/RCTLinkingManager.h>

// Handle custom schemes like myapp://path
- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
  return [RCTLinkingManager application:app openURL:url options:options];
}

// Handle Universal Links like https://<your-subdomain>.nvgt.link/path
- (BOOL)application:(UIApplication *)application
 continueUserActivity:(NSUserActivity *)userActivity
   restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
  return [RCTLinkingManager application:application
                  continueUserActivity:userActivity
                    restorationHandler:restorationHandler];
}
swift
// Swift
import React

// Handle custom schemes like myapp://path
func application(_ app: UIApplication,
                 open url: URL,
                 options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  return RCTLinkingManager.application(app, open: url, options: options)
}

// Handle Universal Links like https://<your-subdomain>.nvgt.link/path
func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  return RCTLinkingManager.application(application,
                                       continue: userActivity,
                                       restorationHandler: restorationHandler)
}

2. Configure in Xcode

  • Custom URL Schemes: Go to Info -> URL Types -> Add your scheme (e.g., myapp).
  • Universal Links: Go to Signing & Capabilities -> Associated Domains -> Add applinks:your-domain.nvgt.link.

Android Integration

1. Add intent filters to AndroidManifest.xml

Add the following intent filters to your .MainActivity activity tag.

xml
<activity
  android:name=".MainActivity"
  android:launchMode="singleTask"
  ... >

  <!-- Handle custom schemes like myapp://path -->
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="myapp" android:host="example" />
  </intent-filter>

  <!-- Handle HTTPS app links -->
  <intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="https" android:host="<your-subdomain>.nvgt.link" />
  </intent-filter>
</activity>