๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ

[React Native] ๋”ฅ๋งํฌ ์„ค์ •ํ•˜๊ธฐ

by megan07 2024. 1. 4.

React Navigation ๊ณต์‹๋ฌธ์„œ์—์„œ ํ•ด๋‹น ๋‚ด์šฉ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

https://reactnavigation.org/docs/deep-linking/

 

์•ˆ๋“œ๋กœ์ด๋“œ

android > app > src > main > AndroidManifest.xml

activity ์•ˆ์—๋‹ค๊ฐ€ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค

 <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="์„ค์ •ํ•  ์•ฑ ์Šคํ‚ด"/>
 </intent-filter>

 

 

IOS

ios๋Š” 2๊ฐ€์ง€๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค

 

1. ios > ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ํด๋” > AppDelegate.mm

ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค

#import <React/RCTLinkingManager.h>


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

 

 

2. xcode > ํ”„๋กœ์ ํŠธ > infoํƒญ > ๊ฐ€์žฅ ์•„๋ž˜ URL Types

์›ํ•˜๋Š” URL Schemes๋ฅผ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค

 

 

 

 

cli๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•œ url์Šคํ‚ด์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

android: $ npx uri-scheme open ์„ค์ •ํ•œURL์Šคํ‚ด:// --android
ios: $ npx uri-scheme open ์„ค์ •ํ•œURL์Šคํ‚ด:// --ios

 

 

 

์„ค์ •ํ•œ ๋”ฅ๋งํฌ๋ฅผ ํ†ตํ•ด ํŠน์ • ํ™”๋ฉด์œผ๋กœ ๋„ค๋น„๊ฒŒ์ด์…˜ ์‹œํ‚ค๊ธฐ

liking ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ NavagationContainer์— ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค

1. ์„ค์ •ํ•œ ์Šคํ‚ด์€ prefixes์— ๋„ฃ์–ด์ฃผ์„ธ์š”.

2. ์Šคํฌ๋ฆฐ์— ์—ฐ๊ฒฐํ•ด์ค„ path๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  const linking = {
    prefixes: ['daepyo://'],
    screens: {
      redirect: {
        path: '/redirect',
      },
    },
  };

 

 

์ € ๊ฐ™์€ ๊ฒฝ์šฐ๋Š”daepyo://redirect?code=~ ๋”ฅ๋งํฌ๋ฅผ ๋ฐ›์œผ๋ฉด

redirect ํŽ˜์ด์ง€์—์„œ code์— ํ•ด๋‹นํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ๋ฐ›์„ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค

 

useRoute๋ฅผ ์‚ฌ์šฉํ•ด์„œ code ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์•„์„œ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค