환경
- React Native v0.67.3
- React Navigation v6
iOS 세팅
1. AppDelegate.m 에 소스 추가
#import <React/RCTLinkingManager.h>
- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)urloptions:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{return [RCTLinkingManager application:application openURL:url options:options];}
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity
restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
return [RCTLinkingManager application:application
continueUserActivity:userActivity
restorationHandler:restorationHandler];
}
...
@end
2. Scheme를 추가한다.
방법 1. 터미널에 입력하는 방법
npx uri-scheme add 스키마명 --ios
ex) npx uri-scheme add helloapp --ios
방법 2. Xcode 에 입력하는 방법
Target - Info - URL Types에 Identifier와 scheme 를 입력한다.
Android 세팅
3. scheme를 등록한다.
방법 1. 터미널에 입력하는 방법
npx uri-scheme add 스키마명 --android
ex) npx uri-scheme add helloapp --android
방법 2. 안드로이드스튜디오에 입력하는 방법
4. 테스트 해본다.
iOS
1) npx react-native run-ios 로 앱 실행 후, 앱을 내려놓거나 종료 해둔다.
2) npx uri-scheme open 딥링크 --ios
ex. npx uri-scheme open helloapp:// --ios
Android
1) npx react-native run-android로 앱 실행 후, 앱을 내려놓거나 종료 해둔다.
2) npx uri-scheme open 딥링크 --android
ex. npx uri-scheme open helloapp:// --android
참고링크
https://reactnavigation.org/docs/deep-linking
https://reactnavigation.org/docs/deep-linking/
reactnavigation.org