Deferred Deep Link — مکانیسمی است که کنتکست هدف انتقال را حفظ میکند، حتی اگر نرمافزار هنوز بر روی دستگاه کاربر نصب نشده باشد. به گزارش Branch Resources، پس از نصب نرمافزار، سیستم به طور خودکار کنتکست ذخیرهشده را پردازش و کاربر را به صفحه هدف هدایت میکند. لینک عمیق باتاخیر مشکل اصلی deep link عادی را حل میکند — ناقابلیت کار با نرمافزارهای نصبنشده.
نکات اصلی
Deferred 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 کیلوبایت در هر نوشته. این راهحلهای سروری با شناسه جلسه منحصربهفرد را به روش ترجیحی برای انتقال کنتکست تبدیل میکند.
Android امکانات انعطافپذیرتری برای deferred deep link از طریق Install Referrer API فراهم میکند. وقتی کاربر از طریق لینک وارد Google Play میشود، فروشگاه referrer را ثبت میکند — رشتهای با پارامترهای انتقال. پس از نصب، نرمافزار این رشته را از طریق Install Referrer API دریافت کرده و کنتکست هدف را از آن استخراج میکند. این متکی بهترین مکانیسم deferred deep link در Android است.
برای نرمافزارهایی که از طریق Google Play توزیع نمیشوند، Android از BroadcastReceiver ارجاعی پشتیبانی میکند. توسعهدهنده میتواند پس از نصب، یک Intent سفارشی با پارامترها ارسال کند و نرمافزار آن را از طریق BroadcastReceiver ثبتشده در مانیفست دریافت میکند. اما این مکانیسم کمتر قابل اعتماد است چون به طرز پیادهسازی نصبکننده بستگی دارد.
Install Referrer API اطلاعاتی درباره منبع نصب ارائه میدهد، از جمله URL ارجاعدهنده، زمان انتقال و زمان نصب. حداکثر طول رشته referrer 8 کیلوبایت است که برای انتقال تمامی پارامترهای مورد نیاز 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 را در پروژه ادغام کنید، از طریق Firebase Console یک Dynamic Link با لینک عمیق و پارامترهای کمپین ایجاد کنید. Firebase SDK به طور خودکار با راهاندازی نرمافزار فراخوانده شده و وجود Dynamic Link وارده را از طریق روش getDynamicLink() بررسی میکند.
نمونه پردازش deferred Firebase Dynamic Link در Activity به زبان Kotlin. کد برای 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 راهحل بهینه، و برای enterprise با دهها کانال تبلیغاتی — MMPهای تجاری مناسب است.
سوالات متداول
Deep link عادی نیازمند نرمافزار نصبشده است و آن را مستقیما باز میکند. Deferred Deep Link حتی اگر نرمافزار نصب نشده باشد کار میکند — آن را به فروشگاه هدایت کرده و پس از نصب کنتکست انتقال را بازیابی کرده و صفحه هدف را باز میکند.
مدت ذخیره به پلتفرم بستگی دارد. Firebase Dynamic Links پارامترها را تا 30 روز ذخیره میکند. Branch.io دادهها را تا 90 روز حفظ میکند. در Android، Install Referrer API رشته referrer را تا زمان اولین خواندن توسط نرمافزار نگه میدارد، اما نه بیش از 90 روز.
در رایانه، deferred deep link معنایی ندارد چون نرمافزار را نمیتوان از طریق فروشگاه روی کامپیوتر نصب کرد. پس از کلیک روی لینک از رایانه، کاربر fallback URL را مشاهده خواهد کرد — نسخه وب محتوا یا صفحهای با کد QR برای نصب روی دستگاه موبایل.
Chrome، Safari و Samsung Internet از deferred deep link از طریق مکانیسمهای cookie و localStorage پشتیبانی میکنند. Firefox به دلیل سیاست سفتگیرانه بلوک کوکی شخص ثالث پشتیبانی محدودی دارد. برای پوشش حداکثر، توصیه میشود از SDK های Firebase یا Branch.io استفاده کنید.
از نظر فنی، میتوان راهحل مستقلی از طریق یک سرور واسطه و مکانیسمهای ارجاعی ایجاد کرد. اما این نیازمند توسعه و نگهداری زیرساخت سرور، مدیریت cookie، ادغام با هر فروشگاه و حل مشکلات در پلتفرمهای مختلف است. SDKهای حاضر Firebase و Branch.io توسعه را چندین برابر سریعتر میکنند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید