Deferred Deep Link เป็นกลไกที่รักษาบริบทเป้าหมายของการเปลี่ยนแปลงไว้ แม้ว่าแอพจะยังไม่ได้ติดตั้งบนอุธกรณ์ของผู้ใช้ก็ตาม ตามแหล่งข้อมูลจาก Branch Resources หลังจากติดตั้งแอพ ระบบจะประมวลผลบริบทที่เก็บไว้โดยอัตโนมัติ และเปลี่ยนทิศทางผู้ใช้ไปยังหน้าจอเป้าหมาย Deferred Deep Link แก้ปัญหาหลักของ deep link ทั่วไป นั่นคือไม่สามารถทำงานกับแอพที่ไม่ได้ติดตั้ง
ประเด็นสำคัญ
Deferred Deep Link เป็น deep link ชนิดหนึ่งที่ทำงานสองขั้นตอน: ขั้นแรกผู้ใช้คลิกลิงก์ก่อนติดตั้งแอพ จากนั้นระบบจะคืนสภาพบริบทหลังจากการติดตั้งเสร็จสมบูรณ์ deep link ทั่วไปจะเปิดแอพเมื่อมันถูกติดตั้งแล้ว ในขณะที่ deferred จะบันทึกพารามิเตอร์การเปลี่ยนแปลงทั้งหมดและส่งต่อในการเริ่มต้นครั้งแรก
เทคโนโลยีนี้กลายเป็นที่ต้องการโดยเฉพาะการตลาดมือถือเติบโตขึ้น โครงการโฆษณามักเป้าหมายไปที่ผู้ใช้ที่ยังไม่ได้ติดตั้งแอพ หากไม่มี deferred deep link แต่ละการเปลี่ยนแปลงดังกล่าวจะจบลงด้วยการดาวน์โหลดแอพโดยไม่มีบริบทใดเลย — ผู้ใช้จะไปที่หน้าจอหลักแทนหน้าจอเป้าหมาย
deep link ทั่วไปเปิดเนื้อหาเป้าหมายในแอพที่ติดตั้งแล้ว หากแอพไม่ได้ติดตั้ง เบราว์เซอร์จะแสดงข้อผิดพลาด Deferred Deep Link ทำงานผ่านเซิร์ฟเวอร์กลางที่เปลี่ยนทิศทางผู้ใช้ไปยังร้านค้า และหลังจากติดตั้งจะแจ้งให้แอพทราบถึงพารามิเตอร์ที่เก็บไว้ ด้วยวิธีนี้ ลิงก์ deferred ไม่จำเป็นต้องติดตั้งแอพล่วงหน้าและให้การเดินทางของผู้ใช้แบบครบวงจากโฆษณาไปยังเนื้อหา
การประมวลผล deferred deep link ประกอบด้วยสามขั้นตอน ในขั้นตอนแรก ผู้ใช้คลิกลิงก์ — เซิร์ฟเวอร์จะพิจารณาว่าแอพถูกติดตั้งหรือไม่ หากไม่ได้ติดตั้ง เซิร์ฟเวอร์จะสร้างตัวระบุเซสชั่นที่ไม่ซ้ำกัน บันทึกพารามิเตอร์การเปลี่ยนแปลง และเปลี่ยนทิศทางผู้ใช้ไปยัง App Store หรือ Google Play พร้อมตัวระบุนี้
ในขั้นตอนที่สอง ผู้ใช้ติดตั้งแอพจากร้านค้า หลังจากติดตั้งและเริ่มต้นครั้งแรก SDK ของแพลตฟอร์มจะติดต่อเซิร์ฟเวอร์ ส่งตัวระบุอุปกรณ์ และรับพารามิเตอร์การเปลี่ยนแปลงที่เก็บไว้ ในขั้นตอนที่สาม แอพจะประมวลผลข้อมูลที่ได้รับและเปลี่ยนทิศทางผู้ใช้ไปยังหน้าจอเป้าหมายโดยอัตโนมัติ
เพื่อบันทึกพารามิเตอร์ระหว่างการคลิกลิงก์และการติดตั้ง จะใช้กลไกต่าง ๆ บน iOS คือ iCloud Keychain หรือคลิปบอร์ด บน Android คือ Install Referrer API Firebase Dynamic Links ใช้การผสมของ localStorage ของเบราว์เซอร์และลิงก์อ้างอิงของร้านค้าเพื่อส่งตัวระบุเซสชั่น Branch.io ใช้โปรโตคอลของตนเองพร้อมการสำรองข้อมูลในหลายที่เก็บข้อมูล
ใน iOS deferred deep link ถูกนำไปใช้โดยการผสมผสานระหว่าง Universal Links และ Shared Web Credentials เมื่อผู้ใช้คลิก Universal Link ไปที่เว็บไซต์ของแอพ Safari จะบันทึกพารามิเตอร์การเปลี่ยนแปลงไว้ใน iCloud Keychain ที่เชื่อมโยงกับโดเมนของแอพ หลังจากติดตั้งแอพจาก App Store iOS จะตรวจสอบข้อมูลที่เก็บไว้และส่งต่อให้แอพในการเริ่มต้นครั้งแรก
Apple ไม่มี API ในตัวสำหรับ deferred deep link — การนำไปใช้ขึ้นอยู่กับ SDK ของบุคคลที่สามอย่างสิ้นเชิง Firebase Dynamic Links ใช้กลไก passive deferred โดยข้อมูลจะถูกเก็บไว้ในคุกกี้ของเบราว์เซอร์และคืนสภาผ่านการเปลี่ยนทิศทางไปยัง URL พิเศษในการเริ่มต้นแอพครั้งแรก
เริ่มต้นแต่ iOS 14 Apple ได้เพิ่มความเขมงวดกำลังด้านความเป็นส่วนตัว ซึ่งส่งผลกระทบต่อกลไก deferred deep link คลิปบอร์ดไม่สามารถใช้อ่านข้อมูลได้อีกต่อไปโดยไม่ได้รับการอนุญาตแจ้งจากผู้ใช้ iCloud Keychain ก็มีข้อจำกัดด้านปริมาตรข้อมูล — ไม่เกิน 4 KB ต่อการเขียนหนึ่งครั้ง ซึ่งทำให้โซลูชันฝั่งเซิร์ฟเวอร์ที่มีตัวระบุเซสชั่นที่ไม่ซ้ำเป็นวิธีที่ต้องการในการส่งต่อบริบท
Android มอบตัวเลือกที่ยืดหยุ่นกว่าสำหรับ deferred deep link ผ่าน Install Referrer API เมื่อผู้ใช้คลิกลิงก์ไปที่ Google Play ร้านค้าจะบันทึก referrer — สตริงที่มีพารามิเตอร์การเปลี่ยนแปลง หลังจากติดตั้ง แอพจะรับสตริงนี้ผ่าน Install Referrer API และสกัดเอาบริบทเป้าหมายจากมัน นี่คือกลไก deferred deep link ที่น่าเชื่อถือที่สุดบน Android
สำหรับแอพที่แจกจ่ายนอก Google Play Android รองรับ BroadcastReceiver แบบอ้างอิง นักพัฒนาสามารถส่ง Intent ที่กำหนดเองพร้อมพารามิเตอร์หลังจากติดตั้ง และแอพจะรับมันผ่าน BroadcastReceiver ที่ลงทะเบียนไว้ในไฟล์ manifest อย่างไรก็ตาม กลไกนี้มีความน่าเชื่อถือน้อยกว่า เพราะขึ้นอยู่กับการนำไปใช้ของตัวติดตั้ง
Install Referrer API ให้ข้อมูลเกี่ยวกับแหล่งที่มาของการติดตั้ง รวมถึง URL ของ referrer เวลาคลิก และเวลาติดตั้ง ความยาวสูงสุดของสตริง referrer คือ 8 KB ซึ่งเพียงพอในการส่งต่อพารามิเตอร์ deep link ที่จำเป็นทั้งหมด API สามารถใช้ได้บนอุธกรณ์ที่มี Google Play Store เวอร์ชัน 8.3.73 ขึ้นไป และรองรับบน Android 5.0 (API 21)
Firebase Dynamic Links เป็นเครื่องมือฟรีที่ได้รับความนิยมมากที่สุดสำหรับใช้ deferred deep link บนทั้งสองแพลตฟอร์ม Firebase จัดการทุกขั้นตอนของการเปลี่ยนแปลง deferred โดยอัตโนมัติ: การเปลี่ยนทิศทางไปยังร้านค้าเมื่อไม่มีแอพ การเก็บพารามิเตอร์ไว้บนเซิร์ฟเวอร์ Firebase และการส่งต่อไปยัง SDK ในการเริ่มต้นแอพครั้งแรก
เพื่อนำไปใช้ เพียงผนวก Firebase SDK เข้าในโปรเจกต์ สร้าง Dynamic Link ผ่าน Firebase Console โดยระบุ deep link และพารามิเตอร์แคมเปญ์ Firebase SDK จะถูกเรียกโดยอัตโนมัติเมื่อเริ่มต้นแอพ และตรวจสอบ Dynamic Link ขาเข้าผ่านเมธอด getDynamicLink()
ตัวอย่างการประมวลผล Firebase Dynamic Link ใน Activity เป็น Kotlin โค้ดทำงานเหมือนกันสำหรับ zทั้ง cold start และ warm start เมื่อเริ่มต้นแอพ
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDeferredLink()
}
private fun checkDeferredLink() {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deferredLink = link?.link.toString()
if (deferredLink.isNotEmpty()) {
navigateToContent(deferredLink)
}
}
}
}
เมธอด getDynamicLink() จะส่งคืน PendingTask กับออบเจกต์ DynamicLink หากแอพถูกติดตั้งหลังจากคลิกลิงก์ listener จะได้รับข้อมูลพร้อมพารามิเตอร์ หากแอพถูกติดตั้งแล้วก่อนการเปลี่ยนแปลง เมธอดจะส่งคืนข้อมูลเดียวกับ deep link ทั่วไฟลาก minimumAppVersion ในพารามิเตอร์ลิงก์ช่วยให้สามารถตั้งเวอร์ชั่นขั้นต่ำของแอพสำหรับการประมวลผล
Deferred Deep Link ให้ข้อดีอย่างมากสำหรับแคมเปญ์การตลาด: ผู้ใช้ได้รับเนื้อหาเป้าหมายหลังจากติดตั้งโดยไม่ต้องทำสิ่งเพิ่มเติม ซึ่งเพิ่มอัตราการแปลงแปลงและการเก็บผู้ใช้ไว้ สำหรับโปรแกรมอ้างอิง ลิงก์ deferred ช่วยให้เชื่อมโยงคำเชิญกับการติดตั้งและการดำเนินการของผู้ใช้ใหม่ได้อย่างชัดเจน
อย่างไรก็ตาม เทคโนโลยีก็มีข้อจำกัด deferred deep link ไม่ทำงานในเบราว์เซอร์ที่บล็อกคุกกี้ของบุคคลที่สาม และบน iOS ตั้งแต่เวอร์ชั่น 14 ต้องการการตั้งค่าเพิ่มเติมสำหรับ iCloud Keychain นอกจากนี้ ระหว่างการคลิกลิงก์และการติดตั้งอาจเผ่าน หลายวัน และไม่ใช่ทุก SDK ที่รับประกันการเก็บข้อมูลไว้ในช่วงเวลานั้น
Deferred deep link จำเป็นสำหรับแคมเปญ์โฆษณาที่เป้าหมายไปที่ผู้ใช้ใหม่ จดหมายข่าวอีเมลพร้อมคำเชิญและโปรแกรมอ้างอิง สำหรับผู้ใช้ที่ติดตั้งแล้ว deep link ทั่วไปก็เพียงพอ หากแอพไม่ใช้แคมเปญ์การตลาดหรือกลไกการอ้างอิง ไม่จำเป็นต้องใช้ deferred deep link — Universal Links และ App Links ก็เพียงพอ
เมื่อเลือกวิธีการนำไปใช้ ให้พิจารณาถึง ต้นทุน: Firebase Dynamic Links ฟรีแต่มีการวิเคราะห์จำกัด Branch.io และ AppsFlyer ให้การแอททริบิวท์ขั้นสูงแต่ต้องมีค่าสมัคร สำหรับโปรเจกต์ขนาดเล็ก Firebase เป็นโซลูชันที่เหมาะสมที่สุด สำหรับองค์กรขนาดใหญ่ที่มีช่องโฆษณามาก MMP เชิงพาณิชย์เป็นตัวเลือก
คำถามที่พบบ่อย
deep link ทั่วไปต้องการแอพที่ติดตั้งแล้วและเปิดโดยตรง Deferred Deep Link ทำงานแม้ว่าแอพจะไม่ได้ติดตั้ง — เปลี่ยนทิศทางไปยังร้านค้า และหลังจากติดตั้งจะคืนสภาพบริบทการเปลี่ยนแปลงและเปิดหน้าจอเป้าหมาย
ระยะเวลาการเก็บข้อมูลขึ้นอยู่กับแพลตฟอร์ม Firebase Dynamic Links เก็บพารามิเตอร์ไว้สูงสุด 30 วัน Branch.io เก็บข้อมูลไว้สูงสุด 90 วัน บน Android Install Referrer API เก็บสตริง referrer ไว้จนกว่าจะมีการอ่านครั้งแรกโดยแอพ แต่ไม่เกิน 90 วัน
บนเดสก์ทอป deferred deep link ไม่มีความหมาย เพราะไม่สามารถติดตั้งแอผ่านร้านค้าบนคอมพิวเตอร์ได้ เมื่อคลิกลิงก์จากเดสก์ทอป ผู้ใช้จะเห็น URL สำรอง — เวอร์ชั่นเว็บของเนื้อหาหรือหน้าที่มีคึศพ์ QR สำหรับติดตั้งบนอุธกรณ์มือถือ
Chrome, Safari และ Samsung Internet รองรับ deferred deep link ผ่านกลไกคุกกี้และ localStorage Firefox มีการรองรับที่จำกัดเนื่องจากนโยบายการ บล็อกคุกกี้ของบุคคลที่สาม ที่เข้มงวด สำหรับความคุมเคือสูงสุด แนะนำให้ใช้ SDK ของ Firebase หรือ Branch.io
โดยทางเทคนิค สามารถใช้โซลูชันอิสระผ่านเซิร์ฟเวอร์กลางและกลไกการอ้างอิง อย่างไรก็ตาม ต้องพัฒนาและบำรุงโครงสร้างพื้นฐานเซิร์ฟเวอร์ จัดการกับ คุกกี้ ผนวกกับแต่ละร้านค้า และแก้ไขปัญหาบนแพลตฟอร์มต่าง ๆ SDK สำเร็จรูปของ Firebase และ Branch.io ช่วยเร่งการพัฒนาได้หลายเท่า
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม