คุณสร้างลิงก์แบบไดนามิกแบบสั้นหรือแบบยาวได้ด้วย API เครื่องมือสร้างลิงก์แบบไดนามิกของ Firebase API นี้ยอมรับลิงก์แบบไดนามิกแบบยาวหรือออบเจ็กต์ที่มีพารามิเตอร์ลิงก์แบบไดนามิกและแสดงผล URL ดังตัวอย่างต่อไปนี้
https://example.com/link/WXYZ https://example.page.link/WXYZ
ตั้งค่า Firebase และ Dynamic Links SDK
คุณต้องรวม Firebase SDK ก่อน จึงจะสร้างลิงก์แบบไดนามิกในแอป Android ได้ หากแอปของคุณตั้งค่าให้รับลิงก์แบบไดนามิก แสดงว่าคุณได้ทำตามขั้นตอนเหล่านี้แล้ว ก็สามารถข้ามส่วนนี้ได้
เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้ดำเนินการ
เมื่อคุณลงทะเบียนแอป ให้ระบุคีย์การลงนาม SHA-1 หากใช้ App Link ให้ระบุคีย์ SHA-256 ด้วย
-
ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติจะเป็น
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารีลิงก์แบบไดนามิกสำหรับ 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:33.1.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:22.0.1' }
- ในคอนโซล Firebase ให้เปิดส่วนลิงก์แบบไดนามิก
-
หากคุณยังไม่ได้ยอมรับข้อกำหนดในการให้บริการและตั้งค่าโดเมนสำหรับลิงก์แบบไดนามิก ให้ดำเนินการเมื่อได้รับแจ้ง
หากคุณมีโดเมนลิงก์แบบไดนามิกอยู่แล้ว ให้จดโดเมนดังกล่าวไว้ คุณต้องระบุโดเมนลิงก์แบบไดนามิกเมื่อสร้างลิงก์แบบไดนามิกแบบเป็นโปรแกรม
- แนะนำ: ระบุรูปแบบ URL ที่อนุญาตใน Deep Link และลิงก์สำรอง การดำเนินการนี้จะป้องกันไม่ให้ผู้ที่ไม่ได้รับอนุญาตสร้างลิงก์แบบไดนามิกที่เปลี่ยนเส้นทางจากโดเมนของคุณไปยังเว็บไซต์ที่คุณไม่ได้ควบคุม โปรดดูหัวข้ออนุญาตรูปแบบ URL ที่เจาะจง
ใช้คอนโซล Firebase
หากคุณต้องการสร้างลิงก์แบบไดนามิกเพียงลิงก์เดียว ทั้งเพื่อการทดสอบหรือเพื่อให้ทีมการตลาดสามารถสร้างลิงก์ที่ใช้เรียกง่ายๆ อย่างโพสต์โซเชียลมีเดีย วิธีที่ง่ายที่สุดคือไปที่คอนโซล Firebase แล้วสร้างลิงก์ด้วยตนเองตามแบบฟอร์มทีละขั้นตอน
สร้างลิงก์แบบไดนามิกจากพารามิเตอร์
หากต้องการสร้างลิงก์แบบไดนามิก ให้สร้างออบเจ็กต์ DynamicLink
ใหม่ด้วยเครื่องมือสร้าง โดยระบุพารามิเตอร์ลิงก์แบบไดนามิกด้วยเมธอด Builder จากนั้นโทรหา 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 อักขระ ทำให้มีโอกาสน้อยมากที่ผู้อื่นจะคาดเดาลิงก์แบบไดนามิกที่ถูกต้องได้ สำหรับ Use Case ของคุณ การคาดเดาลิงก์แบบสั้นสำเร็จนั้นไม่ก่อให้เกิดความเสียหายต่อกรณี คุณอาจต้องสร้างส่วนต่อท้ายโดยให้มีความยาวเท่าที่จำเป็นเพื่อให้ไม่ซ้ำกัน ซึ่งทำได้โดยการส่ง 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()
คุณตั้งค่าพารามิเตอร์ลิงก์แบบไดนามิกได้ด้วยวิธีต่อไปนี้
พารามิเตอร์ลิงก์แบบไดนามิก | |
---|---|
setLink |
ลิงก์ที่แอปของคุณจะเปิดขึ้น ระบุ URL ที่แอปของคุณสามารถจัดการได้ ซึ่งโดยทั่วไปจะเป็นเนื้อหาหรือเพย์โหลดของแอป ซึ่งจะเริ่มต้นตรรกะเฉพาะแอป (เช่น การให้เครดิตผู้ใช้ด้วยคูปองหรือการแสดงหน้าจอต้อนรับ) ลิงก์นี้ต้องเป็น URL ที่มีการจัดรูปแบบอย่างถูกต้อง มีการเข้ารหัส URL อย่างถูกต้อง ใช้ HTTP หรือ HTTPS และต้องไม่เป็นลิงก์แบบไดนามิกอื่น |
ตั้งค่าชื่อโดเมน UriPrefix | คำนำหน้า URL ของลิงก์แบบไดนามิก ซึ่งดูได้ในคอนโซล Firebase โดเมนของลิงก์แบบไดนามิกจะมีลักษณะดังตัวอย่างต่อไปนี้ https://example.com/link https://example.page.link |
พารามิเตอร์ Android | |
---|---|
setFallbackUrl | ลิงก์ที่จะเปิดเมื่อไม่ได้ติดตั้งแอปไว้ ระบุสิ่งนี้เพื่อดำเนินการอย่างอื่นนอกจากติดตั้งแอปจาก Play Store ตอนที่ไม่ได้ติดตั้งแอปไว้ เช่น เปิดเนื้อหาในเวอร์ชันเว็บบนอุปกรณ์เคลื่อนที่ หรือแสดงหน้าโปรโมชันสำหรับแอปของคุณ |
ตั้งค่าเวอร์ชันต่ำสุด | versionCode เวอร์ชันขั้นต่ำของแอปที่เปิดลิงก์ได้ หากแอปที่ติดตั้งเป็นเวอร์ชันเก่า ระบบจะนำผู้ใช้ไปที่ Play Store เพื่ออัปเกรดแอป |
พารามิเตอร์ iOS | |
---|---|
ตั้งค่ารหัสร้านค้าแอป | รหัส App Store ของแอป ซึ่งใช้เพื่อส่งผู้ใช้ไปยัง App Store เมื่อไม่ได้ติดตั้งแอป |
setFallbackUrl | ลิงก์ที่จะเปิดเมื่อไม่ได้ติดตั้งแอปไว้ ระบุสิ่งนี้เพื่อดำเนินการอย่างอื่นนอกจากติดตั้งแอปของคุณจาก App Store ตอนที่ไม่ได้ติดตั้งแอปไว้ เช่น เปิดเนื้อหาในเวอร์ชันเว็บบนอุปกรณ์เคลื่อนที่ หรือแสดงหน้าโปรโมชันสำหรับแอปของคุณ |
ตั้งค่ารูปแบบที่กำหนดเอง | รูปแบบ URL ที่กำหนดเองของแอป หากกำหนดให้เป็นอย่างอื่นที่ไม่ใช่รหัสชุดของแอป |
setIpadFallbackUrl | ลิงก์ที่จะเปิดใน iPad เมื่อไม่ได้ติดตั้งแอปไว้ ระบุสิ่งนี้เพื่อดำเนินการอย่างอื่นนอกเหนือจากการติดตั้งแอปจาก App Store ตอนที่ไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บ หรือแสดงหน้าโปรโมตสำหรับแอปของคุณ |
setIpadBundleId | รหัสชุดของแอป iOS ที่จะใช้ใน iPad เพื่อเปิดลิงก์ แอปต้องเชื่อมต่อกับโปรเจ็กต์จากหน้าภาพรวมของคอนโซล Firebase |
ตั้งค่าเวอร์ชันต่ำสุด | หมายเลขเวอร์ชันของแอปเวอร์ชันขั้นต่ำที่เปิดลิงก์ได้ ระบบจะส่งแฟล็กนี้ไปยังแอปของคุณเมื่อเปิด และแอปของคุณต้องตัดสินใจว่าจะดําเนินการอย่างไรกับแอปนั้น |
พารามิเตอร์ข้อมูลการนำทาง | |
---|---|
setForcedRedirectEnabled | หากตั้งค่าเป็น "1" ให้ข้ามหน้าตัวอย่างแอปเมื่อลิงก์แบบไดนามิกเปิดอยู่ และเปลี่ยนเส้นทางไปยังแอปหรือร้านค้าแทน หน้าตัวอย่างแอป (เปิดใช้โดยค่าเริ่มต้น) สามารถส่งผู้ใช้ไปยังปลายทางที่เหมาะสมที่สุดได้อย่างน่าเชื่อถือยิ่งขึ้นเมื่อเปิดลิงก์แบบไดนามิกในแอป อย่างไรก็ตาม หากคุณคาดว่าลิงก์แบบไดนามิกจะเปิดได้เฉพาะในแอปที่สามารถเปิดลิงก์แบบไดนามิกได้อย่างน่าเชื่อถือโดยไม่ต้องมีหน้านี้ ให้ปิดใช้งานด้วยพารามิเตอร์นี้ พารามิเตอร์นี้จะส่งผลต่อลักษณะการทำงานของลิงก์แบบไดนามิกใน iOS เท่านั้น |
พารามิเตอร์เมตาแท็กโซเชียล | |
---|---|
ตั้งชื่อ | ชื่อที่จะใช้เมื่อแชร์ลิงก์แบบไดนามิกในโพสต์บนโซเชียลเน็ตเวิร์ก |
setDescription | รายละเอียดที่จะใช้เมื่อแชร์ลิงก์แบบไดนามิกในโพสต์บนโซเชียลเน็ตเวิร์ก |
setImageUrl | URL ไปยังรูปภาพที่เกี่ยวข้องกับลิงก์นี้ รูปภาพควรมีขนาดอย่างน้อย 300x200 พิกเซลและเล็กกว่า 300 KB |
พารามิเตอร์ GoogleAnalytics | |
---|---|
setSource setMedium setCampaign setTerm setContent |
พารามิเตอร์การวิเคราะห์ Google Play ระบบจะส่งพารามิเตอร์เหล่านี้ (utm_source , utm_medium , utm_campaign , utm_term , utm_content ) ไปยัง Play Store และต่อท้ายเพย์โหลดของลิงก์
|
พารามิเตอร์ Analytics ของ ItunesConnect | |
---|---|
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 // ... } } });