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

Bạn có thể tạo các Đườ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 Liên kết động dài hoặc một đối tượng chứa Liên kết động tham số 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 Liên kết động trong ứng dụng Android, bạn phải có Firebase SDK. Nếu ứng dụng của bạn được thiết lập để nhận Liên kết động, bạn đã đã hoàn thành các bước này hay bạn có thể bỏ qua phần này.

  1. Nếu bạn chưa làm như vậy, thêm Firebase vào dự án Android của bạ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 đến ứng dụng, cũng phải chỉ định 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), 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 Bảng kê khai thành phần của Firebase cho Android để 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 Firebase SDK cho Google Analytics vào ứng dụng của bạn.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.2"))
    
        // 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 trên Firebase.

    (Phương án thay thế) Thêm các phần phụ thuộc của 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.

    Lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng của mình, chúng tôi thực sự bạn nên sử dụng BoM để quản lý các phiên bản thư viện. Điều này đảm bảo rằng tất cả các 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.2'
    }
    
    Bạn đang tìm một mô-đun thư viện dành riêng cho Kotlin? Bắt đầu sau Tháng 10 năm 2023 (Firebase BoM 32.5.0), cả nhà phát triển Kotlin và Java đều có thể phụ thuộc vào mô-đun thư viện chính (để biết thông tin chi tiết, hãy xem 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. Trường hợp bạn chưa chấp nhận điều khoản dịch vụ và đặt miền cho Liên kết động của bạn, hãy làm như vậy khi được nhắc.

    Nếu bạn đã có miền Đường liên kết động, hãy ghi lại miền đó. Bạn cần cung cấp miền Đường liên kết động khi bạn tạo Đường liên kết động theo phương thức 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. Bằng cách làm như vậy, bạn sẽ ngăn chặn các bên không được phép tạo Liên kết động chuyển hướng từ miền của bạn đến các trang web bạn không kiểm soát. Xem phần Cho phép cụ thể Mẫu URL.

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

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

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

Ví dụ tối giản sau đây sẽ tạo một Liên kết động dài tới https://www.example.com/ mở ra cùng với ứng dụng Android 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ự và sau đó gọi buildShortDynamicLink. Để tạo một đường liên kết ngắn, bạn cần lệnh gọi mạng, vì vậy thay vì trực tiếp trả về đường liên kết, buildShortDynamicLink trả về Task, do đó, đườ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ố của đường liên kết gồm 17 ký tự khiến ai đó khó đoán được Liên kết động hợp lệ. Nếu, đối với trường hợp sử dụng của bạn, sẽ không có hại nếu ai đó đoán được một đường liên kết ngắn, bạn có thể muốn tạo hậu tố chỉ khi cần thiết mà bạn có thể thực hiện bằng cách truyề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 Liên kết động bằng bất kỳ các tham số đượ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 một vài thông số phổ biến đặt:

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ố Đường liên kết động bằng các phương thức sau:

Thông số DynamicLink
setLink

Đường liên kết mà ứng dụng của bạn sẽ mở ra. Chỉ định URL mà ứng dụng của bạn có thể xử lý, thường là nội dung của ứng dụng hoặc tải trọng, bắt đầu logic dành riêng cho ứng dụng (chẳng hạn như cấp tín dụng 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). 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, đồng thời không được là một Liên kết động khác.

setdomainUriPrefix Tiền tố URL đường liên kết động mà bạn có thể tìm thấy trong bảng điều khiển của Firebase. Đáp 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
Tham số Android
URL dự phòng Đường liên kết để mở khi ứng dụng chưa được cài đặt. Chỉ định thao tác này để làm một việc gì đó ngoài việc cài đặt ứng dụng 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 nội dung trên web dành cho thiết bị di động 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 ứng dụng tối thiểu có thể mở đường liên kết. Nếu ứng dụng đã cài đặt là một phiên bản cũ, thì người dùng sẽ được chuyển đến Cửa hàng Play để nâng cấp.
Tham số ios
setAppStoreId Mã App Store của ứng dụng của bạn, dùng để đưa người dùng đến App Store khi ứng dụng chưa được cài đặt
URL dự phòng Đường liên kết để mở khi ứng dụng chưa được cài đặt. Chỉ định thao tác này để làm một việc gì đó ngoài việc cài đặt ứng dụng từ App Store khi chưa cài đặt ứng dụng, chẳng hạn như mở phiên bản nội dung trên web dành cho thiết bị di động hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
Lược đồ tùy chỉnh Lược đồ URL tuỳ chỉnh của ứng dụng, nếu được xác định không phải là mã gói ứng dụng
setIpadFallbackUrl Đường liên kết để mở trên iPad khi ứng dụng chưa được cài đặt. Chỉ định thao tác này để thực hiện một thao tác khác ngoài việc cài đặt ứng dụng từ App Store khi ứng dụng chưa được cài đặt, chẳng hạn như mở phiên bản nội dung trên web hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
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. Bạn phải kết nối ứng dụng với dự á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 chuyển đến ứng dụng của bạn khi được mở và ứng dụng phải quyết định tác vụ cần thực hiện với cờ đó.
Thông số NavigationInfo
setForcedRedirectEnabled Nếu bạn đặt thành '1', hãy bỏ qua trang xem trước ứng dụng khi Đường liên kết động mở, mà 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 trang đích phù hợp nhất theo cách đáng tin cậy hơn khi họ mở Đường liên kết động trong ứng dụng; tuy nhiên, nếu bạn muốn một Đường liên kết động chỉ mở trong những ứng dụng có thể mở Đường liên kết động một cách đáng tin cậy mà không cần trang này, thì bạn có thể tắt đường liên kết động đó bằng tham số này. Tham số này sẽ chỉ ảnh hưởng đến hoạt động của Liên kết động trên iOS.
Tham số SocialMetaTag
Đặt tiêu đề Tiêu đề cần sử dụng khi Đường liên kết động được chia sẻ trong bài đăng trên mạng xã hội.
setDescription Nội dung mô tả để sử dụng khi Đường liên kết động được chia sẻ trong bài đăng trên mạng xã hội.
setImageUrl URL đến 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 pixel và nhỏ hơn 300 KB.
Thông số GoogleAnalytics
setSource
setMedium
setCampaign
setTerm
setContent
Thông số phân tích của Google Play. Các thông số này (utm_source, utm_medium, utm_campaign, utm_term, utm_content) được chuyển đến Cửa hàng Play cũng như được thêm vào tải trọng của đường liên kết.
Thông số ItunesConnectAnalytics
setProviderToken
setaffiliateToken
setCampaignToken
Thông số phân tích của iTunes Connect. Các thông số này (pt, at, ct) được chuyển đến App Store.

Để rút ngắn một Đườ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 trình tạo khác phương thức:

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