Firebase Dynamic Links: چیست، ایجاد لینک‌ها و ادغام

نویسنده: IT Sectr منتشر شده: 2026-04-29 زمان مطالعه: 9 دقیقه

Firebase Dynamic Links سرویسی از Google برای ایجاد لینک‌های هوشمند است که کاربر را به مکان مناسب درون برنامه موبایل یا وب‌سایت هدایت می‌کند، بسته به اینکه آیا برنامه روی دستگاه نصب شده است یا خیر. Dynamic Links زمینه انتقال را حتی در اولین راه‌اندازی پس از نصب از فروشگاه برنامه حفظ می‌کنند. به گفته Firebase Documentation, 2026، لینک‌های پویا در یک API واحد پردازش می‌شوند که به طور خودکار رفتار را تعیین می‌کند: باز کردن برنامه، رفتن به وب‌سایت یا نصب برنامه. این سرویس برای برنامه‌های ارجاع، سناریوهای خوش‌آمدگویی و کمپین‌های بازاریابی ضروری است.

نکات کلیدی

  • Dynamic Links — لینک‌های هوشمندی که به طور خودکار تشخیص می‌دهند آیا باید برنامه را نصب کرد یا برنامه نصب شده را در صفحه مورد نظر باز کرد.
  • Deferred Deep Linking — حفظ زمینه انتقال در اولین راه‌اندازی پس از نصب: کاربر صفحه هدف را می‌بیند نه صفحه اصلی.
  • دامنه لینک — دامنه سفارشی به شکل your-app.page.link که می‌توان در Firebase Console برندسازی کرد.
  • پردازش سمت کلاینت — لینک‌ها از طریق Firebase Dynamic Links SDK برای Android و iOS با ارسال آرگومان‌ها به intent یا scene پردازش می‌شوند.
  • تحلیل — Firebase به طور خودکار آمار کلیک‌ها، نصب‌ها و انتقال‌ها را از طریق Dynamic Links جمع‌آوری می‌کند.

Firebase Dynamic Links فناوری Google است که یک لینک واحد ایجاد می‌کند و به محتوای مورد نظر در برنامه موبایل یا وب‌سایت هدایت می‌کند و رفتار را بسته به پلتفرم و وضعیت نصب تطبیق می‌دهد. لینک بررسی می‌کند که آیا برنامه روی دستگاه نصب شده است: اگر بله — آن را با ارسال پارامترها باز می‌کند، اگر نه — برای نصب به Google Play یا App Store هدایت می‌کند و پس از نصب به صفحه هدف هدایت می‌کند.

ویژگی کلیدی: Deferred Deep Linking

مزیت اصلی Dynamic Links نسبت به لینک‌های عمیق معمولی، پشتیبانی از لینک‌های عمیق معوق است. Deferred Deep Linking به این معنی است که زمینه انتقال (پارامترهای لینک) حتی اگر برنامه هنوز نصب نشده باشد حفظ می‌شود. هنگامی که کاربر برنامه را از فروشگاه نصب می‌کند، Dynamic Links SDK زمینه ذخیره شده را می‌خواند و آن را به صفحه مناسب منتقل می‌کند. بدون این فناوری، کاربر پس از نصب فقط به صفحه اصلی می‌رفت و کد تبلیغاتی، دعوتنامه یا لینک سفارش خاص را از دست می‌داد.

حوزه‌های کاربرد

Dynamic Links در برنامه‌های ارجاع برای جذب کاربران جدید با پیوند به حساب دعوت‌کننده استفاده می‌شود. کمپین‌های بازاریابی با انتقال از خبرنامه‌های ایمیلی و شبکه‌های اجتماعی از Dynamic Links برای اندازه‌گیری دقیق تبدیل استفاده می‌کنند. در سناریوهای خوش‌آمدگویی، لینک کاربر جدید را به صفحه خوش‌آمد با محتوای شخصی‌سازی شده هدایت می‌کند. در تجارت الکترونیک، لینک‌های محصولات زمینه را حفظ می‌کنند و حتی در اولین راه‌اندازی پس از نصب به صفحه محصول هدایت می‌کنند.

مکانیسم کار Dynamic Links از چند مرحله تشکیل شده است که هر کدام بسته به وضعیت برنامه می‌توانند متفاوت باشند. هنگامی که کاربر روی یک لینک پویا کلیک می‌کند، مرورگر درخواستی به سرور Firebase ارسال می‌کند. Firebase با استفاده از بررسی intent-filter یا universal link تشخیص می‌دهد که آیا برنامه نصب شده است. اگر برنامه نصب شده باشد، Firebase آن را با ارسال لینک عمیق باز می‌کند. اگر نه — به صفحه فروشگاه یا نسخه وب هدایت می‌کند.

آناتومی یک لینک پویا

یک Dynamic Link استاندارد از URL پایه، پارامترهای لینک و برچسب‌های بازاریابی اختیاری تشکیل شده است. URL پایه دامنه‌ای به شکل your-app.page.link است که در Firebase Console ثبت شده است. پارامترهای لینک عمیق از طریق پارامترهای query تعیین می‌شوند: link (URL هدف درون برنامه)، apn (Android Package Name)، ibi (iOS Bundle ID)، st و sd (عنوان و توضیحات برای پیش‌نمایش اجتماعی). برچسب‌های بازاریابی utm_source، utm_medium، utm_campaign برای ردیابی به Google Analytics ارسال می‌شوند.

پارامترتوضیحاتمثال
linkلینک عمیق هدفhttps://yourapp.page.link/product/123
apnAndroid Package Namecom.example.myapp
ibiiOS Bundle IDcom.example.myapp.ios
stعنوان اجتماعیپیشنهاد ویژه
sdتوضیحات اجتماعی۳۰٪ تخفیف روی اولین سفارش

Firebase Console رابط بصری برای ایجاد Dynamic Links در بخش Engage > Dynamic Links ارائه می‌دهد. در کنسول می‌توان تمام پارامترهای لینک از جمله لینک عمیق، رفتار وب، فراداده‌های اجتماعی و برچسب‌های UTM را تنظیم کرد. پس از ایجاد لینک، کنسول URL آماده و همچنین آمار کلیک‌ها و انتقال‌ها را ارائه می‌دهد. برای ایجاد انبوه لینک‌ها از REST API Firebase Dynamic Links با احراز هویت OAuth 2.0 استفاده می‌شود.

ایجاد لینک از طریق REST API

برای ایجاد برنامه‌نویسی Dynamic Links از درخواست POST به Firebase Dynamic Links API استفاده می‌شود. بدنه درخواست شامل dynamicLinkInfo با پارامترهای لینک عمیق، تنظیمات پلتفرم و فراداده‌های اجتماعی است. API یک URL آماده به شکل https://your-app.page.link/abc123 برمی‌گرداند. برای لینک‌های طولانی‌مدت از suffix.option = UNIQUE استفاده می‌شود — لینک‌های کوتاه با پسوند یکتا. برای لینک‌های موقت — SHORT، با امکان تداخل.

js
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: "تا ۵۰٪ تخفیف تا پایان ماه"
        }
    },
    suffix: { option: "UNIQUE" }
}

axios.post(apiUrl, data)
    .then(res => console.log(res.data.shortLink))
    .catch(err => console.error(err))

لینک‌های کوتاه و برچسب‌های UTM

Dynamic Links به طور خودکار URLهای کوتاه با طول ۶–۸ کاراکتر پس از دامنه تولید می‌کنند که آنها را برای استفاده در SMS و شبکه‌های اجتماعی مناسب می‌سازد. پارامترهای UTM از طریق فیلد utmParameters یا مستقیماً در پارامتر link اضافه می‌شوند. Firebase به طور خودکار کلیک‌های Dynamic Links را با Google Analytics برای Firebase مرتبط می‌کند که امکان ردیابی ترافیک ارجاعی و انتساب کمپین‌ها را فراهم می‌کند.

ادغام Dynamic Links در Android

پیکربندی Dynamic Links در Android شامل افزودن Firebase SDK، پیکربندی intent-filter برای فعالیتی که لینک‌های عمیق را دریافت می‌کند و پردازش لینک‌ها از طریق Firebase Dynamic Links SDK است. پس از نصب SDK و افزودن google-services.json، باید فعالیت را در AndroidManifest.xml با intent-filter برای پردازش لینک‌های دامنه برنامه خود ثبت کنید.

پیکربندی intent-filter در AndroidManifest

فعالیتی که Dynamic Links را پردازش می‌کند باید intent-filter برای اقدام VIEW و دسته‌بندی‌های DEFAULT و BROWSABLE داشته باشد. AndroidManifest.xml شامل تگ data با android:scheme، android:host و android:pathPrefix مطابق با لینک عمیق شما است. برای پردازش لینک‌های دامنه page.link، intent-filter با طرح https و host دامنه Dynamic Links شما نیز اضافه می‌شود.

xml
<!-- 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 ورودی را در کد فعالیت پردازش کنید. FirebaseDynamicLinks API لینک را از intent دریافت کرده و شیء PendingDynamicLinkData را با پارامترهای استخراج شده برمی‌گرداند. متد getLink لینک عمیق هدف را برمی‌گرداند که می‌توان آن را تجزیه و برای ناوبری استفاده کرد. مهم است که لینک هم در راه‌اندازی سرد (از طریق getIntent در onCreate) و هم در راه‌اندازی گرم (از طریق onNewIntent) پردازش شود.

ادغام Dynamic Links در iOS

پیکربندی 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

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 را در Capabilities پروژه مشخص کنید.

پردازش لینک از طریق Firebase SDK

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

swift
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)
                }
            }
    }
}

نمونه پیاده‌سازی در Kotlin

بیایید یک نمونه کامل از پردازش Dynamic Link در برنامه Android با Kotlin را بررسی کنیم. MainActivity Dynamic Link ورودی را هم در راه‌اندازی سرد و هم در راه‌اندازی گرم می‌خواند. لینک به پارامترهایی تجزیه می‌شود که برای ناوبری به صفحه مناسب با ارسال آرگومان‌ها استفاده می‌شوند. در نمونه، پردازش لینک به صفحه تبلیغات با شناسه تبلیغات نشان داده شده است.

kotlin
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

برای تست Dynamic Links از Firebase Console استفاده می‌شود، جایی که می‌توان یک لینک آزمایشی ایجاد کرد و از طریق پیام‌رسان یا ایمیل به دستگاه ارسال کرد. Firebase Dynamics Links Debugger در URL https://your-app.page.link/?d=1 در دسترس است و اطلاعات دقیقی درباره رفتار لینک نمایش می‌دهد. هنگام تست Deferred Deep Links باید اطمینان حاصل کنید که برنامه حذف شده است و پس از نصب، لینک با پارامترهای ارسال شده به صفحه صحیح هدایت می‌کند.

سوالات متداول

تفاوت Dynamic Links با لینک‌های عمیق معمولی چیست؟

لینک‌های عمیق معمولی فقط زمانی کار می‌کنند که برنامه نصب شده باشد و زمینه را پس از نصب حفظ نمی‌کنند. Dynamic Links از Deferred Deep Linking پشتیبانی می‌کند — کاربر برنامه را نصب می‌کند و بلافاصله با پارامترهای لینک ذخیره شده به صفحه هدف می‌رسد.

آیا برای کار Dynamic Links به سرور نیاز است؟

سرور مورد نیاز نیست برای ایجاد و پردازش لینک‌ها — همه عملیات از طریق Firebase Console، REST API یا Firebase SDK در سمت کلاینت انجام می‌شود. برای تولید انبوه لینک‌ها، REST API توصیه می‌شود، اما کنسول برای ایجاد دستی مناسب است.

Dynamic Link چقدر عمر می‌کند؟

Dynamic Links تاریخ انقضا ندارند — تا زمانی که به صورت دستی حذف نشوند، برای همیشه در Firebase ذخیره می‌شوند. لینک‌های کوتاه با پسوند UNIQUE به طور نامحدود وجود دارند. برای انتساب دقیق، توصیه می‌شود برای هر کمپین لینک‌های یکتا ایجاد کنید.

آیا Dynamic Links بدون اینترنت کار می‌کند؟

برای پردازش Dynamic Link اتصال اینترنت در مرحله کلیک مورد نیاز است، زیرا سرور Firebase وضعیت نصب برنامه را بررسی می‌کند. پس از پردازش لینک، داده‌ها از طریق intent یا Universal Link به برنامه ارسال می‌شوند و بدون شبکه نیز در دسترس هستند.

Firebase Dynamic Links چقدر هزینه دارد؟

Firebase Dynamic Links رایگان هستند در طرح Spark. در طرح Blaze سقف ۵۰ هزار کلیک در روز برای هر پروژه بدون هزینه اضافی وجود دارد. تجاوز از سقف ایجاد لینک‌های جدید را تا روز بعد مسدود می‌کند.

خلاصه

  • Firebase Dynamic Links — لینک‌های هوشمندی که کاربر را به برنامه یا وب‌سایت هدایت می‌کنند و در صورت نبود برنامه با حفظ زمینه پس از نصب به فروشگاه هدایت می‌کنند.
  • Deferred Deep Linking — مزیت کلیدی که امکان انتقال زمینه (کد تبلیغاتی، دعوتنامه، لینک محصول) را در اولین راه‌اندازی پس از نصب فراهم می‌کند.
  • ساختار لینک شامل دامنه پایه (your-app.page.link)، پارامترهای لینک عمیق، تنظیمات پلتفرم و فراداده‌های اجتماعی برای پیش‌نمایش است.
  • ایجاد لینک‌ها از طریق Firebase Console، REST API یا Firebase SDK با پشتیبانی از برچسب‌های UTM برای ادغام با Google Analytics انجام می‌شود.
  • ادغام در Android نیاز به پیکربندی intent-filter در AndroidManifest و پردازش از طریق FirebaseDynamicLinks API با پشتیبانی از راه‌اندازی سرد و گرم دارد.
  • ادغام در iOS از Universal Links با فایل AASA، Associated Domains و پردازش از طریق DynamicLinks SDK در AppDelegate یا SceneDelegate استفاده می‌کند.
  • رایگان تا ۵۰ هزار کلیک در روز، بدون تاریخ انقضای لینک‌ها، با امکان ایجاد دامنه سفارشی برای برندسازی لینک‌ها.

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

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

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

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