คุณสามารถสร้างลิงก์ไดนามิกแบบสั้นหรือแบบยาวได้ด้วย Firebase Dynamic Links Builder API API นี้ยอมรับ Dynamic Link แบบยาวหรืออ็อบเจ็กต์ที่มีพารามิเตอร์ Dynamic Link และส่งคืน URL เช่นตัวอย่างต่อไปนี้:
https://example.com/link/WXYZ https://example.page.link/WXYZ
ตั้งค่า Firebase และ Dynamic Links SDK
ก่อนที่คุณจะสร้างลิงก์แบบไดนามิกในแอป Android คุณต้องรวม Firebase SDK หากแอปของคุณได้รับการตั้งค่าให้รับลิงก์แบบไดนามิก แสดงว่าคุณได้ทำตามขั้นตอนเหล่านี้เรียบร้อยแล้ว และคุณสามารถข้ามส่วนนี้ได้
หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Android ของคุณ
เมื่อคุณลงทะเบียนแอป ให้ระบุคีย์การลงนาม SHA-1 ของคุณ หากคุณใช้ลิงก์แอป ให้ระบุคีย์ SHA-256 ด้วย
ใช้ Firebase Android BoM ประกาศการพึ่งพาสำหรับไลบรารี Dynamic Links Android ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
app/build.gradle
)เพื่อประสบการณ์ที่ดีที่สุดกับลิงก์แบบไดนามิก เราขอแนะนำให้ เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase และเพิ่ม Firebase SDK สำหรับ Google Analytics ในแอปของคุณ
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.3.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.1' implementation 'com.google.firebase:firebase-analytics:21.1.0' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.3.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.1' implementation 'com.google.firebase:firebase-analytics-ktx:21.1.0' }
- ในคอนโซล Firebase ให้เปิดส่วน ลิงก์แบบไดนามิก
หากคุณยังไม่ได้ยอมรับข้อกำหนดในการให้บริการและตั้งค่าโดเมนสำหรับลิงก์แบบไดนามิก ให้ดำเนินการดังกล่าวเมื่อได้รับแจ้ง
หากคุณมีโดเมน Dynamic Links อยู่แล้ว โปรดจำไว้ คุณต้องระบุโดเมนลิงก์แบบไดนามิกเมื่อคุณสร้างลิงก์แบบไดนามิกโดยทางโปรแกรม
- แนะนำ : ระบุรูปแบบ URL ที่อนุญาตในลิงก์ในรายละเอียดและลิงก์สำรอง การทำเช่นนี้เป็นการป้องกันไม่ให้บุคคลที่ไม่ได้รับอนุญาตสร้างลิงก์แบบไดนามิกที่เปลี่ยนเส้นทางจากโดเมนของคุณไปยังไซต์ที่คุณไม่ได้ควบคุม โปรดดู ที่อนุญาตรูปแบบ URL เฉพาะ
ใช้คอนโซล Firebase
หากคุณต้องการสร้างลิงก์แบบไดนามิกเดียว ไม่ว่าจะเพื่อวัตถุประสงค์ในการทดสอบ หรือเพื่อให้ทีมการตลาดของคุณสร้างลิงก์ที่สามารถใช้ในงานบางอย่าง เช่น โพสต์โซเชียลมีเดีย วิธีที่ง่ายที่สุดคือไปที่ คอนโซล Firebase และสร้าง ด้วยตนเองตามแบบฟอร์มทีละขั้นตอน
สร้างไดนามิกลิงค์จากพารามิเตอร์
ในการสร้าง Dynamic Link ให้สร้างอ็อบเจ็กต์
DynamicLink
ใหม่ด้วย Builder โดยระบุพารามิเตอร์ Dynamic Link ด้วยเมธอด Builder จากนั้นเรียก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();
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
ในการสร้าง Dynamic Link แบบสั้น ให้สร้าง
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 // ... } } });
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 // ... }
ตามค่าเริ่มต้น ลิงก์ไดนามิกแบบสั้นจะถูกสร้างขึ้นด้วยส่วนต่อท้ายลิงก์ 17 อักขระ ซึ่งทำให้ไม่น่าเป็นไปได้อย่างยิ่งที่ใครจะคาดเดาไดนามิกลิงก์ที่ถูกต้อง สำหรับกรณีการใช้งานของคุณ หากมีผู้คาดเดาลิงก์สั้น ๆ ได้สำเร็จ คุณอาจต้องการสร้างส่วนต่อท้ายที่ยาวเท่าที่จำเป็นเท่านั้นเพื่อให้ไม่ซ้ำกัน ซึ่งคุณสามารถทำได้โดยส่ง
ShortDynamicLink.Suffix.SHORT
ไปยังเมธอดbuildShortDynamicLink
:Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() // ... .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT); // ...
Kotlin+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()
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!" } }
คุณสามารถตั้งค่าพารามิเตอร์ 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 บน 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 Store รวมถึงต่อท้ายเพย์โหลดของลิงก์iTunesConnectAnalyticsParameters setProviderToken
setAffiliateToken
setCampaignTokenพารามิเตอร์การวิเคราะห์ iTunes Connect พารามิเตอร์เหล่านี้ ( pt
,at
,ct
) จะถูกส่งต่อไปยัง App Storeย่อ Dynamic Link แบบยาว
หากต้องการย่อ Dynamic Link แบบยาว ให้ระบุ URL ของ Dynamic Link โดยใช้
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 // ... } } });
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 // ... }
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2022-08-09 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"ไม่มีข้อมูลที่ฉันต้องการ" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป" },{ "type": "thumb-down", "id": "outOfDate", "label":"ล้าสมัย" },{ "type": "thumb-down", "id": "translationIssue", "label":"ปัญหาเกี่ยวกับการแปล" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด" },{ "type": "thumb-down", "id": "otherDown", "label":"อื่นๆ" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"เข้าใจง่าย" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"แก้ปัญหาของฉันได้" },{ "type": "thumb-up", "id": "otherUp", "label":"อื่นๆ" }]