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 >
위와 같이 등록해주면 연결된 Activity가 실행될때 Intent에 호출하는데 사용된 URL등의 정보와 함께 넘어간다.
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