-
[AOS] Android DeepLink ์ค์ 2022. 11. 23. 15:59๋ฐ์ํ๐ฑ์ค์๋ฆฌ๋, ๋ฅ๋งํฌ๋ก MainActivity๋ฅผ ๋์์ฃผ์๊ณ , name ๊ฐ์ ๋ฐ๊ฒ ๊ตฌํํด์ฃผ์ธ์~๋ฅ๋งํฌ... ๊ฐ ๋ชจ์ฃ ...?๐ถ๐ฑ๊ตฌํํด์ฃผ์ธ์.๋ค...๐ถ
๋ฅ๋งํฌ๋
๋ฅ ๋งํฌ๋ ์ฌ์ฉ์๋ฅผ ์ฑ์ ํน์ ์ฝํ ์ธ ๋ก ๋ฐ๋ก ์ฐ๊ฒฐํ๋ URL์ด๋ค.
์ฐ๊ฒฐ์ ์ํ๋ activity์ intent filter์ ๋ฅ ๋งํฌ๋ฅผ ์ค์ ํ๋ฉด deeplink๋ฅผ ๋๋ฅธ ์ฌ์ฉ์์๊ฒ ํด๋น activity๋ฅผ ๋์์ค๋ค.
๋ฅ๋งํฌ ๋ง๋ค๊ธฐ
1. ์ปค์คํ scheme, host ๊ฐ ์ ์
ํธ์๋ฅผ ์ํด string.xml์ scheme๊ณผ host ๊ฐ์ ์ ์ํด์ค๋ค.
<resources> ... <string name="deeplink_scheme">deeplink</string> <string name="deeplink_host">main</string> </resources>
2. AndroidMenifest.xml ์ค์
๋ฅ๋งํฌ์ ์ฐ๊ฒฐ๋์ด ํ๋ฉด์ ์ถ๋ ฅํ activity์ VIEW action๊ณผ BROWSSABLE, DEFAULT ์นดํ ๊ณ ๋ฆฌ๋ฅผ ํฌํจํ๋ค.
๋ํ URI ํ์์ ๋ํ๋ด๋ data ํ๊ทธ์ ์์์ ์ ์ํ scheme๊ณผ host๋ฅผ ๋ฃ์ด์ค๋ค.
<application ...> <activity ...> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <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:host="@string/deepilnk_host" android:scheme="@string/deeplink_scheme" /> </intent-filter> </activity> ... </application>
Deeplink ํ ์คํธ ํด๋ณด๊ธฐ
* ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ด์ฉํ ํ ์คํธ ์ ๋๋ค.
1. ์คํ๋์ด ์๋ ์๋ฎฌ๋ ์ดํฐ ํ์ธํด๋ณด๊ธฐ
$ adb devices
List of devices attached
emulator-5556 device์๋ฎฌ๋ ์ดํฐ๊ฐ ์คํ๋์ด ์์ง ์์ ๊ฒฝ์ฐ
$ adb devices
adb: device offline์์ ๊ฐ์ด ์คํ๋์ด ์๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๋นํฉํ์ง ์๊ณ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ผ์ฃผ๋ฉด ๋๋ค.
์คํ๋์ด ์๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ฌ๋ฌ๋์ธ ๊ฒฝ์ฐ
$ adb devices
List of devices attached
emulator-5556 device
emulator-5558 device์๋ ๋ช ๋ น์ด๋ฅผ ์คํํด ํน์ ์๋ฎฌ๋ ์ดํฐ shell์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ ์ ์๋๋ก ํ๋ค.
$ adb -s emulator-5556 shell2. deeplink ์คํ ๋ช ๋ น์ด
$ adb shell am start -W -a android.intent.action.VIEW -d "deeplink://main?name=test!!" com.๋ฅ๋งํฌ.ํ๋ก์ ํธ.ํจํค์ง๋ช
Starting: Intent { act=android.intent.action.VIEW dat=test://main?name=test!! pkg=com.๋ฅ๋งํฌ.ํ๋ก์ ํธ.ํจํค์ง๋ช }
Status: ok
LaunchState: WARM
Activity: com.๋ฅ๋งํฌ.ํ๋ก์ ํธ.ํจํค์ง๋ช .activity.MainActivity
TotalTime: 907
WaitTime: 914
Complete์ค๊ฐ์ "deeplink://main?name=test!!" ์์
deeplink๋ ์์์ string.xml์ ์ ์ํ scheme๊ฐ, main์ host ๊ฐ์ด๋ค.
name=test!!๋ ํด๋น activity์ ์ ๋ฌํ ๋ฐ์ดํฐ, ์ฆ name์ด๋ผ๋ intent์ test!!๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด ์ฃผ๋ ์ญํ ์ ํ๋ค.
$ adb shell am start -W -a android.intent.action.VIEW -d "deeplink://main?name=test!!" com.๋ฅ๋งํฌ.ํ๋ก์ ํธ.ํจํค์ง๋ช
adb: more than one device/emulator๋ช ๋ น์ด ์คํ ํ ์์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์์์ ์ธ๊ธํ ์คํ๋์ด ์๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ฌ๋ฌ๋์ธ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์ ํน์ ์๋ฎฌ๋ ์ดํฐ shell์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ ์ ์๋๋ก ์ค์ ํด์ฃผ์ด์ผ ํ๋ค.
์ค์ ํ deeplink์ scheme์ด ๋ค๋ฅธ ์ฑ๊ณผ ๊ฒน์น๋ฉด
์์ ๊ฐ์ด ๋ฅ๋งํฌ๊ฐ ์ผ์นํ๋ ์ดํ๋ฆฌ์ผ์ด์ ๋ค ์ค์์ ์ํ๋ ์ฑ์ ์ ํํด์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ๊ธฐ๋ ํ๋ค.
์ด๋ฌํ ์ํฉ์ ๋ฐฉ์งํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฅ๋งํฌ์ ์ผ์ข ์ธ ์ฑ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์ฑ๋งํฌ๋ ๋๋ฉ์ธ ์ฃผ์๋ฅผ ์ด์ฉํ ๋ฅ๋งํฌ๋ก, ์์์ ๋ค๋ฃฌ ์คํด์ ์ด์ฉํ ๋ฅ๋งํฌ๋ฅผ ๋ฑ๋กํ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก AndroidMenifest์์ ํด๋น activity์ intent-filter๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
์ฑ๋งํฌ ์ธ์๋ ์ ๋๋ฒ์ ๋งํฌ๊ฐ ์๋ค.
ํ๋์ ๋ฅ๋งํฌ๋ง์ผ๋ก๋ ๋ชจ๋ ํ๊ฒฝ์ ๋์ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ต์ ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด์๋ 3๊ฐ์ ๋ฅ๋งํฌ ๋ฐฉ์์ ์ฑํํ์ฌ ์ํธ ๋ณด์์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ฐ์ํ'๐ฐ Android ๐ญ > ๐ ๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AOS] Kotlin ์ค์ฝํ ํจ์ (Scope Function) (0) 2023.04.28 [AOS] ์ด๋ฏธ์ง ๋ฌธ์๋ฉ์์ง ์ ์กํ๊ธฐ (0) 2023.04.14 [AOS] ForegroundService (0) 2022.11.15 [AOS] Android KakaoLink ์นด์นด์คํก ๊ณต์ ํ๊ธฐ 2 - Kakao Link ์ค์ (0) 2022.11.13 [AOS] Android KakaoLink ์นด์นด์คํก ๊ณต์ ํ๊ธฐ 1 - ์ด๊ธฐ ์ค์ (0) 2022.11.13