ios
ios 만 다룹니다!
AppDelegate 설정
ios / [프로젝트 이름] / AppDelegate.m
⭐️맨상단⭐️ 에 아래 코드를 추가한다.
#import <React/RCTLinkingManager.h>
⭐️**@end 이전**⭐️ 에 아래 코드를 추가한다.
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [RCTLinkingManager application:application openURL:url options:options];
}
universal link를 사용하는 경우 아래 코드도 추가 합니다.
단, 유니버설 링크가 앱에서 작동하도록 하려면 서버에 연결된 도메인 도 설정해야 합니다.
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity
restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
return [RCTLinkingManager application:application
continueUserActivity:userActivity
restorationHandler:restorationHandler];
}
XCODE 설정
프로젝트 선택 > TARGETS 에 프로젝트 선택 > INFO 탭 선택 > 아래 URL Types 열기 > Identifier 와 URL Schemes 을 설정
pod install 하고 재빌드 해주면 된다.
npx pod-install
쉽게 하는 방법은 아래 명령어를 입력해도 위와 같이 동작 한다.
npx uri-scheme add [원하는 이름] --ios
react navigation app linking
https://reactnavigation.org/docs/typescript/
라이브러리를 활용하면 딥링크에 대한 처리들을 간편하게 할 수 있다.
기본 세팅은 문서를 참고!
아래와 같은 앱이 있다고 하면, NavigationContainer에 linking에 연결 하면 된다.
const App = () => {
const linking = {
prefixes: ['test://login'],
};
return (
<NavigationContainer linking={linking}>
<Stack.Navigator
screenOptions={{
headerShown: false
}}
>
<Stack.Screen name="Login" component={Login} />
</Stack.Navigator>
</NavigationContainer>
)
}
앱 스킴으로 열리는지 확인 하기
아래 명령어를 활용하면 앱이 열리는 것을 확인할 수 있다.
npx uri-scheme open "[나의 앱 스킴]" --ios
쿼리 파라미터 받는 방법
예를 들어 test://login?code=”123” 이 날라왔다고 해보자, 이때 code에 대한 데이터를 어떻게 받을 수 있나? 우선 react navigation을 쓰고 있음으로, 문서를 참고 하면된다
const linking = {
prefixes: ['test://login'],
config: {
screens: {
login: {
path: '/:code',
},
},
}
};
받는 쪽에선 아래와 같이 확인 할 수 있다.
function Login({route}: IntroScreenProps) {
console.log(route.params.code); // 123
// 생략
}
'React' 카테고리의 다른 글
React native - custom font 적용과 발생했던 문제를 기록 - IOS (2) | 2022.04.24 |
---|---|
React native - progress bar 만들기 (0) | 2022.04.16 |
React native 로 스와이프 애니메이션 (0) | 2022.04.11 |
🐛 에러로그 - error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. [RN] (4) | 2021.11.25 |
🐛 에러로그 - Multiple commands produce [파일경로] (RN) (0) | 2021.11.25 |