๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
Mobile
React Native
11-ios-android

1. Android - manifest, Activity, Application

1.1 Application

  • ์•ˆ๋“œ๋กœ์ด๋“œ Application์—์„œ ์ „์ฒด ์•ฑ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” class
  • Event๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณต
    • onCreate : ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋ ๋•Œ ์ตœ์ดˆ์— ํ˜ธ์ถœ
    • onTerminate : ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋ ๋•Œ ํ˜ธ์ถœ

1.2 Manifest

  • Android ์•ฑ์˜ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ์š”์•ฝํ•ด์„œ ์„ ์–ธ ํ•ด ๋‘”๊ฒƒ
  • ๊ถŒํ•œ, ์ด๋ฆ„, ํŒจํ‚ค์ง€๋ช… ๋“ฑ ์•ฑ์˜ ์ „๋ฐ˜์ ์ธ ๋‚ด์šฉ๋“ค์„ ๋‹ด๊ณ  ์žˆ์Œ
  • ์œ„์น˜ : android/app/src/main/AndroidManifest.xml

1.3 Activity

  • ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ํ™”๋ฉด์„ ๊ตฌ์„ฑ ํ•˜๋Š” ์š”์†Œ
  • ์œ ์ €๊ฐ€ ์ง์ ‘ ๋ณด๊ณ , ๋ˆ„๋ฅด๋Š” ๋“ฑ์˜ ์•ก์…˜์ด ๋ฐœ์ƒ๋จ
  • ์•ˆ๋“œ๋กœ์ด๋“œ์˜ 4๊ตฌ์„ฑ ์š”์†Œ (activity, service, receiver, content provider)
  • Intent : ์–ด๋–ค Activity๋ฅผ ํ˜ธ์ถœํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ
    • ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ๋ณด๋‚ด๋Š”๊ฒƒ
    • navigation์„ ์ด๋™ํ–ˆ๋˜๊ฒƒ๊ณผ ๋น„์Šทํ•œ ํ˜•ํƒœ
  • Activity Life-cycle : onCreate โ†’ onResume โ†’ onPause โ†’ onDestroy

1.3.1 Intent-Filter

  • Intent-Filter : Intent๋ฅผ ์‹คํ–‰ ์‹œํ‚ฌ๋•Œ ์–ด๋–ค ์ข…๋ฅ˜์˜ activity์ธ์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ
  • Intent-Filter ๊ตฌ์กฐ
    • Action : activity๊ฐ€ ์–ด๋–ค ํ–‰๋™์— ์œ ํšจํ•œ ๊ฒƒ์ธ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’ (ex SEND๋“ฑ)
    • Category : ์–ด๋–ค ์ข…๋ฅ˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’
1
<intent-filter>
2
<action android:name="android.intent.action.MAIN" />
3
<category android:name="android.intent.category.LAUNCHER" />
4
</intent-filter>
  • Intent-Filter์˜ ์ข…๋ฅ˜
    • ACTION_MAIN : ์•ฑ์˜ ์‹œ์ž‘์ . ํ™ˆํ™”๋ฉด์— ์•„์ด์ฝ˜์ด ๋งŒ๋“ค์–ด์ง
    • ACTION_SEND : ๊ณต์œ ํ•˜๊ธฐ ์•ก์…˜๋“ฑ์ด ํ•„์š”ํ• ๋•Œ ์‚ฌ์šฉ๋จ
    • ACTION_DIAL : ์ „ํ™”๋ฒˆํ˜ธ ํฐ ํŒจ๋“œ์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ํ•„์š”ํ• ๋•Œ ์‚ฌ์šฉ๋จ

2. iOS - Info.plist, AppDelegate

2.1 AppDelegate

  • Android์—์„œ activity์ฒ˜๋Ÿผ ํ™”๋ฉด์„ ๊ตฌ์„ฑ ํ•˜๋Š” ๋‹จ์œ„
  • ๊ฐ๊ฐ ์•ฑ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๋ถˆ๋ ค์ง€๊ฒŒ ๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์Œ
  • ๋‹ค์Œ์€ iOS App status ๊ทธ๋ฆผ์ด๋‹ค.
1
Not running โ†’ Inactive โ†’ Background โ†’ Suspended
2
โ†‘ โ†“
3
Active

2.1.1 didFinishLaunchingWithOptions

์•ฑ์ด ์ตœ์ดˆ ์‹คํ–‰๋ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜. (like android application onCreate)


2.1.2 Info.plist

  • ๊ถŒํ•œ, ์•ฑ์˜ ์ด๋ฆ„, ์‹คํ–‰์‹œ ์ฃผ๋กœ ํ•„์š”ํ•œ ๊ฐ’๋“ค์„ ๊ด€๋ฆฌ ํ•ด์ฃผ๋Š” ํŒŒ์ผ
  • SDK API Key๊ฐ’, ๊ถŒํ•œ ์š”์ฒญ์‹œ ํ…์ŠคํŠธ ๋“ฑ ๊ฐ’์„ ๊ด€๋ฆฌ

2.2 Build Phase

์•ฑ์„ ์‹คํ–‰ ์‹œํ‚ด์— ์žˆ์–ด ํ•„์š”ํ•œ ๊ฐ’๋“ค์„ ์ž๋™์œผ๋กœ ์„ค์ •ํ•˜๋„๋ก Command๋กœ ๋ชจ๋‘ ์„ ์–ธํ•ด๋‘”๊ฒƒ


3. Android / iOS Permissions

3.1 Permissions

ํŠน์ • ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„์š”๋กœ ํ• ๋•Œ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ—ˆ์šฉ ํ• ๊ฒƒ์ธ์ง€ ๋ฌผ์–ด๋ณด๋Š”๊ฒƒ


3.1.1 iOS Permissions flow

1
Start โ†’ available Device? โ†’ already request? โ†’ request โ†’ granted
2
โ†“ โ†“ โ†“
3
unavailable โ†“ โ†“
4
blocked, limited, granted โ†“
5
blocked

3.1.2 Android Permissions flow

1
Start โ†’ available Device? โ†’ already request? โ†’ request โ†’ can request once?
2
โ†“ โ†“ โ†“ โ†“
3
unavailable granted granted blocked

3.1.3 ์ถ”๊ฐ€๋กœ ๋” ํ•„์š”ํ•œ๊ฒƒ

  • iOS - Info.plist ๊ถŒํ•œ ์š”์ฒญ๋ฌธ

3.2 ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ถŒํ•œ

  • ์‚ฌ์ง„ ๊ด€๋ จ
    • iOS - NSPhotoLibraryUsageDescription
    • Android - READ_EXTERNAL_STORAGE
  • ์นด๋ฉ”๋ผ ๊ด€๋ จ
    • iOS - NSCameraUsageDescription
    • Android - WRITE_EXTERNAL_STORAGE
  • ์œ„์น˜ ๊ด€๋ จ
    • iOS - NSLocationAlwaysAndWhenInUseUsageDescription
    • Android
      • ACCESS_FINE_LOCATION
      • ACCESS_COARSE_LOCATION
      • ANDROID_BACKGROUND_LOCATION
  • AppTrackingTransparency
    • IDFA๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ถŒํ•œ
    • iOS ์•ฑ ์‹ฌ์‚ฌ์‹œ ํ•„์ˆ˜๋กœ ๋ณด๊ณ  ์žˆ๋Š” ์ •๋ณด

4. Android / iOS Sceheme

4.1 Scheme

  • ์™ธ๋ถ€์—์„œ ์šฐ๋ฆฌ ์•ฑ์„ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜, ์šฐ๋ฆฌ ์•ฑ์ด ์™ธ๋ถ€์•ฑ์„ ํ˜ธ์ถœํ•˜๋Š” ์ˆ˜๋‹จ
  • test://path/to/screen
    • test:// ๋ถ€๋ถ„ : scheme
    • path/to/screen ๋ถ€๋ถ„ : path

4.2 Scheme ์ •์˜ํ•˜๋Š”๋ฒ•

4.2.1 Android

  • intent-filter๋ฅผ ํ†ตํ•ด์„œ ์ •์˜
1
<intent-filter>
2
<action android:name="android.intent.action.VIEW" />
3
<category android:name="android.intent.category.DEFAULT" />
4
<category android:name="android.intent.category.BROWSABLE" />
5
<data android:scheme="scheme" />
6
</intent-filter>

4.2.2 iOS

  • Info.plist > URL Types์— ์ €์žฅ

4.3 Scheme ํ…Œ์ŠคํŠธํ•˜๋Š”๋ฒ•

  • uri-scheme package๋ฅผ ํ†ตํ•˜์—ฌ ํ…Œ์ŠคํŠธ
1
npx uri-scheme open "scheme://path" โ€”-ios
2
npx uri-scheme open "scheme://path" --android