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>