คุณสามารถสร้างลิงก์ไดนามิกแบบสั้นหรือยาวได้ด้วย Firebase Dynamic Links Builder API API นี้ยอมรับไดนามิกลิงก์แบบยาวหรือออบเจ็กต์ที่มีพารามิเตอร์ไดนามิกลิงก์ และส่งคืน URL ตามตัวอย่างต่อไปนี้:
https://example.com/link/WXYZ https://example.page.link/WXYZ
ตั้งค่า Firebase และ Dynamic Links SDK
ก่อนที่คุณจะสร้างลิงก์แบบไดนามิกในแอป Android ได้ คุณต้องรวม Firebase SDK ด้วย หากแอปของคุณได้รับการตั้งค่าให้รับลิงก์แบบไดนามิก แสดงว่าคุณได้ทำตามขั้นตอนเหล่านี้แล้ว และคุณสามารถข้ามส่วนนี้ได้
หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Android ของคุณ
เมื่อคุณลงทะเบียนแอป ให้ระบุคีย์การลงนาม SHA-1 ของคุณ หากคุณใช้ App Links ให้ระบุคีย์ SHA-256 ด้วย
ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) ให้เพิ่มการพึ่งพาสำหรับลิงก์แบบไดนามิก ไลบรารี่สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมเวอร์ชันไลบรารีเพื่อประสบการณ์การใช้งานลิงก์แบบไดนามิกที่ดีที่สุด เราขอแนะนำ ให้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase ของคุณ และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณ
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.6.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 เวอร์ชันที่เข้ากันได้เสมอ
กำลังมองหาโมดูลไลบรารีเฉพาะของ Kotlin อยู่ใช่ไหม? เริ่มตั้งแต่ เดือนตุลาคม 2023 (Firebase BoM 32.5.0) ทั้งนักพัฒนา Kotlin และ Java สามารถพึ่งพาโมดูลไลบรารีหลักได้ (สำหรับรายละเอียด โปรดดู คำถามที่พบบ่อยเกี่ยวกับโครงการริเริ่มนี้ )(ทางเลือก) เพิ่มการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM
หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการขึ้นต่อกัน
โปรดทราบว่าหากคุณใช้ไลบรารี 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:21.2.0' implementation 'com.google.firebase:firebase-analytics:21.5.0' }
- ในคอนโซล Firebase ให้เปิดส่วน ลิงก์แบบไดนามิก
หากคุณยังไม่ได้ยอมรับข้อกำหนดในการให้บริการและตั้งค่าโดเมนสำหรับลิงก์ไดนามิกของคุณ ให้ดำเนินการเมื่อได้รับแจ้ง
หากคุณมีโดเมน Dynamic Links อยู่แล้ว โปรดจดไว้ คุณต้องระบุโดเมนลิงก์แบบไดนามิกเมื่อคุณสร้างลิงก์แบบไดนามิกโดยทางโปรแกรม
- แนะนำ : ระบุรูปแบบ URL ที่อนุญาตในลิงก์ในรายละเอียดและลิงก์สำรองของคุณ การทำเช่นนี้จะเป็นการป้องกันไม่ให้บุคคลที่ไม่ได้รับอนุญาตสร้างลิงก์แบบไดนามิกที่เปลี่ยนเส้นทางจากโดเมนของคุณไปยังไซต์ที่คุณไม่ได้ควบคุม ดู อนุญาตรูปแบบ URL ที่เฉพาะเจาะจง
ใช้คอนโซล Firebase
หากคุณต้องการสร้างลิงก์ไดนามิกลิงก์เดียว ไม่ว่าจะเพื่อการทดสอบ หรือเพื่อให้ทีมการตลาดของคุณสร้างลิงก์ที่สามารถนำไปใช้ในโพสต์บนโซเชียลมีเดียได้อย่างง่ายดาย วิธีที่ง่ายที่สุดคือไปที่ คอนโซล Firebase และสร้างลิงก์ขึ้นมา ด้วยตนเองตามแบบฟอร์มทีละขั้นตอน
สร้างลิงก์แบบไดนามิกจากพารามิเตอร์
หากต้องการสร้างลิงก์แบบไดนามิก ให้สร้างออบเจ็กต์ DynamicLink
ใหม่ด้วยตัวสร้าง โดยระบุพารามิเตอร์ลิงก์แบบไดนามิกด้วยเมธอดตัวสร้าง จากนั้น เรียก buildDynamicLink
หรือ buildShortDynamicLink
ตัวอย่างขั้นต่ำต่อไปนี้จะสร้างลิงก์แบบไดนามิกแบบยาวไปยัง https://www.example.com/
ที่เปิดขึ้นพร้อมกับแอป Android ของคุณบน Android และแอป com.example.ios
บน 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();
หากต้องการสร้างไดนามิกลิงก์แบบสั้น ให้สร้าง DynamicLink
ด้วยวิธีเดียวกัน จากนั้นเรียก buildShortDynamicLink
การสร้างลิงก์แบบสั้นจำเป็นต้องมีการเรียกผ่านเครือข่าย ดังนั้นแทนที่จะส่งคืนลิงก์โดยตรง buildShortDynamicLink
จะส่งคืน Task
ซึ่งจะทำให้ลิงก์แบบสั้นพร้อมใช้งานเมื่อคำขอเสร็จสมบูรณ์ ตัวอย่างเช่น:
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 // ... } } });
ตามค่าเริ่มต้น ไดนามิกลิงก์แบบสั้นจะถูกสร้างขึ้นด้วยส่วนต่อท้ายลิงก์ 17 อักขระ ซึ่งทำให้ไม่น่าเป็นไปได้อย่างยิ่งที่ใครจะเดาไดนามิกลิงก์ที่ถูกต้องได้ สำหรับกรณีการใช้งานของคุณ ถ้าคนที่คาดเดาลิงก์แบบสั้นได้สำเร็จไม่เสียหาย คุณอาจต้องการสร้างส่วนต่อท้ายที่ยาวเท่าที่จำเป็นเท่านั้นเพื่อให้ไม่ซ้ำกัน ซึ่งคุณสามารถทำได้โดยส่ง ShortDynamicLink.Suffix.SHORT
ไปยังเมธอด buildShortDynamicLink
: :
Kotlin+KTX
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 เพื่อสร้างลิงก์แบบไดนามิกด้วยพารามิเตอร์ที่รองรับ ดู การอ้างอิง API สำหรับรายละเอียด
ตัวอย่างต่อไปนี้จะสร้างลิงก์แบบไดนามิกที่มีชุดพารามิเตอร์ทั่วไปหลายชุด:
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()
คุณสามารถตั้งค่าพารามิเตอร์ลิงก์แบบไดนามิกได้ด้วยวิธีต่อไปนี้:
พารามิเตอร์ไดนามิกลิงก์ | |
---|---|
เซ็ตลิงค์ | ลิงก์ที่แอปของคุณจะเปิดขึ้นมา ระบุ URL ที่แอปของคุณสามารถจัดการได้ ซึ่งโดยทั่วไปคือเนื้อหาหรือเพย์โหลดของแอป ซึ่งเริ่มต้นตรรกะเฉพาะของแอป (เช่น การให้เครดิตผู้ใช้ด้วยคูปองหรือการแสดงหน้าจอต้อนรับ) ลิงก์นี้ต้องเป็น URL ที่มีรูปแบบดี มีการเข้ารหัส URL อย่างเหมาะสม ใช้ HTTP หรือ HTTPS และไม่สามารถเป็นไดนามิกลิงก์อื่นได้ |
setDomainUriPrefix | คำนำหน้า URL ลิงก์แบบไดนามิกของคุณ ซึ่งคุณดูได้ในคอนโซล Firebase โดเมนลิงก์แบบไดนามิกมีลักษณะเหมือนตัวอย่างต่อไปนี้: https://example.com/link https://example.page.link |
พารามิเตอร์ Android | |
---|---|
setFallbackUrl | ลิงก์สำหรับเปิดเมื่อไม่ได้ติดตั้งแอป ระบุการดำเนินการนี้เพื่อทำอย่างอื่นนอกเหนือจากการติดตั้งแอปของคุณจาก Play Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บบนมือถือ หรือแสดงหน้าส่งเสริมการขายสำหรับแอปของคุณ |
ตั้งค่าเวอร์ชันขั้นต่ำ | versionCode ของเวอร์ชันขั้นต่ำของแอปที่สามารถเปิดลิงก์ได้ หากแอปที่ติดตั้งเป็นเวอร์ชันเก่า ผู้ใช้จะถูกพาไปที่ Play Store เพื่ออัปเกรดแอป |
พารามิเตอร์ iOS | |
---|---|
setAppStoreId | รหัส App Store ของแอปของคุณ ซึ่งใช้เพื่อส่งผู้ใช้ไปยัง App Store เมื่อไม่ได้ติดตั้งแอป |
setFallbackUrl | ลิงก์สำหรับเปิดเมื่อไม่ได้ติดตั้งแอป ระบุการดำเนินการนี้เพื่อทำอย่างอื่นนอกเหนือจากการติดตั้งแอปของคุณจาก App Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บบนมือถือ หรือแสดงหน้าส่งเสริมการขายสำหรับแอปของคุณ |
ตั้งค่า CustomScheme | Scheme URL ที่กำหนดเองของแอป หากกำหนดให้เป็นสิ่งอื่นที่ไม่ใช่รหัสชุดของแอป |
setIpadFallbackUrl | ลิงก์สำหรับเปิดบน iPad เมื่อไม่ได้ติดตั้งแอป ระบุการดำเนินการนี้เพื่อทำอย่างอื่นนอกเหนือจากการติดตั้งแอปของคุณจาก App Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บ หรือแสดงหน้าส่งเสริมการขายสำหรับแอปของคุณ |
setIpadBundleId | ID ชุดของแอพ iOS ที่จะใช้บน iPad เพื่อเปิดลิงก์ แอปจะต้องเชื่อมต่อกับโปรเจ็กต์ของคุณจากหน้าภาพรวมของคอนโซล Firebase |
ตั้งค่าเวอร์ชันขั้นต่ำ | หมายเลขเวอร์ชัน ของเวอร์ชันขั้นต่ำของแอปที่สามารถเปิดลิงก์ได้ ธงนี้จะถูกส่งต่อไปยังแอปของคุณเมื่อเปิดขึ้นมา และแอปของคุณจะต้องตัดสินใจว่าจะทำอย่างไรกับแอปนั้น |
ข้อมูลการนำทางพารามิเตอร์ | |
---|---|
setForcedRedirectEnabled | หากตั้งค่าเป็น '1' ให้ข้ามหน้าแสดงตัวอย่างแอปเมื่อเปิดลิงก์ไดนามิก และเปลี่ยนเส้นทางไปยังแอปหรือร้านค้าแทน หน้าแสดงตัวอย่างแอป (เปิดใช้งานโดยค่าเริ่มต้น) สามารถส่งผู้ใช้ไปยังปลายทางที่เหมาะสมที่สุดได้อย่างน่าเชื่อถือมากขึ้นเมื่อเปิดลิงก์แบบไดนามิกในแอป อย่างไรก็ตาม หากคุณคาดว่าไดนามิกลิงก์จะเปิดได้เฉพาะในแอปที่สามารถเปิดไดนามิกลิงก์ได้อย่างน่าเชื่อถือโดยไม่มีหน้านี้ คุณสามารถปิดใช้งานลิงก์ไดนามิกได้ด้วยพารามิเตอร์นี้ พารามิเตอร์นี้จะส่งผลต่อการทำงานของไดนามิกลิงก์บน iOS เท่านั้น |
พารามิเตอร์ SocialMetaTag | |
---|---|
ตั้งชื่อเรื่อง | ชื่อที่จะใช้เมื่อแชร์ไดนามิกลิงก์ในโพสต์โซเชียล |
คำอธิบายชุด | คำอธิบายที่จะใช้เมื่อมีการแชร์ลิงก์แบบไดนามิกในโพสต์โซเชียล |
setImageUrl | URL ไปยังรูปภาพที่เกี่ยวข้องกับลิงก์นี้ รูปภาพควรมีขนาดอย่างน้อย 300x200 พิกเซล และน้อยกว่า 300 KB |
พารามิเตอร์ Google Analytics | |
---|---|
ตั้งค่าแหล่งที่มา ตั้งปานกลาง ตั้งค่าแคมเปญ กำหนดระยะเวลา ตั้งค่าเนื้อหา | พารามิเตอร์การวิเคราะห์ของ Google Play พารามิเตอร์เหล่านี้ ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) จะถูกส่งต่อไปยัง Play Store รวมถึงต่อท้ายเพย์โหลดของลิงก์ |
iTunesConnectAnalyticsพารามิเตอร์ | |
---|---|
setProviderToken setAffiliateToken setCampaignToken | พารามิเตอร์การวิเคราะห์ของ iTunes Connect พารามิเตอร์เหล่านี้ ( pt , at , ct ) จะถูกส่งผ่านไปยัง App Store |
ย่อลิงก์ไดนามิกขนาดยาวให้สั้นลง
หากต้องการย่อลิงก์ไดนามิกขนาดยาวให้สั้นลง ให้ระบุ URL ของลิงก์ไดนามิกโดยใช้ setLongLink
แทนการตั้งค่าพารามิเตอร์ด้วยวิธีตัวสร้างอื่นๆ:
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 // ... } } });