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>

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
  return [RCTLinkingManager application:app openURL:url options:options];
}

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
  return [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
}
swift
// Swift
import React

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  return RCTLinkingManager.application(app, open: url, options: options)
}

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.com.

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="example.com" />
  </intent-filter>
</activity>