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

Bạn có thể tạo Liên kết động ngắn hoặc dài bằng API trình tạo liên kết động Firebase. API này chấp nhận một Liên kết động dài hoặc một đối tượng có chứa các tham 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 Liên kết động trong ứng dụng Android của mình, bạn phải bao gồm SDK Firebase. 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 và có thể bỏ qua phần này.

  1. Nếu bạn chưa sẵn sàng, thêm căn cứ hỏa lực cho dự án Android của bạn .

    Khi bạn đăng ký ứng dụng của mình, hãy chỉ định khóa ký SHA-1 của bạn. Nếu bạn sử dụng Liên kết ứng dụng, hãy chỉ định khóa SHA-256 của bạn.

  2. Sử dụng các căn cứ hỏa lực Android HĐQT , kê khai phụ thuộc cho các thư viện động Links Android trong module của bạn (ứng dụng cấp) tập tin Gradle (thường là app/build.gradle ).

    Đối với một kinh nghiệm tối ưu với Dynamic Links, chúng tôi đề nghị cho phép Google Analytics trong dự án căn cứ hỏa lực của bạn và thêm SDK căn cứ hỏa lực cho Google Analytics để ứng dụng của bạn.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.4')
    
        // Declare 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 việc sử dụng căn cứ hỏa lực Android HĐQT , ứng dụng của bạn sẽ luôn luôn sử dụng các phiên bản tương thích của các thư viện căn cứ hỏa lực Android.

    (Alternative) Khai báo căn cứ hỏa lực phụ thuộc thư viện mà không sử dụng HĐQT

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

    Lưu ý rằng nếu bạn sử dụng nhiều thư viện căn cứ hỏa lực trong ứng dụng của bạn, chúng tôi khuyên bạn nên sử dụng HĐQT để quản lý các phiên bản thư viện, đảm bảo rằng tất cả các phiên bản tương thích.

    dependencies {
        // Declare 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:21.0.0'
        implementation 'com.google.firebase:firebase-analytics:20.0.2'
    }
    

    Kotlin + KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.4')
    
        // Declare 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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Bằng việc sử dụng căn cứ hỏa lực Android HĐQT , ứng dụng của bạn sẽ luôn luôn sử dụng các phiên bản tương thích của các thư viện căn cứ hỏa lực Android.

    (Alternative) Khai báo căn cứ hỏa lực phụ thuộc thư viện mà không sử dụng HĐQT

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

    Lưu ý rằng nếu bạn sử dụng nhiều thư viện căn cứ hỏa lực trong ứng dụng của bạn, chúng tôi khuyên bạn nên sử dụng HĐQT để quản lý các phiên bản thư viện, đảm bảo rằng tất cả các phiên bản tương thích.

    dependencies {
        // Declare 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-ktx:21.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.0.2'
    }
    
  3. Trong căn cứ hỏa lực console, hãy mở phần động Links.
  4. Nếu bạn chưa chấp nhận các điều khoản dịch vụ và đặt miền cho Liên kết động của mình, hãy làm như vậy khi được nhắc.

    Nếu bạn đã có miền Liên kết động, hãy lưu ý về nó. Bạn cần cung cấp miền Liên kết động khi tạo Liên kết động theo chương trình.

  5. Khuyến cáo: Chỉ định các mẫu URL cho phép trong các liên kết sâu và liên kết dự phòng. Bằng cách đó, bạn ngăn các bên trái 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 mà bạn không kiểm soát. Xem Allow mẫu URL cụ thể .

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

Nếu bạn muốn tạo một Dynamic Link duy nhất, hoặc cho mục đích thử nghiệm, hoặc cho đội ngũ tiếp thị của bạn dễ dàng tạo ra một liên kết có thể được sử dụng trong một cái gì đó giống như một bài truyền thông xã hội, cách đơn giản nhất sẽ đến thăm các căn cứ hỏa lực console và tạo một theo cách thủ công theo biểu mẫu từng bước.

Để tạo một liên kết động, tạo ra một mới DynamicLink đối tượng với Builder của nó, xác định các thông số với các phương pháp Builder Dynamic Link. Sau đó, hãy gọi buildDynamicLink hoặc buildShortDynamicLink .

Ví dụ tối thiểu sau tạo một Dynamic Link dài để https://www.example.com/ mở ra với ứng dụng Android trên Android và ứng dụng com.example.ios trên iOS:

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

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

Để tạo một liên kết động ngắn, xây dựng một DynamicLink theo cùng một cách, và sau đó gọi buildShortDynamicLink . Xây dựng một liên kết ngắn đòi hỏi một cuộc gọi mạng, vì vậy thay vì trực tiếp trả lại liên kết, buildShortDynamicLink lợi nhuận một Task , mà làm cho liên kết ngắn có sẵn khi hoàn thành yêu cầu. Ví dụ:

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

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.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

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

Theo mặc định, các Liên kết động ngắn được tạo với các hậu tố liên kết gồm 17 ký tự khiến cho việc ai đó có thể đoán được một Liên kết động hợp lệ là rất khó. Nếu, đối với trường hợp sử dụng của bạn, không có hại trong một ai đó đoán thành công một liên kết ngắn, bạn có thể thích để tạo ra hậu tố mà chỉ có chừng nào còn cần phải là duy nhất mà bạn có thể làm bằng cách đi qua ShortDynamicLink.Suffix.SHORT đến buildShortDynamicLink phương pháp :

Java

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

Kotlin + KTX

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

Bạn có thể sử dụng API trình tạo liên kết động để tạo Liên kết động với bất kỳ thông số nào được hỗ trợ. Xem các tài liệu tham khảo API để biết chi tiết.

Ví dụ sau tạo Liên kết động với một số thông số phổ biến được đặt:

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

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!"
    }
}

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

Tham số DynamicLink
setLink

Liên kết ứ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 hoặc trọng tải 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). Liên kết này phải là một URL được định dạng tốt, được mã hóa URL đúng cách, sử dụng HTTP hoặc HTTPS và không thể là một Liên kết động khác.

setDomainUriPrefix Tiền tố URL liên kết động của bạn, bạn có thể tìm thấy tiền tố này trong bảng điều khiển Firebase. Một Dynamic Link vẻ miền như các ví dụ sau:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl Liên kết để mở khi ứng dụng chưa được cài đặt. Chỉ định điều này để làm điều gì đó khác ngoài cài đặt ứng dụng của bạn từ Cửa hàng Play khi ứng dụng chưa được cài đặt, chẳng hạn như mở phiên bản web 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 Các versionCode của phiên bản tối thiểu của ứng dụng của bạn có thể mở 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 đưa đến Cửa hàng Play để nâng cấp ứng dụng.
IosParameters
setAppStoreId ID App Store của ứng dụng của bạn, được sử dụng để đưa người dùng đến App Store khi ứng dụng chưa được cài đặt
setFallbackUrl Liên kết để mở khi ứng dụng chưa được cài đặt. Chỉ định điều này để làm điều gì đó khác ngoài 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 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 của bạn, nếu được xác định là thứ gì đó khác với ID gói ứng dụng của bạn
setIpadFallbackUrl Liên kết để mở trên iPad khi ứng dụng chưa được cài đặt. Chỉ định điều này để làm điều gì đó khác ngoài 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 của nội dung hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
setIpadBundleId ID gói của ứng dụng iOS sử dụng trên iPad để mở liên kết. Ứng dụng phải được kết nối với dự án của bạn từ Trang tổng quan của bảng điều khiển Firebase.
setMinimumVersion Các số phiên bản của phiên bản tối thiểu của ứng dụng của bạn có thể mở liên kết. Cờ này được chuyển tới ứng dụng của bạn khi nó được mở và ứng dụng của bạn phải quyết định phải làm gì với nó.
NavigationInfoParameters
setForcedRedirectEnabled Nếu được đặt thành '1', hãy bỏ qua trang xem trước ứng dụng khi Liên kết động được mở và thay vào đó 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 thích hợp hơn một cách đáng tin cậy hơn khi họ mở Liên kết động trong ứng dụng; tuy nhiên, nếu bạn mong đợi một Liên kết động chỉ được mở trong các ứng dụng có thể mở Liên kết động một cách đáng tin cậy mà không có trang này, bạn có thể tắt nó 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.
SocialMetaTagParameters
setTitle Tiêu đề sẽ 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 Mô tả sẽ 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.
setImageUrl URL của một hình ảnh liên quan đến liên kết này. Hình ảnh phải có kích thước ít nhất 300x200 px và nhỏ hơn 300 KB.
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Các thông số phân tích của Google Play. Những thông số này ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) đều được thông qua vào Play Store cũng như nối vào link tải.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
Các thông số phân tích của iTunes Connect. Những thông số này ( pt , at , ct ) được truyền cho App Store.

Để rút ngắn một Dynamic Link dài, chỉ định URL của liên kết động sử dụng setLongLink thay vì thiết lập các thông số với các phương pháp xây dựng khác:

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

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.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

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