android에서 dynamic link로 플레이스토어/앱스토어로 이동하지 않을때

앱 내에서 상품을 공유할 때 해당 링크만 복사해서 넘기는 것 보단 Google Analytics 등에서 referer, 통계분석 등을 위해 firebase의 dynamic link나 appsflyer의 onelink 등의 서비스를 이용하는 경우가 있다.
우리 서비스도 동일한 이유로 dynamic link를 사용하고 있는데 android 앱에서 앱이 설치된 상태로 링크를 타고 들어가면 정상적으로 앱이 열리지만 앱이 설치되지 않은 상태에서 링크를 누르면 해당 상품의 페이지가 열리는 문제가 있었다.
설정이 잘못되었는지, short link를 생성하면서 파라미터를 잘못 넣었는지 등을 체크하며 여러가지를 시도하다가 발견한 문제는 생각보다 사소한 것이였다.

val uri = Uri.parse("상품 URL")
Firebase.dynamicLinks.shortLinkAsync {
    link = uri
    domainUriPrefix = "domain uri prefix"
    androidParameters(context.packageName) {
        fallbackUrl = uri
    }
    iosParameters("ios bundle id") {
        appStoreId = "ios appstore id"
        setFallbackUrl(uri)
    }
}.addOnSuccessListener {
    // shortLink 생성 성공
}.addOnFailureListener {
    // shortLink 생성 실패
}

이슈가 발생한 코드는 위와 같은 코드였는데 여기서 fallbackUrl을 설정한게 문제였다.

fallbackUrl이 설정이 되어 있으면 해당 앱의 스토어로 이동하는 대신 fallbackUrl에 등록된 URL로 이동한다.
그래서 스토어 대신 상품 페이지(fallbackUrl에 상품링크를 넣음)로 이동했던 거였고, 실패가 무엇에 대한 실패인지 고려하지 않은채 추가한 결과 스토어 대신 상품 페이지가 열리는 이슈가 발생한거였다.

androidParameters, iosParameters에서 각각 fallbackUrl 부분을 주석처리 하면 앱이 설치되지 않은 경우 플레이스토어/앱스토어로 이동한다.

좋은 웹페이지 즐겨찾기