Tạo đường liên kết động trên Android

Bạn có thể tạo Đường liên kết động ngắn hoặc dài bằng API Trình tạo đường liên kết động của Firebase. API này chấp nhận một Đường liên kết động dài hoặc một đối tượng chứa các thông số Liên kết động và trả về các URL như các ví dụ sau:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Trước khi có thể tạo Đường liên kết động trong ứng dụng Android, bạn phải thêm SDK Firebase. Nếu ứng dụng của bạn được thiết lập để nhận Đường liên kết động, tức là bạn đã hoàn tất các bước này và có thể bỏ qua phần này.

  1. Thêm Firebase vào dự án Android của bạn nếu bạn chưa thực hiện.

    Khi bạn đăng ký ứng dụng, hãy chỉ định khoá ký SHA-1. Nếu bạn sử dụng Đường liên kết ứng dụng, hãy chỉ định cả khoá SHA-256.

  2. Trong tệp Gradle mô-đun (cấp ứng dụng) (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), hãy thêm phần phụ thuộc cho thư viện Đường liên kết động cho Android. Bạn nên sử dụng Firebase Android BoM để kiểm soát việc tạo phiên bản thư viện.

    Để có trải nghiệm tối ưu với Đường liên kết động, bạn nên bật Google Analytics trong dự án Firebase và thêm SDK Firebase cho Google Analytics vào ứng dụng của mình.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.0"))
    
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    Bằng cách sử dụng Firebase Android BoM, ứng dụng của bạn sẽ luôn sử dụng các phiên bản tương thích của thư viện Android Firebase.

    (Thay thế) Thêm các phần phụ thuộc thư viện Firebase mà không sử dụng BoM

    Nếu chọn không sử dụng BoM của Firebase, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phần phụ thuộc tương ứng.

    Xin lưu ý rằng nếu sử dụng nhiều thư viện Firebase trong ứng dụng của mình, bạn nên sử dụng BoM để quản lý các phiên bản thư viện nhằm đảm bảo rằng mọi phiên bản đều tương thích.

    dependencies {
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:22.1.0'
        implementation 'com.google.firebase:firebase-analytics:22.0.1'
    }
    
    Bạn đang tìm một mô-đun thư viện dành riêng cho Kotlin? Kể từ tháng 10 năm 2023 (Firebase BoM 32.5.0), cả nhà phát triển Kotlin và Java đều có thể sử dụng mô-đun thư viện chính (để biết thông tin chi tiết, hãy xem phần Câu hỏi thường gặp về sáng kiến này).
  3. Trong bảng điều khiển của Firebase, hãy mở mục Đường liên kết động.
  4. Nếu bạn chưa chấp nhận điều khoản dịch vụ và chưa thiết lập miền cho Đường liên kết động, hãy thực hiện việc này khi được nhắc.

    Nếu bạn đã có miền Liên kết động, hãy ghi lại miền này. Bạn cần cung cấp miền Liên kết động khi tạo Đường liên kết động bằng phương pháp lập trình.

  5. Đề xuất: Chỉ định các mẫu URL được phép trong đường liên kết sâu và đường liên kết dự phòng. Khi làm như vậy, bạn sẽ ngăn các bên không được phép tạo Đường liên kết động chuyển hướng từ miền của bạn đến các trang web mà bạn không kiểm soát. Hãy xem phần Cho phép các mẫu URL cụ thể.

Sử dụng bảng điều khiển của Firebase

Nếu bạn muốn tạo một Đường liên kết động duy nhất, cho mục đích thử nghiệm hoặc để nhóm tiếp thị của bạn dễ dàng tạo một đường liên kết có thể sử dụng trong bài đăng nào đó trên mạng xã hội, thì cách đơn giản nhất là truy cập vào bảng điều khiển của Firebase rồi tự tạo một đường liên kết theo hướng dẫn từng bước.

Để tạo Đường liên kết động, hãy tạo một đối tượng DynamicLink mới bằng Trình tạo, chỉ định các tham số của Đường liên kết động bằng phương thức Trình tạo. Sau đó, hãy gọi buildDynamicLink hoặc buildShortDynamicLink.

Ví dụ tối thiểu sau đây sẽ tạo một Đường liên kết động dài đến https://www.example.com/ mà sẽ mở bằng ứng dụng Android của bạn trên Android và ứng dụng com.example.ios trên iOS:

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Open links with this app on Android
    androidParameters { }
    // Open links with com.example.ios on iOS
    iosParameters("com.example.ios") { }
}

val dynamicLinkUri = dynamicLink.uri

Java

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();

Để tạo một Đường liên kết động ngắn, hãy tạo DynamicLink theo cách tương tự, sau đó gọi buildShortDynamicLink. Việc tạo đường liên kết ngắn cần phải có một lệnh gọi mạng, do đó, thay vì trực tiếp trả về đường liên kết, buildShortDynamicLink sẽ trả về một Task để giúp đường liên kết ngắn xuất hiện khi yêu cầu hoàn tất. Ví dụ:

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { (shortLink, flowchartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.component1 and
    // com.google.firebase.dynamiclinks.component2

    // Short link created
    processShortLink(shortLink, flowchartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

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
                    // ...
                }
            }
        });

Theo mặc định, các Đường liên kết động ngắn được tạo kèm theo hậu tố liên kết gồm 17 ký tự, khiến mọi người khó đoán được một Đường liên kết động hợp lệ. Trong trường hợp sử dụng của bạn, nếu ai đó đoán thành công một đường liên kết ngắn, thì bạn nên tạo hậu tố chỉ cần thiết là duy nhất. Bạn có thể thực hiện việc này bằng cách chuyển ShortDynamicLink.Suffix.SHORT vào phương thức buildShortDynamicLink:

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

Java

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

Bạn có thể sử dụng API Trình tạo đường liên kết động để tạo Đường liên kết động bằng bất kỳ tham số nào được hỗ trợ. Hãy xem Tài liệu tham khảo API để biết thông tin chi tiết.

Ví dụ sau đây sẽ tạo một Đường liên kết động với tập hợp một số thông số phổ biến:

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    androidParameters("com.example.android") {
        minimumVersion = 125
    }
    iosParameters("com.example.ios") {
        appStoreId = "123456789"
        minimumVersion = "1.0.1"
    }
    googleAnalyticsParameters {
        source = "orkut"
        medium = "social"
        campaign = "example-promo"
    }
    itunesConnectAnalyticsParameters {
        providerToken = "123456"
        campaignToken = "example-promo"
    }
    socialMetaTagParameters {
        title = "Example of a Dynamic Link"
        description = "This link works whether the app is installed or not!"
    }
}

Java

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()

Bạn có thể đặt thông số Liên kết động bằng các phương thức sau:

Thông số DynamicLink
Đặt đường liên kết

Đường liên kết mà ứng dụng của bạn sẽ mở ra. Chỉ định một URL mà ứng dụng của bạn có thể xử lý, thường là nội dung hoặc tải trọng của ứng dụng, để bắt đầu logic dành riêng cho ứng dụng (chẳng hạn như ghi có cho người dùng bằng phiếu giảm giá hoặc hiển thị màn hình chào mừng). Đường liên kết này phải là một URL được định dạng tốt, được mã hoá URL chính xác, sử dụng HTTP hoặc HTTPS và không được là một Đường liên kết động khác.

setDomainUriPrefix Bạn có thể tìm thấy tiền tố URL liên kết động của mình trong bảng điều khiển của Firebase. Miền Liên kết động sẽ có dạng như các ví dụ sau:
https://example.com/link
https://example.page.link
AndroidParameter
setstorageUrl Đường liên kết sẽ mở khi ứng dụng chưa được cài đặt. Chỉ định thao tác này để thực hiện một hành động nào đó khác ngoài việc cài đặt ứng dụng của bạn qua Cửa hàng Play khi chưa cài đặt ứng dụng, chẳng hạn như mở phiên bản web dành cho thiết bị di động của nội dung hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
setMinimumVersion versionCode của phiên bản tối thiểu của ứng dụng có thể mở đường liên kết. Nếu ứng dụng đã cài đặt là phiên bản cũ hơn, người dùng sẽ được chuyển đến Cửa hàng Play để nâng cấp ứng dụng.
Tham số Ios
Mã setAppStore Mã App Store của ứng dụng, được dùng để đưa người dùng đến App Store khi chưa cài đặt ứng dụng
setstorageUrl Đường liên kết sẽ mở khi ứng dụng chưa được cài đặt. Chỉ định thao tác này để thực hiện hành động nào đó khác ngoài việc cài đặt ứng dụng của bạn từ App Store khi ứng dụng chưa được cài đặt, chẳng hạn như mở phiên bản web dành cho thiết bị di động của nội dung hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
setCustomScheme Lược đồ URL tùy chỉnh của ứng dụng, nếu được xác định là khác với mã nhận dạng gói của ứng dụng
setIpadFallbackUrl Đường liên kết sẽ mở trên iPad khi chưa cài đặt ứng dụng. Chỉ định thao tác này để thực hiện một việc khác ngoài việc cài đặt ứng dụng của bạn qua App Store khi chưa cài đặt ứng dụng, chẳng hạn như mở phiên bản web của nội dung hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
Mã setIpadBundleId Mã nhận dạng gói của ứng dụng iOS dùng trên iPad để mở đường liên kết. Ứng dụng phải được kết nối với dự án của bạn trên trang Tổng quan của bảng điều khiển của Firebase.
setMinimumVersion Số phiên bản của phiên bản tối thiểu của ứng dụng có thể mở đường liên kết. Cờ này được truyền đến ứng dụng của bạn khi mở và ứng dụng phải quyết định việc cần làm với ứng dụng đó.
NavigationInfoParameter
setForcedRedirectEnabled Nếu bạn đặt là "1", hãy bỏ qua trang xem trước ứng dụng khi Đường liên kết động mở và chuyển hướng đến ứng dụng hoặc cửa hàng đó. Trang xem trước ứng dụng (được bật theo mặc định) có thể đưa người dùng đến đích đến thích hợp nhất khi họ mở Đường liên kết động trong ứng dụng một cách đáng tin cậy. Tuy nhiên, nếu bạn muốn chỉ mở Đường liên kết động trong những ứng dụng có thể mở Đường liên kết động đáng tin cậy mà không cần trang này, bạn có thể tắt đường liên kết đó bằng tham số này. Tham số này sẽ chỉ ảnh hưởng đến hoạt động của Đường liên kết động trên iOS.
SocialMetaTagParameter
Đặt tiêu đề Tiêu đề sử dụng khi Liên kết động được chia sẻ trong một bài đăng trên mạng xã hội.
setDescription Nội dung mô tả cần sử dụng khi Đường liên kết động được chia sẻ trong một bài đăng trên mạng xã hội.
setImageUrl URL đến một hình ảnh liên quan đến đường liên kết này. Hình ảnh phải có kích thước tối thiểu 300x200 px và nhỏ hơn 300 KB.
Tham số GoogleAnalytics
setSource
setMedium
setCampaign
setTerm
setContent
Thông số phân tích trên Google Play. Các thông số này (utm_source, utm_medium, utm_campaign, utm_term, utm_content) được truyền đến Cửa hàng Play cũng như được nối vào tải trọng của đường liên kết.
ItunesConnectAnalyticsParameter
setProviderToken
setAffiliateToken
setCampaignToken
Các tham số phân tích của iTunes Connect. Các thông số này (pt, at, ct) được truyền đến App Store.

Để rút ngắn Đường liên kết động dài, hãy chỉ định URL của Đường liên kết động bằng cách sử dụng setLongLink thay vì đặt tham số bằng các phương thức khác của trình tạo:

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    longLink = Uri.parse(
        "https://example.page.link/?link=" +
            "https://www.example.com/&apn=com.example.android&ibn=com.example.ios",
    )
}.addOnSuccessListener { (shortLink, flowChartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.component1 and
    // com.google.firebase.dynamiclinks.component2

    // Short link created
    processShortLink(shortLink, flowChartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

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
                    // ...
                }
            }
        });