브랜디 페이스북 페이지의 게시글을 보면 https://goo.gl/JCZD4z와 같은 링크들이 있습니다. 안드로이드에서 이 링크를 클릭하면 앱이 실행되지만 앱이 설치되어 있지 않으면 웹브라우저에서 브랜디가 실행됩니다.
위와 같이 앱의 특정 화면으로 이동하는 기능을 딥링크하고 하죠.
android:host=“deeplink”
android:scheme=“boyeproject” />
AndroidManifest 파일을 열어 버튼이나 링크를 눌렀을 때 실행하고 싶은 Activity에 위와 같이 intent filter를 설정합니다. 딥링크를 사용하기 위한 네 가지 요소이기도 하죠. 하나 하나 살펴볼까요?
###
먼저 첫 번째, 액션은 intent에 첨부되는 data의 URI가 가리키는 데이터를 사용자에게 보여주는 액션입니다.
###
두 번째, 이 카테고리를 intent filter에 선언하지 않으면 Activity에 어떠한 암시적 intent도 확인되지 않기 때문에 반드시 선언해야 합니다. 이 카테고리를 선언함으로써 앱 이름을 지정하지 않고 딥링크를 사용할 수 있게 해줍니다.
###
세 번째, 이 카테고리는 웹 브라우저에서 링크를 열 수 있게 합니다.
###
마지막으로 데이터는 이 페이지에 대한 딥링크로 어떤 URI를 사용할 것인지 지정합니다. host와 scheme이 이렇게 설정되었다면 ~boyeproject://applink~ 라는 URI는 무조건 해당 Activity가 실행됩니다.
Intent intent = getIntent();
Logger.*d*(“action : “ + intent.getAction());
Logger.*d*(“data : “ + intent.getDataString());
위의 코드를 통해 딥링크로 실행된 경우와 아닌 경우를 비교해봅시다.
딥링크로 실행된 경우와 그렇지 않은 경우 action과 data값이 다릅니다. 그렇기 때문에 action과 data를 비교해 딥링크로 실행된 경우를 찾아낼 수 있습니다.
if (Intent.*ACTION_VIEW*.equalsIgnoreCase(action) && data != null) {
textView.setText(“DeepLink!”);
} else {
textView.setText(“Not DeepLink!”);
}
위 코드로 딥링크로 실행된 경우에는 TextView에 DeepLink! 를 띄우고 아닌 경우에는 Not DeepLink! 를 띄워 실행해봅시다.
딥링크를 통해서 실행한 경우와 아닌 경우를 판별할 수 있게 되었습니다. 이제 딥링크에 추가적인 정보를 전달하는 방법을 알아보겠습니다.
딥링크를 통해서 추가적인 정보를 전달하고 싶을 땐 ~scheme://host/{parameter}~ 이렇게 딥링크를 설정하면 됩니다.
private static final String DEFAULT_PATH = “boyeproject://deeplink/“;
if (Intent.*ACTION_VIEW*.equalsIgnoreCase(action) && data != null)
{
if (data.startsWith(DEFAULT_PATH))
{
String param = data.replace(DEFAULT_PATH, “”);
textView.setText(param);
}
}
위 코드는 parameter로 받은 값입니다. TextView를 설정한 코드죠.
parameter로 설정한 additional이 TextView에 설정된 것을 확인할 수 있습니다.
결론입니다.
만약 딥링크가 없었다면 브랜디 페이스북 페이지의 게시글에서 원하는 상품을 발견했더라도 사용자는 복잡한 과정을 거쳐야 했을 겁니다. 생각해보세요. 브랜디 앱을 열고, 해당 상품을 검색하고, 원하는 페이지를 찾기까지… 쇼핑보다는 방황이라고 말하는 게 더 어울리는 듯합니다. 물론 이런 서비스를 좋아할 사용자는 없을 테고요. 오늘부턴 사용자들이 클릭 한 번으로 앱의 원하는 페이지까지 바로 이동할 수 있도록 딥링크를 사용하는 건 어떨까요?
글
김보예 사원 | R&D 개발1팀
kimby@brandi.co.kr
브랜디, 오직 예쁜 옷만
#브랜디 #개발자 #개발팀 #인사이트 #경험공유 #안드로이드