Catch up on everthing we announced at this year's Firebase Summit. Learn more

สร้างลิงก์แบบไดนามิกบน Android

คุณสามารถสร้างลิงก์ไดนามิกแบบสั้นหรือแบบยาวได้ด้วย Firebase Dynamic Links Builder API API นี้ยอมรับ Dynamic Link แบบยาวหรืออ็อบเจ็กต์ที่มีพารามิเตอร์ Dynamic Link และส่งคืน URL เช่นตัวอย่างต่อไปนี้:

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

ก่อนที่คุณจะสร้างลิงก์แบบไดนามิกในแอป Android คุณต้องรวม Firebase SDK หากแอปของคุณได้รับการตั้งค่าให้รับลิงก์แบบไดนามิก แสดงว่าคุณได้ทำตามขั้นตอนเหล่านี้เรียบร้อยแล้ว และคุณสามารถข้ามส่วนนี้ได้

  1. หากคุณยังไม่ได้ เพิ่ม Firebase กับโครงการ Android ของคุณ

    เมื่อคุณลงทะเบียนแอป ให้ระบุคีย์การลงนาม SHA-1 ของคุณ หากคุณใช้ลิงก์แอป ให้ระบุคีย์ SHA-256 ด้วย

  2. ใช้ Firebase Android BoM ประกาศพึ่งพาสำหรับห้องสมุดแบบไดนามิกลิงค์ Android ในโมดูลของคุณ (app ระดับ) ไฟล์ Gradle (ปกติ app/build.gradle )

    สำหรับประสบการณ์ที่ดีที่สุดพร้อม Dynamic ลิงค์ที่เราขอแนะนำให้ เปิดใช้งาน Google Analytics ในโครงการ Firebase ของคุณและเพิ่ม Firebase SDK สำหรับ Google Analytics เพื่อ app ของคุณ

    Java

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

    โดยใช้ Firebase Android BoM แอปของคุณมักจะใช้รุ่นที่รองรับการห้องสมุด Firebase Android

    (ทางเลือก) ประกาศ Firebase อ้างอิงห้องสมุดโดยไม่ต้องใช้ BoM

    หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการพึ่งพา

    โปรดทราบว่าถ้าคุณใช้ห้องสมุด Firebase หลายรายการในแอปของคุณเราขอแนะนำให้ใช้ BoM การจัดการเวอร์ชันห้องสมุดซึ่งทำให้มั่นใจได้ว่าทุกรุ่นที่เข้ากันได้

    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.0'
    }
    

    คอตลิน+KTX

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

    โดยใช้ Firebase Android BoM แอปของคุณมักจะใช้รุ่นที่รองรับการห้องสมุด Firebase Android

    (ทางเลือก) ประกาศ Firebase อ้างอิงห้องสมุดโดยไม่ต้องใช้ BoM

    หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการพึ่งพา

    โปรดทราบว่าถ้าคุณใช้ห้องสมุด Firebase หลายรายการในแอปของคุณเราขอแนะนำให้ใช้ BoM การจัดการเวอร์ชันห้องสมุดซึ่งทำให้มั่นใจได้ว่าทุกรุ่นที่เข้ากันได้

    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.0'
    }
    
  3. ในคอนโซล Firebase เปิดส่วนแบบไดนามิกลิงค์
  4. หากคุณยังไม่ได้ยอมรับข้อกำหนดในการให้บริการและตั้งค่าโดเมนสำหรับลิงก์แบบไดนามิก ให้ดำเนินการดังกล่าวเมื่อได้รับแจ้ง

    หากคุณมีโดเมน Dynamic Links อยู่แล้ว โปรดจำไว้ คุณต้องระบุโดเมนลิงก์แบบไดนามิกเมื่อคุณสร้างลิงก์แบบไดนามิกโดยทางโปรแกรม

  5. แนะนำ: ระบุรูปแบบ URL ที่ได้รับอนุญาตในการเชื่อมโยงลึกของคุณและการเชื่อมโยงทางเลือก การทำเช่นนี้เป็นการป้องกันไม่ให้บุคคลที่ไม่ได้รับอนุญาตสร้างลิงก์แบบไดนามิกที่เปลี่ยนเส้นทางจากโดเมนของคุณไปยังไซต์ที่คุณไม่ได้ควบคุม ดู อนุญาตให้รูปแบบ URL ที่เฉพาะเจาะจง

ใช้คอนโซล Firebase

หากคุณต้องการที่จะสร้างการเชื่อมโยงแบบไดนามิกเดียวทั้งสำหรับวัตถุประสงค์ในการทดสอบหรือสำหรับทีมการตลาดของคุณได้อย่างง่ายดายสร้างการเชื่อมโยงที่สามารถนำมาใช้ในสิ่งที่ชอบโพสต์สื่อสังคมวิธีที่ง่ายที่สุดที่จะเยี่ยมชม Firebase คอนโซล และสร้างหนึ่ง ด้วยตนเองตามแบบฟอร์มทีละขั้นตอน

เพื่อสร้างการเชื่อมโยงแบบไดนามิกสร้างใหม่ DynamicLink วัตถุที่มีสร้างของตนระบุพารามิเตอร์เชื่อมโยงแบบไดนามิกที่มีวิธีการสร้าง จากนั้นโทร buildDynamicLink หรือ buildShortDynamicLink

ตัวอย่างน้อยที่สุดต่อไปนี้สร้างการเชื่อมโยงแบบไดนามิกยาวเพื่อ https://www.example.com/ ที่เปิดกับแอป Android ของคุณบน Android และแอปพลิเค com.example.ios บน 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();

คอตลิน+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

เพื่อสร้างสั้นเชื่อมโยงแบบไดนามิกสร้าง DynamicLink ทางเดียวกันแล้วโทร buildShortDynamicLink สร้างลิงก์สั้น ๆ ต้องโทรเครือข่ายดังนั้นแทนที่จะกลับโดยตรงการเชื่อมโยง buildShortDynamicLink ผลตอบแทน Task ซึ่งจะทำให้การเชื่อมโยงสั้นใช้ได้เมื่อเสร็จสิ้นการร้องขอ ตัวอย่างเช่น:

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

คอตลิน+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
    // ...
}

ตามค่าเริ่มต้น ลิงก์ไดนามิกแบบสั้นจะถูกสร้างขึ้นโดยมีส่วนต่อท้ายลิงก์ 17 อักขระ ซึ่งทำให้ไม่น่าจะมีใครคาดเดาไดนามิกลิงก์ที่ถูกต้องได้ หากกรณีการใช้งานของคุณมีอันตรายในคนที่ประสบความสำเร็จในการคาดเดาลิงก์สั้น ๆ ไม่มีคุณอาจต้องการสร้างส่วนต่อท้ายที่มีเฉพาะตราบใดที่จำเป็นที่จะต้องไม่ซ้ำกันซึ่งคุณสามารถทำได้โดยผ่าน ShortDynamicLink.Suffix.SHORT ไป buildShortDynamicLink วิธี :

Java

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

คอตลิน+KTX

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

คุณสามารถใช้ Dynamic Link Builder API เพื่อสร้าง Dynamic Links ด้วยพารามิเตอร์ที่รองรับ ดู อ้างอิง API สำหรับรายละเอียด

ตัวอย่างต่อไปนี้สร้าง Dynamic Link พร้อมชุดพารามิเตอร์ทั่วไปหลายชุด:

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

คอตลิน+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!"
    }
}

คุณสามารถตั้งค่าพารามิเตอร์ Dynamic Link ด้วยวิธีต่อไปนี้:

พารามิเตอร์ DynamicLink
setLink

ลิงก์ที่แอปของคุณจะเปิดขึ้น ระบุ URL ที่แอปของคุณสามารถจัดการได้ โดยทั่วไปคือเนื้อหาหรือเพย์โหลดของแอป ซึ่งเริ่มต้นตรรกะเฉพาะแอป (เช่น ให้เครดิตผู้ใช้ด้วยคูปองหรือแสดงหน้าจอต้อนรับ) ลิงก์นี้ต้องเป็น URL ที่มีรูปแบบที่ดี มีการเข้ารหัส URL อย่างถูกต้อง ใช้ HTTP หรือ HTTPS และไม่สามารถเป็นลิงก์แบบไดนามิกอื่นได้

setDomainUriPrefix คำนำหน้า URL ลิงก์แบบไดนามิกของคุณ ซึ่งคุณจะพบได้ในคอนโซล Firebase ลักษณะโดเมนเชื่อมโยงแบบไดนามิกเช่นตัวอย่างต่อไปนี้:
https://example.com/link
https://example.page.link
Androidพารามิเตอร์
setFallbackUrl ลิงก์สำหรับเปิดเมื่อไม่ได้ติดตั้งแอป ระบุสิ่งนี้เพื่อทำอย่างอื่นนอกเหนือจากการติดตั้งแอปของคุณจาก Play Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาในเวอร์ชันเว็บสำหรับอุปกรณ์เคลื่อนที่ หรือแสดงหน้าโปรโมชันสำหรับแอปของคุณ
setMinimumVersion versionCode ของรุ่นต่ำสุดของแอปที่สามารถเปิดการเชื่อมโยง หากแอปที่ติดตั้งเป็นเวอร์ชันเก่า ระบบจะนำผู้ใช้ไปที่ Play Store เพื่ออัปเกรดแอป
IosParameters
setAppStoreId App Store ID ของแอปของคุณ ใช้เพื่อส่งผู้ใช้ไปยัง App Store เมื่อไม่ได้ติดตั้งแอป
setFallbackUrl ลิงก์สำหรับเปิดเมื่อไม่ได้ติดตั้งแอป ระบุสิ่งนี้เพื่อทำอย่างอื่นนอกเหนือจากการติดตั้งแอพของคุณจาก App Store เมื่อไม่ได้ติดตั้งแอพ เช่น เปิดเนื้อหาในเวอร์ชั่นเว็บบนมือถือ หรือแสดงหน้าโปรโมชั่นสำหรับแอพของคุณ
setCustomScheme สคีม URL ที่กำหนดเองของแอป หากกำหนดเป็นอย่างอื่นที่ไม่ใช่ Bundle ID . ของแอป
setIpadFallbackUrl ลิงก์สำหรับเปิดบน iPad เมื่อไม่ได้ติดตั้งแอป ระบุสิ่งนี้เพื่อทำอย่างอื่นนอกเหนือจากการติดตั้งแอพของคุณจาก App Store เมื่อไม่ได้ติดตั้งแอพ เช่น เปิดเนื้อหาในเวอร์ชั่นเว็บ หรือแสดงหน้าโปรโมชั่นสำหรับแอพของคุณ
setIpadBundleId ID ชุดของแอป iOS ที่จะใช้บน iPads เพื่อเปิดลิงก์ แอปต้องเชื่อมต่อกับโปรเจ็กต์ของคุณจากหน้าภาพรวมของคอนโซล Firebase
setMinimumVersion หมายเลขรุ่น ของรุ่นต่ำสุดของแอปที่สามารถเปิดการเชื่อมโยง แฟล็กนี้จะถูกส่งต่อไปยังแอปของคุณเมื่อเปิด และแอปของคุณต้องตัดสินใจว่าจะทำอย่างไรกับแอปนั้น
NavigationInfoParameters
setForcedRedirectEnabled หากตั้งค่าเป็น '1' ให้ข้ามหน้าตัวอย่างแอปเมื่อเปิดลิงก์แบบไดนามิก และเปลี่ยนเส้นทางไปยังแอปหรือร้านค้าแทน หน้าแสดงตัวอย่างแอป (เปิดใช้งานโดยค่าเริ่มต้น) สามารถส่งผู้ใช้ไปยังปลายทางที่เหมาะสมที่สุดได้อย่างน่าเชื่อถือมากขึ้นเมื่อพวกเขาเปิดลิงก์แบบไดนามิกในแอป อย่างไรก็ตาม หากคุณคาดว่า Dynamic Link จะเปิดเฉพาะในแอปที่สามารถเปิด Dynamic Links ได้อย่างน่าเชื่อถือโดยไม่ต้องมีหน้านี้ คุณสามารถปิดใช้งานได้ด้วยพารามิเตอร์นี้ พารามิเตอร์นี้จะส่งผลต่อการทำงานของ Dynamic Link บน iOS เท่านั้น
SocialMetaTagParameters
setTitle ชื่อที่จะใช้เมื่อแชร์ลิงก์แบบไดนามิกในโพสต์โซเชียล
setDescription คำอธิบายที่จะใช้เมื่อแชร์ลิงก์แบบไดนามิกในโพสต์โซเชียล
setImageUrl URL ไปยังรูปภาพที่เกี่ยวข้องกับลิงก์นี้ รูปภาพควรมีขนาดอย่างน้อย 300x200 พิกเซล และไม่เกิน 300 KB
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

เพื่อตัดการเชื่อมโยงแบบไดนามิกยาวระบุ URL ของการเชื่อมโยงแบบไดนามิกโดยใช้ setLongLink แทนการตั้งค่าพารามิเตอร์ด้วยวิธีการสร้างอื่น ๆ :

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

คอตลิน+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
    // ...
}