Firebase Dynamic Links คือบริการของ Google สำหรับสร้างลิงก์อัจฉริยะที่นำผู้ใช้ไปยังตำแหน่งที่ถูกต้องในแอปพลิเคชัน ไม่ว่าแอปพลิเคชันจะถูกติดตั้งหรือไม่ก็ตาม ตาม เอกสาร Firebase Dynamic Links จะเปลี่ยนเส้นทางผู้ใช้ไปยัง App Store หรือ Google Play โดยอัตโนมัติหากไม่ได้ติดตั้งแอปพลิเคชัน และกู้คืนบริบทการเปลี่ยนเส้นทางหลังจากติดตั้งแล้ว ลิงก์อัจฉริยะ ของ Firebase แก้ปัญหา URL Scheme ซึ่งไม่ทำงานกับแอปพลิเคชันที่ไม่ได้ติดตั้ง
ประเด็นสำคัญ
Firebase Dynamic Links คือบริการคลาวด์จาก Google ที่สร้างลิงก์สากลแบบรวมสำหรับแอปมือถือบน iOS และ Android ลิงก์ไดนามิกประกอบด้วย deep link ไปยังเนื้อหาภายในแอป แต่ทำงานเหมือนลิงก์ HTTPS ทั่วไป: หากติดตั้งแอปแล้ว จะเปิดโดยตรง หากไม่ได้ติดตั้ง จะเปลี่ยนเส้นทางไปยังร้านค้าแอป
ต่างจาก URL Scheme ทั่วไป Dynamic Links สามารถทำงานกับแอปที่ไม่ได้ติดตั้งได้ด้วยเทคโนโลยี deferred deep link เมื่อผู้ใช้ติดตั้งแอปหลังจากคลิกลิงก์ Firebase จะบันทึกพารามิเตอร์การเปลี่ยนเส้นทางและส่งต่อในการเปิดครั้งแรก ซึ่งเปิดโอกาสสำหรับโปรแกรมแนะนำ แคมเปญการตลาด และคำเชิญ
URL Scheme ต้องการให้ติดตั้งแอปและไม่มีกลไกสำรองมาตรฐาน Firebase Dynamic Links แก้ปัญหานี้ผ่านบริการเว็บกลางของ Firebase ซึ่งกำหนดสถานะการติดตั้งแอปบนอุปกรณ์และนำทางผู้ใช้อย่างถูกต้อง ในขณะเดียวกัน ลิงก์เดียวทำงานเหมือนกันบนทั้งสองแพลตฟอร์ม
Firebase Dynamic Link ใช้โดเมนเช่น yourcode.page.link ซึ่งลงทะเบียนใน Firebase Console เมื่อผู้ใช้คลิกที่ลิงก์ดังกล่าว Firebase จะกำหนดประเภทอุปกรณ์และสถานะการติดตั้งแอป สำหรับ iOS จะใช้กลไก Universal Links สำหรับ Android จะใช้ App Links พร้อมการยืนยันอัตโนมัติผ่าน Digital Asset Links
กระบวนการประมวลผลประกอบด้วยหลายขั้นตอนต่อเนื่อง: เมื่อคลิกลิงก์ เบราว์เซอร์ส่งคำขอ GET ไปยังเซิร์ฟเวอร์ Firebase เซิร์ฟเวอร์กำหนดแพลตฟอร์มและตรวจสอบการมีอยู่ของแอปบนอุปกรณ์ หากติดตั้งแอปแล้ว จะสร้างการเปลี่ยนเส้นทางไปยัง Universal Link หรือ Intent พร้อมพารามิเตอร์เพื่อเปิดหน้าจอเป้าหมาย หากไม่ได้ติดตั้งแอป จะเปลี่ยนเส้นทางไปยัง App Store หรือ Google Play เพื่อดาวน์โหลด
แอปได้รับลิงก์ระหว่างการเริ่มต้น Firebase SDK เมธอด getDynamicLink() ส่งคืน PendingResult พร้อมข้อมูลการเปลี่ยนเส้นทาง หลังจากดึงข้อมูลสำเร็จ จะแยกพารามิเตอร์ deep link แท็ก UTM สำหรับการวิเคราะห์ และข้อมูลที่กำหนดเองที่ส่งตอนสร้างลิงก์
Firebase Console มีอินเทอร์เฟสภาพสำหรับสร้าง Dynamic Links นักพัฒนาระบุ URL deep link ชื่อแคมเปญ การตั้งค่าสำหรับ iOS และ Android แยกกัน รวมถึงพารามิเตอร์การวิเคราะห์ หลังจากสร้าง Firebase จะสร้างลิงก์สั้น เช่น https://yourcode.page.link/abc123 ซึ่งสามารถใช้ในสื่อโฆษณา แคมเปญอีเมล และโซเชียลเน็ตเวิร์ก
สำหรับการสร้าง Dynamic Links ด้วยโปรแกรม จะใช้ Firebase REST API หรือ SDK ของไคลเอ็นต์ REST API อนุญาตให้สร้างลิงก์จำนวนมากสำหรับแคมเปญการตลาดด้วยพารามิเตอร์ที่กำหนดเอง รวมถึงลิงก์สำหรับโซเชียลเน็ตเวิร์กและการวิเคราะห์การคลิกแบบอะซิงโครนัส เมื่อสร้างลิงก์ผ่าน API สิ่งสำคัญคือต้องระบุพารามิเตอร์ socialMetaTagInfo อย่างถูกต้อง — พารามิเตอร์เหล่านี้กำหนดว่าลิงก์จะแสดงอย่างไรเมื่อแชร์ในแอปส่งข้อความและโซเชียลเน็ตเวิร์กพร้อมการ์ดตัวอย่าง
| พารามิเตอร์ | วัตถุประสงค์ | บังคับ |
|---|---|---|
| Deep Link URL | ลิงก์ภายในไปยังเนื้อหาแอป | ใช่ |
| iOS Bundle ID | ตัวระบุแอปใน App Store | สำหรับ iOS |
| Android Package Name | ชื่อแพ็กเกจใน Google Play | สำหรับ Android |
| Fallback URL | หน้าเว็บหากไม่มีแอป | ไม่ |
| แท็ก UTM | พารามิเตอร์สำหรับ Google Analytics | ไม่ |
ในการทำงานกับ Firebase Dynamic Links บน iOS จำเป็นต้องรวม Firebase SDK ผ่าน CocoaPods หรือ Swift Package Manager กำหนดค่า Info.plist ด้วย GOOGLE_APP_ID และลงทะเบียนโดเมน Dynamic Links ใน Associated Domains ของโครงการ หลังจากนั้น แอปจะจัดการ Universal Links ที่สร้างโดย Firebase โดยอัตโนมัติ
ใน Xcode จำเป็นต้องเพิ่มความสามารถ Associated Domains ด้วยรายการเช่น applinks:yourcode.page.link Firebase SDK ใช้เมธอด application(_:continue:restorationHandler:) สำหรับจัดการ Universal Links ดังนั้นจึงไม่จำเป็นต้องรวมเพิ่มเติมกับ AppDelegate — Firebase จะแยกพารามิเตอร์ Dynamic Link จาก User Activity โดยอัตโนมัติ
ตัวอย่างการกำหนดค่า Info.plist สำหรับการเริ่มต้น Firebase ที่ถูกต้องและการลงทะเบียนตัวจัดการ Dynamic Links คีย์ FIROptions ควรมีตัวระบุโครงการจาก GoogleService-Info.plist
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
หากพร็อกซี AppDelegate ถูกปิดใช้งาน ต้องเรียกเมธอด handleUniversalLink(_:) ด้วยตนเองและส่ง User Activity จาก continue NSUserActivity Firebase SDK จะแยกพารามิเตอร์ลิงก์โดยอัตโนมัติและส่งคืน DynamicLink ผ่าน completion handler
บน Android การรวม Firebase Dynamic Links เริ่มต้นด้วยการเพิ่ม dependencies ใน build.gradle และไฟล์ google-services.json จาก Firebase Console โดเมน Dynamic Links ถูกลงทะเบียนใน Firebase Console หลังจากนั้นลิงก์ทั้งหมดที่มีโดเมนนี้จะถูกรับรู้โดยอัตโนมัติโดยแอป Android ผ่าน Intent Filter ด้วย action VIEW สำหรับการทำงานที่ถูกต้อง ต้องเพิ่มปลั๊กอิน Google Services ใน build.gradle หลักและโมดูล และทำการซิงค์ Gradle
เพื่อจัดการลิงก์อย่างถูกต้องบน Android ต้องเพิ่ม Intent Filter สำหรับโดเมน Dynamic Links ใน Activity ที่ควรรับลิงก์ขาเข้า ตัวกรองต้องมี schema https โฮสต์โดเมน Dynamic Links ของคุณ และเส้นทางเริ่มต้น
ตัวอย่าง Intent Filter ใน AndroidManifest.xml สำหรับรับ Dynamic Links บนโดเมน yourcode.page.link
<activity android:name=".MainActivity"
android:launchMode="singleTask">
<intent-filter
android:autoVerify="true">
<action
android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<category
android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="yourcode.page.link" />
</intent-filter>
</activity>
สิ่งสำคัญคือต้องตั้งค่า launchMode เป็น singleTask สำหรับ Activity ที่รับ Dynamic Links ซึ่งป้องกันการสร้างอินสแตนซ์ Activity ใหม่เมื่อคลิกลิงก์ซ้ำ และอนุญาตให้จัดการ deep link ขาเข้าทั้งหมดในอินสแตนซ์เดียว
Firebase SDK สำหรับ Android มีเมธอด FirebaseDynamicLinks.getInstance().getDynamicLink(intent) ซึ่งส่งคืนอ็อบเจกต์ PendingTask พร้อมข้อมูลลิงก์ จากอ็อบเจกต์ DynamicLink จะถูกแยก URI ลึก พารามิเตอร์ UTM และประทับเวลาการเปลี่ยนเส้นทาง แนะนำให้ดำเนินการประมวลผลในเมธอด onCreate() และ onNewIntent() ของ Activity
เมื่อประมวลผล สิ่งสำคัญคือต้องพิจารณาว่า Dynamic Link สามารถรับได้ทั้งเมื่อเริ่มแอปจากสถานะเย็น (cold start) และเมื่อเปลี่ยนจากแอปอื่นไปยังแอปที่กำลังทำงานอยู่ สำหรับกรณีที่สอง ต้องแทนที่ onNewIntent() และเรียกการตรวจสอบ Dynamic Link อีกครั้ง
ตัวอย่างการรับและจัดการ Firebase Dynamic Link ใน MainActivity โค้ดจัดการทั้ง cold start และการเปลี่ยนจากแอปอื่น
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
checkDynamicLink(intent)
}
private fun checkDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deepLink = link?.link.toString()
handleDeepLink(deepLink)
}
}
}
เมธอด addOnSuccessListener ส่งคืน DynamicLink ซึ่งลิงก์เป้าหมายถูกแยกผ่าน link?.link หาก listener ส่งคืน null หมายความว่า Intent ไม่มี Dynamic Link — นี่คือการเริ่มแอปปกติโดยไม่มีลิงก์ขาเข้า แท็ก UTM สำหรับการวิเคราะห์การคลิกก็พร้อมใช้งานเช่นกัน รวมถึง campaign, medium, source และ content ซึ่งสามารถส่งไปยัง Google Analytics เพื่อประเมินประสิทธิภาพของแต่ละช่องทางการตลาดอย่างละเอียด
คำถามที่พบบ่อย
Firebase Dynamic Links รองรับ deferred deep link — ลิงก์รักษาบริบทไว้แม้ว่าแอปจะไม่ได้ติดตั้ง หลังจากติดตั้งแล้ว แอปจะได้รับพารามิเตอร์การเปลี่ยนเส้นทางทั้งหมด ซึ่งเป็นไปไม่ได้กับ URL Scheme หรือ Universal Links ทั่วไป
Firebase Dynamic Links รวมอยู่ในแผนราคาฟรี Firebase Spark ไม่มีข้อจำกัดเกี่ยวกับจำนวนลิงก์ที่สามารถสร้างได้ อย่างไรก็ตาม ตั้งแต่ปี 2024 Google ได้ประกาศเปลี่ยนไปใช้โครงสร้างพื้นฐานใหม่ ดังนั้นเงื่อนไขอาจเปลี่ยนแปลง
Dynamic Links ออกแบบมาสำหรับ แอปพลิเคชันมือถือ เมื่อคลิกลิงก์จากเว็บเบราว์เซอร์บนเดสก์ท็อป จะเปิด URL สำรอง สำหรับเว็บแอปพลิเคชัน ให้ใช้ลิงก์ปกติหรือตรรกะการเปลี่ยนเส้นทางของคุณเอง
Firebase Console มีปุ่ม Test Dynamic Link สำหรับดูตัวอย่างพฤติกรรม คุณยังสามารถใช้โปรแกรมจำลอง Android หรือเครื่องจำลอง iOS ที่ติดตั้ง Firebase SDK เพื่อทดสอบสถานการณ์การเปลี่ยนเส้นทางทั้งหมดในเครื่อง
ลิงก์สั้นของ Firebase Dynamic Link ประกอบด้วยโดเมน page.link และส่วนต่อท้ายแบบสุ่มยาวประมาณ 7 ตัวอักษร ความยาวรวมประมาณ 30 ตัวอักษร Deep link ภายในสามารถมีความยาวเท่าใดก็ได้ แต่แนะนำให้จำกัดไว้ที่ 2 KB เพื่อความเข้ากันได้
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม