คุณสร้างลิงก์แบบไดนามิกแบบสั้นหรือแบบยาวได้ด้วย Firebase Dynamic Links Builder API API นี้ยอมรับลิงก์แบบไดนามิกแบบยาวหรือออบเจ็กต์ที่มีพารามิเตอร์ลิงก์แบบไดนามิก และแสดงผล URL เหมือนตัวอย่างต่อไปนี้
https://example.com/link/WXYZ https://example.page.link/WXYZ
ตั้งค่า Firebase และ Dynamic Links SDK
คุณต้องใส่ Firebase SDK ก่อนจึงจะสร้างลิงก์แบบไดนามิกในแอป Android ได้ หากตั้งค่าแอปให้รับลิงก์แบบไดนามิก แสดงว่าคุณดำเนินการตามขั้นตอนเหล่านี้เสร็จแล้วและข้ามส่วนนี้ได้
เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้ทำ
เมื่อคุณลงทะเบียนแอป ให้ระบุคีย์ SHA-1 Signing หากคุณใช้ 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.2")) // 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.2' }
- ในคอนโซล Firebase ให้เปิดส่วนลิงก์แบบไดนามิก
-
หากยังไม่ได้ยอมรับข้อกำหนดในการให้บริการและตั้งค่าโดเมนสำหรับลิงก์แบบไดนามิก ให้ดำเนินการเมื่อได้รับข้อความแจ้ง
หากคุณมีโดเมนลิงก์แบบไดนามิกอยู่แล้ว โปรดสังเกตข้อมูลนี้ คุณต้องระบุโดเมนลิงก์แบบไดนามิกเมื่อสร้างลิงก์แบบไดนามิกแบบเป็นโปรแกรม
- แนะนำ: ระบุรูปแบบ URL ที่อนุญาตใน Deep Link และลิงก์สำรอง การทำเช่นนี้จะเป็นการป้องกันไม่ให้ผู้ที่ไม่ได้รับอนุญาตสร้างลิงก์แบบไดนามิกที่เปลี่ยนเส้นทางจากโดเมนของคุณไปยังเว็บไซต์ที่คุณควบคุม โปรดดูอนุญาตรูปแบบ URL ที่เจาะจง
ใช้คอนโซล Firebase
หากคุณต้องการสร้างลิงก์แบบไดนามิกเพียงลิงก์เดียวสำหรับการทดสอบหรือสำหรับให้ทีมการตลาดสร้างลิงก์ที่ใช้ในโพสต์โซเชียลมีเดียได้อย่างง่ายดาย วิธีที่ง่ายที่สุดคือไปที่คอนโซล Firebase และสร้างด้วยตนเองตามแบบฟอร์มทีละขั้นตอน
สร้างลิงก์แบบไดนามิกจากพารามิเตอร์
หากต้องการสร้างลิงก์แบบไดนามิก ให้สร้างออบเจ็กต์ DynamicLink
ใหม่ด้วย Builder ซึ่งระบุพารามิเตอร์ลิงก์แบบไดนามิกด้วยเมธอดของ 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 ตัว ซึ่งทำให้ไม่มีใครคาดเดาลิงก์แบบไดนามิกที่ถูกต้องได้ หากสำหรับกรณีการใช้งานของคุณ การเดาลิงก์แบบสั้นได้สำเร็จ คุณอาจอยากสร้างคำต่อท้ายที่มีความยาวเท่าที่จำเป็นและไม่ซ้ำ ซึ่งทำได้โดยการส่ง 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()
คุณสามารถตั้งค่าพารามิเตอร์ลิงก์แบบไดนามิกด้วยวิธีต่อไปนี้
พารามิเตอร์ DynamicLink | |
---|---|
ตั้งค่าลิงก์ |
ลิงก์ที่แอปของคุณจะเปิดขึ้น ระบุ URL ที่แอปของคุณจัดการได้ ซึ่งมักจะเป็นเนื้อหาหรือเพย์โหลดของแอป ซึ่งจะเริ่มต้นตรรกะเฉพาะแอป (เช่น ให้เครดิตผู้ใช้ด้วยคูปองหรือแสดงหน้าจอต้อนรับ) ลิงก์นี้ต้องเป็น URL ที่มีรูปแบบเหมาะสม มีการเข้ารหัส URL อย่างถูกต้อง ใช้ HTTP หรือ HTTPS และไม่ใช่ลิงก์แบบไดนามิกอื่น |
setDomainUriPrefix | คำนำหน้า URL ของลิงก์แบบไดนามิก ซึ่งดูได้ในคอนโซล Firebase โดเมนลิงก์แบบไดนามิกมีหน้าตาดังตัวอย่างต่อไปนี้
https://example.com/link https://example.page.link |
พารามิเตอร์ Android | |
---|---|
setFallbackUrl | ลิงก์ที่จะเปิดเมื่อไม่ได้ติดตั้งแอป โดยให้ระบุการดำเนินการนี้เพื่อดำเนินการอื่นที่ไม่ใช่การติดตั้งแอปจาก Play Store เมื่อไม่ได้ติดตั้งแอปดังกล่าว เช่น เปิดเนื้อหาเวอร์ชันเว็บบนอุปกรณ์เคลื่อนที่ หรือแสดงหน้าโปรโมตสำหรับแอป |
ตั้งค่าเวอร์ชันขั้นต่ำ | versionCode ของแอปเวอร์ชันขั้นต่ำที่สามารถเปิดลิงก์ได้ หากแอปที่ติดตั้งเป็นเวอร์ชันเก่า ระบบจะนำผู้ใช้ไปที่ Play Store เพื่ออัปเกรดแอป |
พารามิเตอร์ iOS | |
---|---|
ตั้งรหัส App Store | รหัส App Store ของแอปซึ่งใช้เพื่อส่งผู้ใช้ไปยัง App Store เมื่อไม่ได้ติดตั้งแอป |
setFallbackUrl | ลิงก์ที่จะเปิดเมื่อไม่ได้ติดตั้งแอป ระบุสิ่งนี้เพื่อดำเนินการอื่นนอกเหนือจากการติดตั้งแอปจาก App Store เมื่อไม่มีการติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บบนอุปกรณ์เคลื่อนที่ หรือแสดงหน้าโปรโมตสำหรับแอป |
ตั้งค่ารูปแบบที่กำหนดเอง | ชุดรูปแบบ URL ที่กำหนดเองของแอป หากกำหนดให้เป็นรูปแบบอื่นที่ไม่ใช่รหัสชุดของแอป |
setIpadFallbackUrl | ลิงก์ที่จะเปิดใน iPad เมื่อไม่ได้ติดตั้งแอป ระบุสิ่งนี้เพื่อดำเนินการอื่นนอกเหนือจากการติดตั้งแอปจาก App Store เมื่อไม่มีการติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บ หรือแสดงหน้าโปรโมชันสำหรับแอป |
รหัสชุด iPad | รหัสชุดของแอป iOS ที่จะใช้ใน iPad เพื่อเปิดลิงก์ โดยแอปต้องเชื่อมต่อกับโปรเจ็กต์จากหน้าภาพรวมของคอนโซล Firebase |
ตั้งค่าเวอร์ชันขั้นต่ำ | หมายเลขเวอร์ชันของแอปเวอร์ชันขั้นต่ำที่สามารถเปิดลิงก์ได้ ระบบจะส่งแฟล็กนี้ไปยังแอปของคุณเมื่อมีการเปิดแอป และแอปจะต้องตัดสินใจว่าจะทำอย่างไรกับการแจ้งเตือนดังกล่าว |
NavigationInfoParameters | |
---|---|
setForcedRedirectEnabled | หากตั้งค่าเป็น "1" ให้ข้ามหน้าตัวอย่างแอปเมื่อเปิดลิงก์แบบไดนามิก และเปลี่ยนเส้นทางไปยังแอปหรือ Store แทน หน้าตัวอย่างแอป (เปิดใช้โดยค่าเริ่มต้น) จะส่งผู้ใช้ไปยังปลายทางที่เหมาะสมที่สุดได้อย่างน่าเชื่อถือมากขึ้นเมื่อเปิดลิงก์แบบไดนามิกในแอป อย่างไรก็ตาม หากคุณคาดว่าลิงก์แบบไดนามิกจะเปิดเฉพาะในแอปที่เปิดลิงก์แบบไดนามิกได้อย่างน่าเชื่อถือโดยไม่ต้องใช้หน้านี้ คุณก็ปิดใช้ได้ด้วยพารามิเตอร์นี้ พารามิเตอร์นี้จะส่งผลต่อลักษณะการทำงานของลิงก์แบบไดนามิกบน iOS เท่านั้น |
พารามิเตอร์เมตาแท็กโซเชียล | |
---|---|
ตั้งชื่อ | ชื่อที่จะใช้เมื่อแชร์ลิงก์แบบไดนามิกในโพสต์บนโซเชียลเน็ตเวิร์ก |
คำอธิบายชุด | คำอธิบายที่จะใช้เมื่อแชร์ลิงก์แบบไดนามิกในโพสต์บนโซเชียลเน็ตเวิร์ก |
URL ตั้งรูปภาพ | URL ไปยังรูปภาพที่เกี่ยวข้องกับลิงก์นี้ รูปภาพควรมีขนาดอย่างน้อย 300x200 พิกเซล และเล็กกว่า 300 KB |
พารามิเตอร์ Google Analytics | |
---|---|
setSource setMedium setCampaign setTerm setContent |
พารามิเตอร์ Analytics ของ 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 // ... } } });