Android에서 동적 링크 만들기

Firebase Dynamic Links Builder API를 사용하여 짧거나 긴 동적 링크를 만들 수있습니다. 이 API는 긴 동적 링크 또는 동적 링크 매개변수가 들어 있는 객체를 취하며 다음 예와 같은 URL을 반환합니다.

https://example.page.link/WXYZ

Firebase 및 동적 링크 SDK 설정

Android 앱에서 동적 링크를 만들려면 우선 Firebase SDK를 포함해야 합니다. 앱이 동적 링크를 수신하도록 설정되어 있다면 필요한 단계를 이미 완료한 것이므로 이 섹션을 건너뛰어도 무방합니다.

  • Android 프로젝트에 Firebase를 추가합니다. 앱 수준 build.gradle 파일에 Firebase 동적 링크에 대한 종속 항목을 추가합니다.
    implementation 'com.google.firebase:firebase-dynamic-links:16.1.7'
  • 아직 Firebase 프로젝트에 앱을 연결하지 않았다면 Firebase 콘솔에서 연결합니다. 앱 연결 시 SHA-1 서명 키를 지정해야 합니다. 앱 링크를 사용하는 경우에도 SHA-256 키를 지정합니다.
  • Firebase 콘솔에서 동적 링크 섹션을 엽니다.
  • 아직 서비스 약관에 동의하지 않았고 동적 링크의 도메인도 설정하지 않았다면 관련 메시지가 표시될 때 동의하고 설정합니다.

    동적 링크 도메인이 있다면 기록해 둡니다. 프로그래밍 방식으로 동적 링크를 만들 때 동적 링크 도메인을 제공해야 합니다.

Firebase 콘솔 사용

테스트를 하거나 마케팅팀에서 소셜 미디어 게시물 등에 사용할 수 있는 링크를 쉽게 만들 수 있도록 동적 링크 1개를 생성하려고 할 때 가장 간단한 방법은 Firebase 콘솔로 이동하여 단계별 양식에 따라 직접 만드는 것입니다.

매개변수로 동적 링크 만들기

동적 링크를 만들려면 빌더 메소드로 동적 링크 매개변수를 지정하여 빌더로 새 DynamicLink 객체를 만듭니다. 그런 다음 buildDynamicLink 또는 buildShortDynamicLink를 호출합니다.

다음은 Android의 경우 Android 앱, iOS의 경우 com.example.ios 앱에서 열리는 https://www.example.com/의 긴 동적 링크를 만드는 간단한 예입니다.

자바
Android

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink();

Uri dynamicLinkUri = dynamicLink.getUri();

Kotlin
Android

val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink()

val dynamicLinkUri = dynamicLink.uri

짧은 동적 링크를 만들려면 같은 방법으로 DynamicLink를 빌드한 후 buildShortDynamicLink를 호출합니다. 짧은 링크를 작성하려면 네트워크 호출이 필요하므로 buildShortDynamicLink는 요청이 완료될 때 짧은 링크를 사용할 수 있도록 링크를 직접 반환하는 대신 Task를 반환합니다. 예를 들면 다음과 같습니다.

자바
Android

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

Kotlin
Android

val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnSuccessListener { result ->
            // Short link created
            val shortLink = result.shortLink
            val flowchartLink = result.previewLink
        }.addOnFailureListener {
            // Error
            // ...
        }

기본적으로 짧은 동적 링크는 17자 링크 서픽스와 함께 생성되어 누군가가 유효한 동적 링크를 추측하는 것이 거의 불가능합니다. 누군가가 짧은 링크를 추측해도 괜찮다면 고유성을 위해 꼭 필요한 만큼의 길이로 서픽스를 만드는 것이 좋을 수 있으며, 이는 ShortDynamicLink.Suffix.SHORTbuildShortDynamicLink 메소드에 전달하여 수행할 수 있습니다.

자바
Android

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

Kotlin
Android

val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT)
        // ...

동적 링크 매개변수

Dynamic Link Builder API를 사용하여 지원되는 매개변수와 함께 동적 링크를 만들 수 있습니다. 자세한 내용은 API 참조를 확인하세요.

다음 예에서는 일반적인 몇 가지 매개변수를 설정하여 동적 링크를 만듭니다.

자바
Android

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                new DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                new DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                new DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink();  // Or buildShortDynamicLink()

Kotlin
Android

val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink() // Or buildShortDynamicLink()

다음과 같은 방법으로 동적 링크 매개변수를 설정할 수 있습니다.

DynamicLink 매개변수
setLink

앱에서 열리는 링크입니다. 앱이 처리할 수 있는 URL(일반적으로 앱의 콘텐츠 또는 페이로드)을 지정할 수 있으며, 이를 통해 사용자에게 쿠폰을 지급하거나 시작 화면을 표시하는 등 앱의 특정 로직을 시작할 수 있습니다. 이 링크는 올바른 형식의 URL이어야 하며, 적절한 URL 인코딩을 적용해야 합니다. HTTP 또는 HTTPS를 사용해야 하며 다른 동적 링크가 아니어야 합니다.

setDomainUriPrefix 동적 링크 도메인으로서 Firebase 콘솔에서 확인할 수 있습니다. 동적 링크 도메인의 형식은 https://example.page.link입니다.
AndroidParameters
setFallbackUrl 앱이 설치되지 않은 경우에 열리는 링크입니다. 앱이 설치되지 않았을 때 Play 스토어에서 앱을 설치하는 것 이외에 콘텐츠의 모바일 웹 버전 열기, 앱 홍보 페이지 표시 등의 다른 작업을 수행하려는 경우 이 매개변수를 지정합니다.
setMinimumVersion 링크를 열 수 있는 앱 최소 버전의 versionCode입니다. 설치된 앱이 이전 버전인 경우 앱을 업그레이드하기 위해 Play 스토어로 이동합니다.
IosParameters
setAppStoreId 앱이 설치되지 않은 경우 사용자를 앱 스토어로 보내는 데 사용되는 앱의 App Store ID입니다.
setFallbackUrl 앱이 설치되지 않았을 때 열리는 링크입니다. 앱이 설치되지 않았을 때 App Store에서 앱을 설치하는 것 이외에 콘텐츠의 모바일 웹 버전 열기, 앱 홍보 페이지 표시 등의 다른 작업을 수행하려는 경우 이 매개변수를 지정합니다.
setCustomScheme 앱의 번들 ID와 다른 값으로 정의하면 앱의 맞춤 URL 스키마로 사용됩니다.
setIpadFallbackUrl 앱이 설치되지 않은 경우 iPad에서 열리는 링크입니다. 앱이 설치되지 않았을 때 App Store에서 앱을 설치하는 것 이외에 콘텐츠의 웹 버전 열기, 앱 홍보 페이지 표시 등의 다른 작업을 수행하려는 경우 이 매개변수를 지정합니다.
setIpadBundleId iPad에서 링크를 여는 데 사용할 iOS 앱의 번들 ID입니다. Firebase 콘솔의 개요 페이지에서 앱을 프로젝트에 연결해야 합니다.
setMinimumVersion 링크를 열 수 있는 앱의 최소 버전의 버전 번호입니다. 이 플래그는 앱이 열렸을 때 앱에 전달되며 앱에서 수행할 작업을 결정해야 합니다.
NavigationInfoParameters
setForcedRedirectEnabled '1'로 설정하는 경우, 동적 링크가 열리면 앱 미리보기 페이지를 건너뛰고 앱 또는 스토어로 리디렉션합니다. 기본적으로 사용 설정되는 앱 미리보기 페이지는 앱에서 동적 링크를 연 사용자를 가장 적절한 목적지로 더 안정적으로 안내할 수 있지만, 이 페이지 없이 동적 링크를 안정적으로 열 수 있는 앱에서만 동적 링크가 열리게 설정하고 싶다면 이 매개변수를 사용하여 리디렉션을 중지할 수 있습니다. 참고: 앱 미리보기 페이지는 현재 iOS에만 표시되지만 이후에 Android에도 표시될 수 있습니다. 이 매개변수는 양쪽 플랫폼에서 동적 링크의 동작에 영향을 미칩니다.
SocialMetaTagParameters
setTitle 소셜 게시물에서 동적 링크를 공유할 때 사용되는 제목입니다.
setDescription 소셜 게시물에서 동적 링크를 공유할 때 사용되는 설명입니다.
setImageUrl 이 링크와 관련된 이미지의 URL입니다. 이미지는 300x200픽셀 이상, 300KB 미만이어야 합니다.
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Google Play 애널리틱스 매개변수입니다. 이러한 매개변수 (utm_source, utm_medium, utm_campaign, utm_term, utm_content)는 Play 스토어에 전달될 뿐 아니라 링크 페이로드에도 추가됩니다.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect 애널리틱스 매개변수입니다. 이러한 매개변수(pt, at, ct)는 App Store로 전달됩니다.

긴 동적 링크 축약

긴 동적 링크를 축약하려면 다른 빌더 메소드로 매개변수를 설정하는 대신 setLongLink를 사용하여 동적 링크의 URL을 지정합니다.

자바
Android

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

Kotlin
Android

val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=" +
                "https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnSuccessListener { result ->
            // Short link created
            val shortLink = result.shortLink
            val flowchartLink = result.previewLink
        }
        .addOnFailureListener {
            // Error
            // ...
        }

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.