Firebase Dynamic Links: ما هو، وكيف يعمل ويُستخدم في التطوير

المؤلف: IT Sectr نُشر: 2026-05-14 وقت القراءة: 8 دق

Firebase Dynamic Links هي خدمة من Google لإنشاء روابط ذكية توجه المستخدم إلى المكان الصحيح في التطبيق بغض النظر عن تثبيت التطبيق أم لا. وفقاً لوثائق Firebase، تعيد Dynamic Links توجيه المستخدم تلقائياً إلى App Store أو Google Play في حالة عدم تثبيت التطبيق وتستعيد سياق الانتقال بعد التثبيت. الروابط الذكية من Firebase تحل مشكلة URL Scheme التي لا تعمل مع التطبيقات غير المثبتة.

الملامح الرئيسية

  • Firebase Dynamic Links — خدمة من Google لإنشاء روابط عالمية تعمل على 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 هي خدمة سحابية من Google تنشئ روابط عالمية موحدة للتطبيقات المحمولة على iOS وAndroid. يحتوي الرابط الديناميكي على رابط عميق (deep link) إلى المحتوى داخل التطبيق ولكنه يتصرف كرابط HTTPS عادي: إذا كان التطبيق مثبتاً، فإنه يفتحه مباشرة؛ وإذا لم يكن مثبتاً، فإنه يعيد التوجيه إلى متجر التطبيقات.

على عكس URL Scheme العادية، يمكن لـ Dynamic Links العمل مع التطبيقات غير المثبتة بفضل تقنية deferred deep link. عندما يقوم المستخدم بتثبيت التطبيق بعد النقر على الرابط، يحفظ Firebase معلمات الانتقال وينقلها عند التشغيل الأول. هذا يفتح إمكانيات لبرامج الإحالة والحملات التسويقية والدعوات.

الفرق عن URL Scheme العادية

تتطلب URL Scheme تثبيت التطبيق وليس لديها آلية fallback قياسية. 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 واسم الحملة والإعدادات لنظامي iOS وAndroid بشكل منفصل بالإضافة إلى معلمات التحليلات. بعد الإنشاء، يقوم Firebase بإنشاء رابط قصير مثل https://yourcode.page.link/abc123 يمكن استخدامه في المواد الإعلانية وحملات البريد الإلكتروني ووسائل التواصل الاجتماعي.

للإنشاء البرمجي لـ Dynamic Links، يتم استخدام REST API من Firebase أو 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 وتسجيل معالج 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 مع action 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 links الواردة في مثيل واحد.

يوفر 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. إذا أرجع المستمع قيمة null، فهذا يعني أن Intent لا يحتوي على Dynamic Link — وهذا تشغيل طبيعي للتطبيق بدون رابط وارد. كما تتوفر علامات UTM لتحليلات النقرات، بما في ذلك campaign وmedium وsource وcontent، والتي يمكن تمريرها إلى Google Analytics لتقييم تفصيلي لفعالية كل قناة تسويقية.

الأسئلة الشائعة

ما الفرق بين Firebase Dynamic Links والرابط العميق العادي؟

يدعم Firebase Dynamic Links deferred deep link — يحافظ الرابط على السياق حتى لو لم يتم تثبيت التطبيق. بعد التثبيت، يتلقى التطبيق جميع معلمات الانتقال، وهو أمر مستحيل مع URL Scheme أو Universal Links العادية.

هل يجب الدفع مقابل Firebase Dynamic Links؟

Firebase Dynamic Links مضمنة في الخطة المجانية Firebase Spark. لا توجد حدود على عدد الروابط التي يمكن إنشاؤها. ومع ذلك، أعلنت Google منذ عام 2024 عن الانتقال إلى بنية تحتية جديدة، لذلك قد تتغير الشروط.

هل يمكن استخدام Dynamic Links في تطبيق ويب؟

Dynamic Links مصممة للتطبيقات المحمولة. عند النقر على الرابط من متصفح ويب على سطح المكتب، سيفتح الرابط URL البديل (fallback). بالنسبة لتطبيقات الويب، استخدم الروابط العادية أو منطق إعادة التوجيه الخاص بك.

كيفية اختبار 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 — روابط عالمية موحدة من Google لنظامي 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 في البيان مع action VIEW ونطاق Dynamic Links، بالإضافة إلى Firebase SDK في build.gradle.
  • التحليلات — Firebase يتتبع تلقائياً النقرات على Dynamic Links مع دعم علامات UTM لـ Google Analytics.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا