Firebase Dynamic Links یک سرویس گوگل برای ایجاد لینکهای هوشمندی است که کاربر را به هر جایی در نرمافزار هدایت میکنند، فرق نمیکند که نرمافزار نصب شده باشد یا نه. به گزارش Firebase Documentation، Dynamic Links در صورت نبود نرمافزار بهطور خودکار کاربر را به App Store یا Google Play هدایت میکنند و پس از نصب سیاق بازدید را بازیابی میکنند. لینکهای هوشمند Firebase مشکل URL Scheme را که با نرمافزارهای نصبنشده کار نمیکند، حل میکنند.
نکات کلیدی
Firebase Dynamic Links یک سرویس ابری از گوگل است که لینکهای جهانی واحدی برای نرمافزارهای موبایل در iOS و Android ایجاد میکند. لینک دینامیک شامل یک لینک عمیق به محتوای داخل نرمافزار است، اما مانند یک لینک 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 فراهم میکند. توسعهدهنده لینک عمیق (deep link URL)، نام کمپین، تنظیمات مجزا برای 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 و ثبت handler دریافتی 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 با افزودن وابستگیها در build.gradle و فایل google-services.json از Firebase Console آغاز میشود. دامنه Dynamic Links در Firebase Console ثبت میشود، پس از آن تمام لینکها با این دامنه بهطور خودکار توسط نرمافزار Android از طریق Intent Filter با اقدام VIEW شناخته میشوند. برای عملکرد صحیح باید همچنین پلاگین Google Services را به build.gradle کۀ و ماژول اضافه کرده و همگرامی Gradle را انجام دهید.
برای پردازش صحیح لینکها در Android، باید یک Intent Filter برای دامنه Dynamic Links در Activity اضافه کنید که قرار است لینکهای ورودی را دریافت کند. فیلتر باید شامل شماسه 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، گوگل گذر به زیرساخت جدید را اعلام کرده است، بنابراین شرایط ممکن است تغییر کند.
Dynamic Links برای نرمافزارهای موبایل طراحی شدهاند. در بازدید از مرورگر روی دسکتاپ، لینک fallback URL را باز میکند. برای نرمافزارهای وب از لینکهای عادی یا منطق تغییر مسیردهی خود استفاده کنید.
Firebase Console دکمه Test Dynamic Link را برای پیشنمایش رفتار ارائه میدهد. همچنین میتوانید از شبیهساز Android یا شبیهساز iOS با Firebase SDK نصبشده برای آزمایش محلی تمام سناریوهای بازدید استفاده کنید.
لینک کوتاه Firebase Dynamic Link از دامنه page.link و پسوند تصادفی به طول تقریباً 7 کاراکتر تشکیل شده است. طول کل تقریباً 30 کاراکتر است. deep link داخلی میتواند هر طولی داشته باشد، اما برای سازگاری توصیه میشود آن را به 2 کیلوبایت محدود کنید.
نتیجه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید