2022. 4. 11. 01:39ㆍTech/Mobile(Android, iOS)
- 목차
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다.
서론
웹페이지에서 특정 링크나 버튼을 눌렀을 때 앱이 실행된 걸 본 적이 있나요? 게임 같은걸 하다가 다른 앱을 실행한 적은?
모바일에서 이와같은걸 가능하게 해 주는 것이 바로 Deeplink입니다. 이번 글에서는 이러한 Deeplink에 관해 적어보려 합니다.
Deeplink
일반적으로 Deeplink란, 특정위치까지 도달하기 위해 파고드는(Deep) 링크(Link)를 말합니다. 모바일에서는 앱을 실행시키기 위한 Link를 뜻합니다. URL과 같은 Link이기 때문에 앱을 실행시키기 위한 주소는 물론, 앱을 실행하면서 query를 이용하여 특정 정보를 함께 전달할 수 있습니다. 이로 인해, 앱을 실행하고 특정 씬이나 페이지에 도달하거나 팝업을 별도의 조작 없이 실행할 수 있는 것이죠.
Deeplink의 구조를 간단히 살표 보면 다음과 같습니다.
[scheme(Protocol)]: // [host(Domain)] / [path] / [querys]
앱들에 scheme부분을 직접 지정할 수 있습니다. 이 scheme을 등록해놓고 Deeplink 호출 때 사용하는 것으로 기기에 앱이 설치되어있는지 여부를 판단하고 실행할 수 있다. 이를 Custom scheme이라고 합니다.
Android Deeplink 사용법
안드로이드 앱에 Custom scheme을 등록하는 방법은 AndroidManifest.xml에 직접 하면 됩니다.
scheme을 통해 실행할 Activity 정의 부분에 등록해주면 됩니다. 아래는 간단한 예시입니다.
< intent-filter >
< action android:name="android.intent.action.VIEW" />
< data android:host="myapp.link.com" android:scheme="myappscheme" />
< category android:name="android.intent.category.DEFAULT" />
< category android:name="android.intent.category.BROWSABLE" />
< /intent-filter >
iOS 사용법
info.list의 URL type 키에 Custom scheme을 넣어주고 빌드한 앱은, Deeplink를 통해 실행될 때 Appdelegate의 openURL 함수가 호출됩니다. 해당 함수를 통해 URL 정보 등을 저장한 뒤 이용할 수 있다.
//Object-C
-(BOOL) application:(UIApplication *) application openURL:(NSURL *) url
sourceApplication:(NSString *) sourceApplication annotation:(id) annotation
참고로, iOS는 White list라는 정책상의 이유로 미리 등록된 scheme이 아니라면 외부에서 해당 scheme을 가진 앱을 실행시킬 수 없습니다.
'Tech > Mobile(Android, iOS)' 카테고리의 다른 글
[iOS]iOS 의존성(Dependency ), cocoapods (코코아팟) (0) | 2022.04.11 |
---|---|
[iOS]iOS 앱 간 데이터 공유 키체인 쉐어링(Keychain sharing) (0) | 2022.04.11 |
[Android]가비지 컬렉터(Garbage collector) (0) | 2022.04.11 |
[Android]Android 앱 간 데이터 공유(ContentProvider와 ContentResolver) (0) | 2022.04.11 |
[Android]JVM, JRE, JDK (0) | 2022.04.10 |