Firebase Dynamic Links هي خدمة من Google لإنشاء روابط ذكية توجه المستخدم إلى المكان الصحيح في التطبيق بغض النظر عن تثبيت التطبيق أم لا. وفقاً لوثائق Firebase، تعيد Dynamic Links توجيه المستخدم تلقائياً إلى App Store أو Google Play في حالة عدم تثبيت التطبيق وتستعيد سياق الانتقال بعد التثبيت. الروابط الذكية من Firebase تحل مشكلة URL Scheme التي لا تعمل مع التطبيقات غير المثبتة.
الملامح الرئيسية
Firebase Dynamic Links هي خدمة سحابية من Google تنشئ روابط عالمية موحدة للتطبيقات المحمولة على iOS وAndroid. يحتوي الرابط الديناميكي على رابط عميق (deep link) إلى المحتوى داخل التطبيق ولكنه يتصرف كرابط HTTPS عادي: إذا كان التطبيق مثبتاً، فإنه يفتحه مباشرة؛ وإذا لم يكن مثبتاً، فإنه يعيد التوجيه إلى متجر التطبيقات.
على عكس URL Scheme العادية، يمكن لـ Dynamic Links العمل مع التطبيقات غير المثبتة بفضل تقنية deferred deep link. عندما يقوم المستخدم بتثبيت التطبيق بعد النقر على الرابط، يحفظ Firebase معلمات الانتقال وينقلها عند التشغيل الأول. هذا يفتح إمكانيات لبرامج الإحالة والحملات التسويقية والدعوات.
تتطلب 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 للتنزيل.
يتلقى التطبيق الرابط أثناء تهيئة 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 بشكل صحيح — فهي تحدد كيفية ظهور الرابط عند المشاركة في المراسلات ووسائل التواصل الاجتماعي مع بطاقة معاينة.
| المعلمة | الغرض | إلزامي |
|---|---|---|
| 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 وتسجيل معالج 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 مع action 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 links الواردة في مثيل واحد.
يوفر 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. إذا أرجع المستمع قيمة 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. لا توجد حدود على عدد الروابط التي يمكن إنشاؤها. ومع ذلك، أعلنت Google منذ عام 2024 عن الانتقال إلى بنية تحتية جديدة، لذلك قد تتغير الشروط.
Dynamic Links مصممة للتطبيقات المحمولة. عند النقر على الرابط من متصفح ويب على سطح المكتب، سيفتح الرابط URL البديل (fallback). بالنسبة لتطبيقات الويب، استخدم الروابط العادية أو منطق إعادة التوجيه الخاص بك.
توفر Firebase Console زر Test Dynamic Link لمعاينة السلوك. يمكنك أيضاً استخدام محاكي Android أو محاكي iOS مع تثبيت Firebase SDK للاختبار المحلي لجميع سيناريوهات الانتقال.
يتكون الرابط القصير لـ Firebase Dynamic Link من النطاق page.link ولاحقة عشوائية بطول حوالي 7 أحرف. الطول الإجمالي حوالي 30 حرفاً. يمكن أن يكون deep link الداخلي بأي طول، لكن يُوصى بتحديده بـ 2 كيلوبايت للتوافق.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا