Firebase Dynamic Links คือบริการของ Google สำหรับสร้างลิงก์อัจฉริยะที่นำผู้ใช้ไปยังตำแหน่งที่ถูกต้องภายในแอปมือถือหรือเว็บไซต์ ขึ้นอยู่กับว่าแอปได้รับการติดตั้งบนอุปกรณ์หรือไม่ Dynamic Links จะรักษาบริบทการเปลี่ยนผ่านแม้ในครั้งแรกที่เปิดใช้หลังจากการติดตั้งจากร้านค้าแอป ตาม เอกสาร Firebase, 2026 ลิงก์ไดนามิก จะถูกประมวลผลใน API เดียวที่กำหนดลักษณะการทำงานโดยอัตโนมัติ: เปิดแอป ไปที่เว็บไซต์ หรือติดตั้งแอป บริการนี้ขาดไม่ได้สำหรับโปรแกรมอ้างอิง สถานการณ์การเริ่มต้นใช้งาน และแคมเปญการตลาด
ประเด็นสำคัญ
Firebase Dynamic Links คือเทคโนโลยีของ Google ที่สร้างลิงก์เดียวที่นำไปยังเนื้อหาที่ต้องการในแอปมือถือหรือเว็บไซต์ โดยปรับพฤติกรรมตามแพลตฟอร์มและสถานะการติดตั้ง ลิงก์จะตรวจสอบว่าแอปได้รับการติดตั้งบนอุปกรณ์หรือไม่: ถ้าติดตั้ง — จะเปิดแอปพร้อมส่งผ่านพารามิเตอร์ ถ้าไม่ได้ติดตั้ง — จะเปลี่ยนเส้นทางไปยัง Google Play หรือ App Store เพื่อติดตั้ง และหลังการติดตั้งจะเปลี่ยนเส้นทางไปยังหน้าจอเป้าหมาย
ข้อได้เปรียบหลักของ Dynamic Links เหนือดีพลิงก์ทั่วไปคือการรองรับดีพลิงก์แบบเลื่อนเวลา Deferred Deep Linking หมายถึงบริบทการเปลี่ยนผ่าน (พารามิเตอร์ลิงก์) จะถูกเก็บรักษาไว้แม้ว่าแอปยังไม่ได้ติดตั้ง เมื่อผู้ใช้ติดตั้งแอปจากร้านค้า Dynamic Links SDK จะอ่านบริบทที่บันทึกไว้และส่งต่อไปยังหน้าจอที่ต้องการ หากไม่มีเทคโนโลยีนี้ ผู้ใช้จะมายังหน้าจอหลักหลังการติดตั้ง และสูญเสียรหัสโปรโมชั่น คำเชิญ หรือลิงก์ไปยังคำสั่งซื้อที่เฉพาะเจาะจง
Dynamic Links ถูกใช้ในโปรแกรมอ้างอิงเพื่อดึงดูดผู้ใช้ใหม่ด้วยการระบุแหล่งที่มาไปยังบัญชีของผู้เชิญ แคมเปญการตลาด ที่มีการเปลี่ยนผ่านจากจดหมายข่าวทางอีเมลและโซเชียลเน็ตเวิร์กใช้ Dynamic Links เพื่อการวัดConversionที่แม่นยำ ในสถานการณ์การเริ่มต้นใช้งาน ลิงก์จะนำผู้ใช้ใหม่ไปยังหน้าจอต้อนรับด้วยเนื้อหาที่ปรับเฉพาะบุคคล ในอีคอมเมิร์ซ ลิงก์สินค้าจะรักษาบริบทและนำไปยังหน้าสินค้าแม้ในครั้งแรกที่เปิดใช้หลังการติดตั้ง
กลไกการทำงานของ Dynamic Links ประกอบด้วยหลายขั้นตอน ซึ่งแต่ละขั้นตอนอาจแตกต่างกันไปตามสถานะของแอป เมื่อผู้ใช้คลิกลิงก์ไดนามิก เบราว์เซอร์จะส่งคำขอไปยังเซิร์ฟเวอร์ Firebase Firebase ตรวจสอบว่าแอปได้รับการติดตั้งหรือไม่ผ่านการตรวจสอบ intent-filter หรือ universal link ถ้าแอปติดตั้งแล้ว Firebase จะเปิดแอปพร้อมส่งผ่านดีพลิงก์ ถ้าไม่ได้ติดตั้ง — จะเปลี่ยนเส้นทางไปยังหน้าร้านค้าหรือเวอร์ชันเว็บ
Dynamic Link มาตรฐานประกอบด้วย URL พื้นฐาน พารามิเตอร์ลิงก์ และแท็กการตลาดที่ไม่บังคับ URL พื้นฐาน คือโดเมนเช่น your-app.page.link ที่ลงทะเบียนใน Firebase Console พารามิเตอร์ดีพลิงก์ถูกกำหนดผ่านพารามิเตอร์คำค้นหา: link (URL เป้าหมายภายในแอป), apn (ชื่อแพ็กเกจ Android), ibi (iOS Bundle ID), st และ sd (ชื่อเรื่องและคำอธิบายสำหรับตัวอย่างโซเชียล) แท็กการตลาด utm_source, utm_medium, utm_campaign จะถูกส่งไปยัง Google Analytics เพื่อการติดตาม
| พารามิเตอร์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| link | ดีพลิงก์เป้าหมาย | https://yourapp.page.link/product/123 |
| apn | ชื่อแพ็กเกจ Android | com.example.myapp |
| ibi | iOS Bundle ID | com.example.myapp.ios |
| st | ชื่อเรื่องโซเชียล | ข้อเสนอพิเศษ |
| sd | คำอธิบายโซเชียล | ส่วนลด 30% สำหรับคำสั่งซื้อแรก |
Firebase Console มีอินเทอร์เฟซแบบภาพสำหรับสร้าง Dynamic Links ในส่วน Engage > Dynamic Links ในคอนโซล คุณสามารถกำหนดพารามิเตอร์ลิงก์ทั้งหมด รวมถึงดีพลิงก์ พฤติกรรมบนเว็บ ข้อมูลเมตาโซเชียล และแท็ก UTM หลังจากสร้างลิงก์ คอนโซลจะให้ URL ที่พร้อมใช้งานพร้อมกับสถิติเกี่ยวกับคลิกและการเปลี่ยนผ่าน สำหรับการสร้างลิงก์จำนวนมาก ใช้ REST API ของ Firebase Dynamic Links ที่มีการรับรองความถูกต้อง OAuth 2.0
สำหรับการสร้าง Dynamic Links เชิงโปรแกรม จะส่งคำขอ POST ไปยัง Firebase Dynamic Links API เนื้อหาของคำขอประกอบด้วย dynamicLinkInfo พร้อมพารามิเตอร์ดีพลิงก์ การตั้งค่าแพลตฟอร์ม และข้อมูลเมตาโซเชียล API จะส่งคืน URL ที่พร้อมใช้งานเช่น https://your-app.page.link/abc123 สำหรับลิงก์ที่มีอายุยาว ใช้ suffix.option = UNIQUE — ลิงก์สั้นที่มีส่วนต่อท้ายไม่ซ้ำกัน สำหรับลิงก์ชั่วคราว — SHORT ที่อาจมีการชนกัน
const axios = require("axios")
const apiUrl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY"
const data = {
dynamicLinkInfo: {
domainUriPrefix: "https://yourapp.page.link",
link: "https://yourapp.com/promo/summer",
androidInfo: { androidPackageName: "com.example.myapp" },
iosInfo: { iosBundleId: "com.example.myapp.ios" },
socialMetaTagInfo: {
socialTitle: "โปรโมชั่นฤดูร้อน",
socialDescription: "ส่วนลดสูงสุด 50% จนถึงสิ้นเดือน"
}
},
suffix: { option: "UNIQUE" }
}
axios.post(apiUrl, data)
.then(res => console.log(res.data.shortLink))
.catch(err => console.error(err))
Dynamic Links จะสร้าง URL สั้นที่มีความยาว 6–8 ตัวอักษรหลังโดเมนโดยอัตโนมัติ ทำให้เหมาะสำหรับใช้ใน SMS และโซเชียลเน็ตเวิร์ก พารามิเตอร์ UTMจะถูกเพิ่มผ่านฟิลด์ utmParameters หรือโดยตรงในพารามิเตอร์ link Firebase จะเชื่อมโยงคลิกบน Dynamic Links กับ Google Analytics สำหรับ Firebase โดยอัตโนมัติ ช่วยให้คุณติดตามการเข้าชมจากการอ้างอิงและการระบุแหล่งที่มาของแคมเปญ
การตั้งค่า Dynamic Links ใน Androidรวมถึงการเพิ่ม Firebase SDK การกำหนดค่า intent-filter สำหรับ activity ที่รับดีพลิงก์ และการประมวลผลลิงก์ผ่าน Firebase Dynamic Links SDK หลังจากติดตั้ง SDK และเพิ่ม google-services.json คุณต้องลงทะเบียน activity ใน AndroidManifest.xml พร้อม intent-filter สำหรับประมวลผลลิงก์จากโดเมนของแอปของคุณ
Activity ที่ประมวลผล Dynamic Links ต้องมี intent-filter สำหรับการดำเนินการ VIEW และหมวดหมู่ DEFAULT และ BROWSABLE AndroidManifest.xmlรวมแท็ก data พร้อม android:scheme, android:host และ android:pathPrefix ที่ตรงกับดีพลิงก์ของคุณ สำหรับการประมวลผลลิงก์จากโดเมน page.link จะเพิ่ม intent-filter พร้อมสคีมา https และโฮสต์ของโดเมน Dynamic Links ของคุณ
<!-- AndroidManifest.xml -->
<activity android:name=".MainActivity">
<intent-filter>
<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="yourapp.com"
android:pathPrefix="/promo" />
</intent-filter>
</activity>
หลังจากตั้งค่า intent-filter คุณต้องประมวลผล Dynamic Link ที่เข้ามาในโค้ดของ Activity FirebaseDynamicLinks API จะรับลิงก์จาก intent และส่งคืนวัตถุ PendingDynamicLinkData พร้อมพารามิเตอร์ที่แยกออกมา เมธอด getLink จะส่งคืนดีพลิงก์เป้าหมาย ซึ่งสามารถแยกวิเคราะห์และใช้สำหรับการนำทาง สิ่งสำคัญคือต้องจัดการลิงก์ทั้งในกรณีสตาร์ทเย็น (ผ่าน getIntent ใน onCreate) และสตาร์ทร้อน (ผ่าน onNewIntent)
การตั้งค่า Dynamic Links ใน iOSต้องมีการกำหนดค่าทั้งในฝั่ง Firebase และในโปรเจกต์ Xcode คุณต้องอัปโหลดคีย์ APNs ไปยัง Firebase Console เพิ่ม Firebase SDK ผ่าน Swift Package Manager หรือ CocoaPods และกำหนดค่า App Delegate เพื่อจัดการ Universal Links Dynamic Links ใน iOS ใช้ Universal Links สำหรับการเปลี่ยนผ่านที่ราบรื่นระหว่างเบราว์เซอร์และแอปโดยไม่มีหน้าตัวกลาง
Universal Links คือเทคโนโลยีของ Apple ที่เชื่อมต่อโดเมนของคุณกับแอปมือถือ ไฟล์ apple-app-site-association (AASA) จะถูกอัปโหลดไปยังเซิร์ฟเวอร์ที่ https://your-app.page.link/apple-app-site-association Firebase จะสร้างและบำรุงรักษาไฟล์นี้โดยอัตโนมัติสำหรับโดเมน Dynamic Links ของคุณ ใน Xcode คุณต้องเปิดใช้งาน Associated Domains และระบุ applinks:your-app.page.link ในความสามารถของโปรเจกต์
สำหรับ iOS การประมวลผล Dynamic Links จะทำผ่าน Firebase SDK ใน App Delegate หรือ Scene Delegate เมธอด application:continueUserActivity: จะสกัดกั้น Universal Link ที่เข้ามาและส่งต่อไปยัง Firebase Dynamic Links API ซึ่งจะแยกลิงก์เป้าหมายและพารามิเตอร์ Firebase SDK จะจัดการ Deferred Deep Links โดยอัตโนมัติโดยขอข้อมูลการติดตั้งผ่านพื้นที่จัดเก็บระยะสั้นของ Firebase Installation API
import FirebaseDynamicLinks
class AppDelegate: UIApplicationDelegate {
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping
([UIUserActivityRestoring]?) -> Void
) -> Bool {
return DynamicLinks.dynamicLinks()
.handleUniversalLink(userActivity.webpageURL!) {
dynamicLink, error in
if let link = dynamicLink?.url {
self.handleDeepLink(link)
}
}
}
}
มาดูตัวอย่างที่สมบูรณ์ของการประมวลผล Dynamic Link ในแอป Android โดยใช้ Kotlin MainActivity จะอ่าน Dynamic Link ที่เข้ามาทั้งในกรณีสตาร์ทเย็นและสตาร์ทร้อนของแอป ลิงก์จะถูกแยกวิเคราะห์เป็นพารามิเตอร์ที่ใช้สำหรับการนำทางไปยังหน้าจอที่ต้องการพร้อมส่งผ่านอาร์กิวเมนต์ ตัวอย่างแสดงการประมวลผลลิงก์ไปยังหน้าโปรโมชันพร้อมตัวระบุแคมเปญโปรโมชัน
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
handleDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleDynamicLink(intent)
}
private fun handleDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener { data ->
val deepLink = data?.link ?: return@addOnSuccessListener
val promoId = deepLink
.getQueryParameter("promoId") ?: ""
if (promoId.isNotEmpty()) {
navigateToPromoScreen(promoId)
}
}
.addOnFailureListener { e ->
Log.e("DL", "ข้อผิดพลาดในการประมวลผลลิงก์", e)
}
}
}
สำหรับการทดสอบ Dynamic Links จะใช้ Firebase Console ซึ่งคุณสามารถสร้างลิงก์ทดสอบและส่งไปยังอุปกรณ์ผ่านแอปส่งข้อความหรืออีเมล ตัวดีบัก Firebase Dynamic Links พร้อมใช้งานที่ https://your-app.page.link/?d=1 และแสดงข้อมูลโดยละเอียดเกี่ยวกับพฤติกรรมของลิงก์ เมื่อทดสอบ Deferred Deep Links คุณต้องตรวจสอบให้แน่ใจว่าแอปถูกถอนการติดตั้ง และหลังการติดตั้งลิงก์นำไปยังหน้าจอที่ถูกต้องพร้อมพารามิเตอร์ที่ส่งผ่าน
คำถามที่พบบ่อย
ดีพลิงก์ทั่วไปทำงานเฉพาะเมื่อติดตั้งแอปแล้วและไม่รักษาบริบทหลังการติดตั้ง Dynamic Links รองรับ Deferred Deep Linking — ผู้ใช้ติดตั้งแอปและไปที่หน้าจอเป้าหมายทันทีพร้อมพารามิเตอร์ลิงก์ที่เก็บไว้
ไม่จำเป็นต้องใช้เซิร์ฟเวอร์สำหรับการสร้างและประมวลผลลิงก์ — การดำเนินการทั้งหมดทำผ่าน Firebase Console, REST API หรือ Firebase SDK ฝั่งไคลเอ็นต์ สำหรับการสร้างลิงก์จำนวนมาก แนะนำให้ใช้ REST API แต่คอนโซลเหมาะสำหรับการสร้างด้วยตนเอง
Dynamic Links ไม่มีวันหมดอายุ — ลิงก์จะถูกเก็บไว้ใน Firebase ตลอดไปเว้นแต่จะถูกลบด้วยตนเอง ลิงก์สั้นที่มีส่วนต่อท้าย UNIQUE จะมีอยู่ indefinitely ขอแนะนำให้สร้างลิงก์ที่ไม่ซ้ำกันสำหรับแต่ละแคมเปญเพื่อการระบุแหล่งที่มาที่แม่นยำ
การประมวลผล Dynamic Linkต้องใช้การเชื่อมต่ออินเทอร์เน็ตในขั้นตอนการคลิกเนื่องจากเซิร์ฟเวอร์ Firebase ตรวจสอบสถานะการติดตั้งแอป หลังจากประมวลผลลิงก์แล้ว ข้อมูลจะถูกส่งไปยังแอปผ่าน intent หรือ Universal Link และพร้อมใช้งานแม้ในโหมดออฟไลน์
Firebase Dynamic Links ฟรีในแผน Spark ในแผน Blaze มีขีดจำกัด 50,000 คลิกต่อวันต่อโปรเจกต์โดยไม่มีค่าใช้จ่ายเพิ่มเติม การเกินขีดจำกัดจะบล็อกการสร้างลิงก์ใหม่จนถึงวันถัดไป
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม