Firebase Dynamic Links سرویسی از Google برای ایجاد لینکهای هوشمند است که کاربر را به مکان مناسب درون برنامه موبایل یا وبسایت هدایت میکند، بسته به اینکه آیا برنامه روی دستگاه نصب شده است یا خیر. Dynamic Links زمینه انتقال را حتی در اولین راهاندازی پس از نصب از فروشگاه برنامه حفظ میکنند. به گفته Firebase Documentation, 2026، لینکهای پویا در یک API واحد پردازش میشوند که به طور خودکار رفتار را تعیین میکند: باز کردن برنامه، رفتن به وبسایت یا نصب برنامه. این سرویس برای برنامههای ارجاع، سناریوهای خوشآمدگویی و کمپینهای بازاریابی ضروری است.
نکات کلیدی
Firebase Dynamic Links فناوری Google است که یک لینک واحد ایجاد میکند و به محتوای مورد نظر در برنامه موبایل یا وبسایت هدایت میکند و رفتار را بسته به پلتفرم و وضعیت نصب تطبیق میدهد. لینک بررسی میکند که آیا برنامه روی دستگاه نصب شده است: اگر بله — آن را با ارسال پارامترها باز میکند، اگر نه — برای نصب به Google Play یا App Store هدایت میکند و پس از نصب به صفحه هدف هدایت میکند.
مزیت اصلی 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 |
| apn | Android Package Name | com.example.myapp |
| ibi | iOS Bundle ID | com.example.myapp.ios |
| st | عنوان اجتماعی | پیشنهاد ویژه |
| sd | توضیحات اجتماعی | ۳۰٪ تخفیف روی اولین سفارش |
Firebase Console رابط بصری برای ایجاد Dynamic Links در بخش Engage > Dynamic Links ارائه میدهد. در کنسول میتوان تمام پارامترهای لینک از جمله لینک عمیق، رفتار وب، فرادادههای اجتماعی و برچسبهای UTM را تنظیم کرد. پس از ایجاد لینک، کنسول URL آماده و همچنین آمار کلیکها و انتقالها را ارائه میدهد. برای ایجاد انبوه لینکها از REST API Firebase Dynamic Links با احراز هویت OAuth 2.0 استفاده میشود.
برای ایجاد برنامهنویسی Dynamic Links از درخواست POST به Firebase Dynamic Links API استفاده میشود. بدنه درخواست شامل dynamicLinkInfo با پارامترهای لینک عمیق، تنظیمات پلتفرم و فرادادههای اجتماعی است. API یک URL آماده به شکل https://your-app.page.link/abc123 برمیگرداند. برای لینکهای طولانیمدت از suffix.option = UNIQUE استفاده میشود — لینکهای کوتاه با پسوند یکتا. برای لینکهای موقت — SHORT، با امکان تداخل.
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))
Dynamic Links به طور خودکار URLهای کوتاه با طول ۶–۸ کاراکتر پس از دامنه تولید میکنند که آنها را برای استفاده در SMS و شبکههای اجتماعی مناسب میسازد. پارامترهای UTM از طریق فیلد utmParameters یا مستقیماً در پارامتر link اضافه میشوند. Firebase به طور خودکار کلیکهای Dynamic Links را با Google Analytics برای Firebase مرتبط میکند که امکان ردیابی ترافیک ارجاعی و انتساب کمپینها را فراهم میکند.
پیکربندی Dynamic Links در Android شامل افزودن Firebase SDK، پیکربندی intent-filter برای فعالیتی که لینکهای عمیق را دریافت میکند و پردازش لینکها از طریق Firebase Dynamic Links SDK است. پس از نصب SDK و افزودن google-services.json، باید فعالیت را در AndroidManifest.xml با intent-filter برای پردازش لینکهای دامنه برنامه خود ثبت کنید.
فعالیتی که Dynamic Links را پردازش میکند باید intent-filter برای اقدام VIEW و دستهبندیهای DEFAULT و BROWSABLE داشته باشد. AndroidManifest.xml شامل تگ data با android:scheme، android:host و android:pathPrefix مطابق با لینک عمیق شما است. برای پردازش لینکهای دامنه page.link، intent-filter با طرح https و host دامنه Dynamic Links شما نیز اضافه میشود.
<!-- 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 نیاز به پیکربندی هم در سمت Firebase و هم در پروژه Xcode دارد. باید کلید APNs را در Firebase Console بارگذاری کنید، Firebase SDK را از طریق Swift Package Manager یا CocoaPods اضافه کنید و App Delegate را برای پردازش لینکهای جهانی (Universal Links) پیکربندی کنید. Dynamic Links در iOS از 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 پروژه مشخص کنید.
برای 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 درخواست میکند.
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)
}
}
}
}
بیایید یک نمونه کامل از پردازش Dynamic Link در برنامه Android با Kotlin را بررسی کنیم. MainActivity Dynamic Link ورودی را هم در راهاندازی سرد و هم در راهاندازی گرم میخواند. لینک به پارامترهایی تجزیه میشود که برای ناوبری به صفحه مناسب با ارسال آرگومانها استفاده میشوند. در نمونه، پردازش لینک به صفحه تبلیغات با شناسه تبلیغات نشان داده شده است.
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 از Firebase Console استفاده میشود، جایی که میتوان یک لینک آزمایشی ایجاد کرد و از طریق پیامرسان یا ایمیل به دستگاه ارسال کرد. Firebase Dynamics Links Debugger در URL https://your-app.page.link/?d=1 در دسترس است و اطلاعات دقیقی درباره رفتار لینک نمایش میدهد. هنگام تست Deferred Deep Links باید اطمینان حاصل کنید که برنامه حذف شده است و پس از نصب، لینک با پارامترهای ارسال شده به صفحه صحیح هدایت میکند.
سوالات متداول
لینکهای عمیق معمولی فقط زمانی کار میکنند که برنامه نصب شده باشد و زمینه را پس از نصب حفظ نمیکنند. Dynamic Links از Deferred Deep Linking پشتیبانی میکند — کاربر برنامه را نصب میکند و بلافاصله با پارامترهای لینک ذخیره شده به صفحه هدف میرسد.
سرور مورد نیاز نیست برای ایجاد و پردازش لینکها — همه عملیات از طریق Firebase Console، REST API یا Firebase SDK در سمت کلاینت انجام میشود. برای تولید انبوه لینکها، REST API توصیه میشود، اما کنسول برای ایجاد دستی مناسب است.
Dynamic Links تاریخ انقضا ندارند — تا زمانی که به صورت دستی حذف نشوند، برای همیشه در Firebase ذخیره میشوند. لینکهای کوتاه با پسوند UNIQUE به طور نامحدود وجود دارند. برای انتساب دقیق، توصیه میشود برای هر کمپین لینکهای یکتا ایجاد کنید.
برای پردازش Dynamic Link اتصال اینترنت در مرحله کلیک مورد نیاز است، زیرا سرور Firebase وضعیت نصب برنامه را بررسی میکند. پس از پردازش لینک، دادهها از طریق intent یا Universal Link به برنامه ارسال میشوند و بدون شبکه نیز در دسترس هستند.
Firebase Dynamic Links رایگان هستند در طرح Spark. در طرح Blaze سقف ۵۰ هزار کلیک در روز برای هر پروژه بدون هزینه اضافی وجود دارد. تجاوز از سقف ایجاد لینکهای جدید را تا روز بعد مسدود میکند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید