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

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

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

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

  1. เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้เพิ่ม

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

  2. ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติจะเป็น <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารี Dynamic Links สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันของไลบรารี

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

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

    การใช้ Firebase Android BoM, จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้อยู่เสมอ

    (ทางเลือก)  เพิ่มทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ ใช้ BoM

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

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

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

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

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

ใช้คอนโซล Firebase

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

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

ตัวอย่างขั้นต่ำต่อไปนี้จะสร้าง Dynamic Link ไปยัง https://www.example.com/ ซึ่งจะเปิดด้วยแอป Android ใน Android และแอป com.example.ios ใน iOS

Kotlin

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

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

Kotlin

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

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

Kotlin

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

Java

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

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

ตัวอย่างต่อไปนี้จะสร้าง Dynamic Link โดยตั้งค่าพารามิเตอร์ทั่วไปหลายรายการ

Kotlin

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

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

พารามิเตอร์ของลิงก์แบบไดนามิก
setLink

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

setDomainUriPrefix คำนำหน้า URL Dynamic Link ซึ่งดูได้ในคอนโซล Firebase โดเมน Dynamic Linkจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl ลิงก์ที่จะเปิดเมื่อไม่ได้ติดตั้งแอป ระบุลิงก์นี้เพื่อดำเนินการอย่างอื่นนอกเหนือจากการติดตั้งแอปจาก Play Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บบนมือถือ หรือแสดงหน้าโปรโมตสำหรับแอป
setMinimumVersion versionCode ของแอปเวอร์ชันต่ำสุดที่เปิดลิงก์ได้ หากแอปที่ติดตั้งเป็นเวอร์ชันเก่า ระบบจะนำผู้ใช้ไปยัง Play Store เพื่ออัปเกรดแอป
IosParameters
setAppStoreId รหัส App Store ของแอปที่ใช้ส่งผู้ใช้ไปยัง App Store เมื่อไม่ได้ติดตั้งแอป
setFallbackUrl ลิงก์ที่จะเปิดเมื่อไม่ได้ติดตั้งแอป ระบุลิงก์นี้เพื่อดำเนินการอย่างอื่นนอกเหนือจากการติดตั้งแอปจาก App Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บบนมือถือ หรือแสดงหน้าโปรโมตสำหรับแอป
setCustomScheme URL Scheme ที่กำหนดเองของแอป หากกำหนดให้เป็นอย่างอื่นที่ไม่ใช่รหัสชุดของแอป
setIpadFallbackUrl ลิงก์ที่จะเปิดใน iPad เมื่อไม่ได้ติดตั้งแอป ระบุลิงก์นี้เพื่อดำเนินการอย่างอื่นนอกเหนือจากการติดตั้งแอปจาก App Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บ หรือแสดงหน้าโปรโมตสำหรับแอป
setIpadBundleId รหัสชุดของแอป iOS ที่จะใช้ใน iPad เพื่อเปิดลิงก์ แอปต้องเชื่อมต่อกับโปรเจ็กต์จากหน้าภาพรวมของคอนโซล Firebase
setMinimumVersion หมายเลข เวอร์ชัน ของแอปเวอร์ชันต่ำสุดที่เปิดลิงก์ได้ ระบบจะส่งแฟล็กนี้ไปยังแอปเมื่อเปิดแอป และแอปต้องตัดสินใจว่าจะทำอย่างไรกับแฟล็กนี้
NavigationInfoParameters
setForcedRedirectEnabled หากตั้งค่าเป็น '1' ให้ข้ามหน้าตัวอย่างแอปเมื่อ Dynamic Link เปิดขึ้น และเปลี่ยนเส้นทางไปยังแอปหรือ Store แทน หน้าตัวอย่างแอป (เปิดใช้โดยค่าเริ่มต้น) สามารถส่งผู้ใช้ไปยังปลายทางที่เหมาะสมที่สุดได้อย่างน่าเชื่อถือมากขึ้นเมื่อเปิด Dynamic Links ในแอป อย่างไรก็ตาม หากคุณคาดว่า Dynamic Link จะเปิดเฉพาะในแอปที่เปิด Dynamic Links ได้อย่างน่าเชื่อถือโดยไม่ต้องใช้หน้านี้ คุณสามารถปิดใช้ได้ด้วยพารามิเตอร์นี้ พารามิเตอร์นี้จะส่งผลต่อลักษณะการทำงานของ Dynamic Link ใน iOS เท่านั้น
SocialMetaTagParameters
setTitle ชื่อที่จะใช้เมื่อแชร์ Dynamic Link ในโพสต์โซเชียล
setDescription คำอธิบายที่จะใช้เมื่อแชร์ Dynamic Link ในโพสต์โซเชียล
setImageUrl URL ของรูปภาพที่เกี่ยวข้องกับลิงก์นี้ รูปภาพควรมีขนาดอย่างน้อย 300x200 พิกเซล และไม่เกิน 300 KB
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
พารามิเตอร์การวิเคราะห์ของ Google Play ระบบจะส่งพารามิเตอร์เหล่านี้ (utm_source, utm_medium, utm_campaign, utm_term, utm_content) ไปยัง Play Store รวมถึงต่อท้ายเพย์โหลดของลิงก์
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
พารามิเตอร์การวิเคราะห์ของ iTunes Connect ระบบจะส่งพารามิเตอร์เหล่านี้ (pt, at, ct) ไปยัง App Store

หากต้องการทำให้ Dynamic Link แบบยาวสั้นลง ให้ระบุ URL ของ Dynamic Link โดยใช้ setLongLink แทนการตั้งค่าพารามิเตอร์ด้วยเมธอดอื่นๆ ของ Builder

Kotlin

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