Firebase Dynamic Links: چیسءت، چگونه کار می‌کند و در توسعه استفاده می‌شود

نویسنده: IT Sectr منتشر شده: 2026-05-14 زمان مطالعه: 8 دقیقه

Firebase Dynamic Links یک سرویس گوگل برای ایجاد لینک‌های هوشمندی است که کاربر را به هر جایی در نرم‌افزار هدایت می‌کنند، فرق نمی‌کند که نرم‌افزار نصب شده باشد یا نه. به گزارش Firebase Documentation، Dynamic Links در صورت نبود نرم‌افزار به‌طور خودکار کاربر را به App Store یا Google Play هدایت می‌کنند و پس از نصب سیاق بازدید را بازیابی می‌کنند. لینک‌های هوشمند Firebase مشکل URL Scheme را که با نرم‌افزارهای نصب‌نشده کار نمی‌کند، حل می‌کنند.

نکات کلیدی

  • Firebase Dynamic Links — سرویس گوگل برای ایجاد لینک‌های جهانی که در iOS و Android با پشتیبانی از deferred deep link کار می‌کنند.
  • Deferred — مزیت اصلی: لینک سیاق بازدید را حتی اگر نرم‌افزار نصب نشده باشد نگه می‌دارد و پس از نصب آن را بازیابی می‌کند.
  • تحلیل — Firebase به‌طور خودکار بازدیدهای Dynamic Links را ردیابی می‌کند و داده‌ها را در Firebase Analytics و Google Analytics ارائه می‌دهد.
  • پلتفرم‌ها — Dynamic Links در iOS (از طریق Universal Links) و Android (از طریق App Links) با یک لینک جهانی واحد برای هر دو پلتفرم کار می‌کنند.
  • ایجاد — لینک‌ها از طریق Firebase Console، REST API یا SDK در طرف کلینت با تنظیم رفتار برای هر سناریو تولید می‌شوند.

Firebase Dynamic Links یک سرویس ابری از گوگل است که لینک‌های جهانی واحدی برای نرم‌افزارهای موبایل در iOS و Android ایجاد می‌کند. لینک دینامیک شامل یک لینک عمیق به محتوای داخل نرم‌افزار است، اما مانند یک لینک HTTPS عادی عمل می‌کند: اگر نرم‌افزار نصب شده باشد، آن را مستقیماً باز می‌کند، در غیر این صورت به فروشگاه اپلیکیشن هدایت می‌کند.

بر خلاف URL Schemeهای معمولی، Dynamic Links می‌توانند با نرم‌افزارهای نصب‌نشده استفاده کنند به لطف فناوری deferred deep link. وقتی کاربر پس از کلیک روی لینک نرم‌افزار را نصب می‌کند، Firebase پارامترهای بازدید را ذخیره می‌کند و در نخستین بار اجرا آن‌ها را ارسال می‌کند. این امکاناتی را برای برنامه‌های ارجاعی، کمپین‌های بازاریابی و دعوت‌نامه‌ها باز می‌کند.

تفاوت با URL Schemeهای معمولی

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 اعدام می‌شود.

چرخه عمر Dynamic Link

نرم‌افزار لینک را در مرحله اهلیاسازی 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 اهم است — آن‌ها تعیین می‌کنند که لینک هنگام ارسال در پیام‌رسان‌ها و شبکه‌های اجتماعی با کارت پیش‌نمایش چگونه نمایش داده شود.

پارامترهای Dynamic Link

پارامترکاربرداجباری
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 استخراج می‌کند.

تنظیم در Xcode

نمونه تنظیم Info.plist برای اهلیاسازی صحیح Firebase و ثبت handler دریافتی Dynamic Links. کلید FIROptions باید شناسه پروژه GoogleService-Info.plist را شامل باشد.

xml
<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 برای Dynamic Links

نمونه Intent Filter در AndroidManifest.xml برای دریافت Dynamic Links در دامنه yourcode.page.link.

xml
<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 را انجام داد.

پردازش در کد Kotlin

نمونه دریافت و پردازش Firebase Dynamic Link در MainActivity. کد هم cold start و هم بازدید از نرم‌افزار دیگر را پردازش می‌کند.

kotlin
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 چه تفاوتی با deep link معمولی دارد؟

Firebase Dynamic Links از deferred deep link پشتیبانی می‌کند — لینک سیاق را حتی اگر نرم‌افزار نصب نشده باشد نگه می‌دارد. پس از نصب، نرم‌افزار تمام پارامترهای بازدید را دریافت می‌کند، که این با URL Scheme یا Universal Links معمولی ممکن نیست.

آیا باید برای Firebase Dynamic Links پرداخت کرد؟

Firebase Dynamic Links در پلان تعرفه رایگان Firebase Spark قرار دارند. محدودیتی برای تعداد لینک‌های قابل ایجاد وجود ندارد. اما از سال 2024، گوگل گذر به زیرساخت جدید را اعلام کرده است، بنابراین شرایط ممکن است تغییر کند.

آیا می‌توان از Dynamic Links در نرم‌افزار وب استفاده کرد؟

Dynamic Links برای نرم‌افزارهای موبایل طراحی شده‌اند. در بازدید از مرورگر روی دسکتاپ، لینک fallback URL را باز می‌کند. برای نرم‌افزارهای وب از لینک‌های عادی یا منطق تغییر مسیردهی خود استفاده کنید.

چگونه Dynamic Links را در مرحله توسعه آزمایش کنیم؟

Firebase Console دکمه Test Dynamic Link را برای پیش‌نمایش رفتار ارائه می‌دهد. همچنین می‌توانید از شبیه‌ساز Android یا شبیه‌ساز iOS با Firebase SDK نصب‌شده برای آزمایش محلی تمام سناریوهای بازدید استفاده کنید.

Dynamic Link چقدر می‌تواند شامل کاراکتر باشد؟

لینک کوتاه Firebase Dynamic Link از دامنه page.link و پسوند تصادفی به طول تقریباً 7 کاراکتر تشکیل شده است. طول کل تقریباً 30 کاراکتر است. deep link داخلی می‌تواند هر طولی داشته باشد، اما برای سازگاری توصیه می‌شود آن را به 2 کیلوبایت محدود کنید.

نتیجه

  • Firebase Dynamic Links — لینک‌های جهانی واحد از گوگل برای iOS و Android با پشتیبانی از deferred deep link.
  • اصل کار — لینک از سرور Firebase عبور می‌کند که دستگاه و وضعیت نصب نرم‌افزار را برای هدایت صحیح تشخیص می‌دهد.
  • Deferred — مزیت کلیدی: پارامترهای بازدید پس از نصب نرم‌افزار از فروشگاه ذخیره و بازیابی می‌شوند.
  • ایجاد — لینک‌ها از طریق Firebase Console، REST API یا SDK طرف کلینت با تنظیم پارامترها برای هر پلتفرم تولید می‌شوند.
  • یکپارچگی iOS — نیازمند Associated Domains در Xcode و Firebase SDK است؛ پردازش از طریق Universal Links و روش continue UserActivity.
  • یکپارچگی Android — نیازمند Intent Filter در manifest با اقدام VIEW و دامنه Dynamic Links، به‌ضمانه Firebase SDK در build.gradle.
  • تحلیل — Firebase به‌طور خودکار بازدیدهای Dynamic Links را با پشتیبانی از برچسب‌های UTM برای Google Analytics ردیابی می‌کند.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید