يمكنك إنشاء روابط ديناميكية قصيرة أو طويلة باستخدام واجهة برمجة التطبيقات الخاصة بأداة إنشاء "روابط Firebase الديناميكية". تقبل واجهة برمجة التطبيقات هذه إما رابطًا طويلاً لـ Dynamic Link أو عنصرًا يحتوي على مَعلمات Dynamic Link، وتعرض عناوين URL مثل الأمثلة التالية:
https://example.com/link/WXYZ
https://example.page.link/WXYZ
إعداد Firebase وحزمة تطوير البرامج (SDK) لـ "الروابط الديناميكية"
قبل أن تتمكّن من إنشاء روابط ديناميكية في تطبيق Android، عليك تضمين حزمة تطوير البرامج (SDK) من Firebase. إذا كان تطبيقك معدًا لتلقّي روابط ديناميكية، تكون قد أكملت هذه الخطوات ويمكنك تخطّي هذا القسم.
ثبِّت حِزم تطوير البرامج (SDK) من Firebase لنظام Flutter وأعِد ضبطها إذا لم يسبق لك إجراء ذلك.
من دليل الجذر لمشروع Flutter، نفِّذ الأمر التالي لتثبيت المكوّن الإضافي "روابط ديناميكية":
flutter pub add firebase_dynamic_linksإذا كنت بصدد إنشاء تطبيق Android، افتح صفحة إعدادات المشروع في "وحدة تحكّم Firebase" وتأكَّد من أنّك حدّدت مفتاح التوقيع SHA-1. إذا كنت تستخدم روابط التطبيقات، عليك أيضًا تحديد مفتاح SHA-256.
في وحدة تحكّم Firebase، افتح قسم روابط ديناميكية.
إذا لم يسبق لك إعداد نطاق لروابطك الديناميكية، انقر على الزر البدء واتّبِع التعليمات.
إذا كان لديك نطاق روابط ديناميكية، سجِّله. يجب توفير نطاق لـ "روابط التطبيق الديناميكية" عند إنشاء هذه الروابط آليًا.

يُنصح بما يلي: من قائمة "المزيد" (⋮)، حدِّد أنماط عناوين URL المسموح بها في الروابط لصفحات معيّنة والروابط الاحتياطية. ويتيح لك ذلك منع الجهات غير المصرّح لها من إنشاء روابط ديناميكية تعيد التوجيه من نطاقك إلى مواقع إلكترونية لا تتحكّم فيها.
راجِع مقالة السماح بأنماط عناوين URL محدّدة.
إنشاء رابط ديناميكي من المَعلمات
لإنشاء رابط ديناميكي، أنشئ عنصر DynamicLinkParameters جديدًا ومرِّره إلى buildLink() أو buildShortLink().
ينشئ المثال البسيط التالي رابطًا ديناميكيًا طويلاً إلى
https://www.example.com/ يتم فتحه باستخدام com.example.app.android على Android
والتطبيق com.example.app.ios على iOS:
final dynamicLinkParams = DynamicLinkParameters(
link: Uri.parse("https://www.example.com/"),
uriPrefix: "https://example.page.link",
androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);
لإنشاء رابط مختصر من نوع Dynamic Link، مرِّر العنصر DynamicLinkParameters إلى
buildShortLink(). يتطلّب إنشاء الرابط المختصَر إجراء طلب على الشبكة.
على سبيل المثال:
final dynamicLinkParams = DynamicLinkParameters(
link: Uri.parse("https://www.example.com/"),
uriPrefix: "https://example.page.link",
androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);
يتم تلقائيًا إنشاء روابط ديناميكية قصيرة تتضمّن لاحقات لا يتجاوز طولها بضعة أحرف. وعلى الرغم من أنّ ذلك يجعل الروابط أكثر اختصارًا، إلا أنّه يزيد أيضًا من احتمال أن يخمن أحد المستخدمين رابطًا مختصرًا صالحًا. في كثير من الأحيان، لا يترتّب أي ضرر على ذلك لأنّ الرابط يؤدي إلى معلومات عامة.
ومع ذلك، إذا كانت روابطك القصيرة تؤدي إلى معلومات خاصة بالمستخدم، عليك إنشاء روابط أطول تتضمّن لاحقات مكوّنة من 17 حرفًا تجعل من غير المحتمل أن يتمكّن أحد من تخمين رابط صالح من "الروابط الديناميكية". لإجراء ذلك، مرِّر ShortDynamicLinkType.unguessable
إلى الطريقة buildShortLink():
final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
dynamicLinkParams,
shortLinkType: ShortDynamicLinkType.unguessable,
);
مَعلمات الروابط الديناميكية
يمكنك استخدام واجهة برمجة التطبيقات Dynamic Link Builder API لإنشاء روابط ديناميكية تتضمّن أيًا من المَعلمات المتوافقة. يمكنك الاطّلاع على مرجع واجهة برمجة التطبيقات.
ينشئ المثال التالي رابطًا ديناميكيًا مع ضبط عدّة مَعلمات شائعة:
final dynamicLinkParams = DynamicLinkParameters(
link: Uri.parse("https://www.example.com/"),
uriPrefix: "https://example.page.link",
androidParameters: const AndroidParameters(
packageName: "com.example.app.android",
minimumVersion: 30,
),
iosParameters: const IOSParameters(
bundleId: "com.example.app.ios",
appStoreId: "123456789",
minimumVersion: "1.0.1",
),
googleAnalyticsParameters: const GoogleAnalyticsParameters(
source: "twitter",
medium: "social",
campaign: "example-promo",
),
socialMetaTagParameters: SocialMetaTagParameters(
title: "Example of a Dynamic Link",
imageUrl: Uri.parse("https://example.com/image.png"),
),
);
final dynamicLink =
await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);
يمكنك ضبط مَعلمات Dynamic Link باستخدام الطرق التالية:
| مَعلمات DynamicLink | |
|---|---|
| setLink | الرابط الذي سيفتحه تطبيقك حدِّد عنوان URL يمكن لتطبيقك التعامل معه، ويكون عادةً محتوى التطبيق أو حمولته، ما يؤدي إلى بدء منطق خاص بالتطبيق (مثل منح المستخدم قسيمة أو عرض شاشة ترحيب). يجب أن يكون هذا الرابط عنوان URL منسَّقًا بشكل جيد، وأن يكون مشفَّرًا بشكل صحيح باستخدام ترميز URL، وأن يستخدم HTTP أو HTTPS، ولا يمكن أن يكون رابطًا ديناميكيًا آخر. |
| setDomainUriPrefix | بادئة عنوان URL للرابط الديناميكي، ويمكنك العثور عليها في وحدة تحكّم Firebase. يبدو نطاق "الرابط الديناميكي" مثل الأمثلة التالية:
https://example.com/link https://example.page.link |
| AndroidParameters | |
|---|---|
| setFallbackUrl | الرابط الذي سيتم فتحه عندما لا يكون التطبيق مثبَّتًا حدِّد هذا الخيار لتنفيذ إجراء آخر غير تثبيت تطبيقك من "متجر Google Play" عندما لا يكون التطبيق مثبَّتًا، مثل فتح نسخة الويب المتوافقة مع الأجهزة الجوّالة من المحتوى أو عرض صفحة ترويجية لتطبيقك. |
| setMinimumVersion | تمثّل هذه السمة رمز الإصدار للحد الأدنى من إصدار تطبيقك الذي يمكنه فتح الرابط. إذا كان التطبيق المثبَّت إصدارًا قديمًا، سيتم نقل المستخدم إلى متجر Google Play لتحديث التطبيق. |
| IosParameters | |
|---|---|
| setAppStoreId | معرّف تطبيقك على App Store، ويُستخدم لتوجيه المستخدمين إلى App Store عندما لا يكون التطبيق مثبَّتًا |
| setFallbackUrl | الرابط الذي سيتم فتحه عندما لا يكون التطبيق مثبَّتًا حدِّد هذا الخيار لتنفيذ إجراء آخر غير تثبيت تطبيقك من App Store عندما لا يكون التطبيق مثبّتًا، مثل فتح نسخة الويب المتوافقة مع الأجهزة الجوّالة من المحتوى أو عرض صفحة ترويجية لتطبيقك. |
| setCustomScheme | مخطّط عنوان URL المخصّص لتطبيقك، إذا تم تحديده على أنّه شيء آخر غير معرّف حزمة تطبيقك |
| setIpadFallbackUrl | الرابط الذي سيتم فتحه على أجهزة iPad عندما لا يكون التطبيق مثبَّتًا حدِّد هذا الخيار لتنفيذ إجراء آخر غير تثبيت تطبيقك من App Store عندما لا يكون التطبيق مثبّتًا، مثل فتح نسخة الويب من المحتوى أو عرض صفحة ترويجية لتطبيقك. |
| setIpadBundleId | معرّف حزمة تطبيق iOS الذي سيتم استخدامه على أجهزة iPad لفتح الرابط. يجب ربط التطبيق بمشروعك من صفحة "نظرة عامة" في وحدة تحكّم Firebase. |
| setMinimumVersion | رقم إصدار الحد الأدنى من إصدار تطبيقك الذي يمكنه فتح الرابط. يتم تمرير هذا العلامة إلى تطبيقك عند فتحه، ويجب أن يحدّد تطبيقك الإجراء الذي سيتّخذه بشأنها. |
| NavigationInfoParameters | |
|---|---|
| setForcedRedirectEnabled | إذا تم ضبط القيمة على "1"، سيتم تخطّي صفحة معاينة التطبيق عند فتح الرابط الديناميكي، وسيتم بدلاً من ذلك إعادة التوجيه إلى التطبيق أو المتجر. يمكن لصفحة معاينة التطبيق (المفعَّلة تلقائيًا) أن توجّه المستخدمين بشكل أكثر موثوقية إلى الوجهة الأنسب عند فتح "الروابط الديناميكية" في التطبيقات. ومع ذلك، إذا كنت تتوقّع فتح "الرابط الديناميكي" في التطبيقات التي يمكنها فتح "الروابط الديناميكية" بشكل موثوق بدون هذه الصفحة فقط، يمكنك إيقافها باستخدام هذه المَعلمة. سيؤثّر هذا المَعلمة في سلوك الرابط الديناميكي على أجهزة iOS فقط. |
| SocialMetaTagParameters | |
|---|---|
| setTitle | عنوان سيتم استخدامه عند مشاركة الرابط الديناميكي في منشور على وسائل التواصل الاجتماعي. |
| setDescription | الوصف الذي سيتم استخدامه عند مشاركة الرابط الديناميكي في منشور على وسائل التواصل الاجتماعي |
| setImageUrl | تمثّل هذه السمة عنوان URL لصورة ذات صلة بهذا الرابط. يجب أن يكون حجم الصورة 300x200 بكسل على الأقل، وألا يزيد عن 300 كيلوبايت. |
| GoogleAnalyticsParameters | |
|---|---|
| setSource setMedium setCampaign setTerm setContent |
مَعلمات "إحصاءات Google Play" يتم تمرير هذه المَعلمات (`utm_source` و`utm_medium` و `utm_campaign` و`utm_term` و`utm_content`) إلى "متجر Google Play"، كما يتم إلحاقها بحِزمة بيانات الرابط. |
| ItunesConnectAnalyticsParameters | |
|---|---|
| setProviderToken setAffiliateToken setCampaignToken |
مَعلمات إحصاءات iTunes Connect يتم تمرير هذه المَعلمات (`pt` و`at` و`ct`) إلى App Store. |