إنشاء روابط ديناميكية في تطبيق Flutter

يمكنك إنشاء روابط ديناميكية قصيرة أو طويلة باستخدام واجهة برمجة تطبيقات أداة إنشاء الروابط الديناميكية على Firebase. تقبل واجهة برمجة التطبيقات هذه إما رابطًا ديناميكيًا طويل أو كائنًا يحتوي على معلمات رابط ديناميكي، وتعرض عناوين URL مثل الأمثلة التالية:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

قبل أن تتمكن من إنشاء روابط ديناميكية في تطبيق Android، يجب تضمين حزمة تطوير البرامج (SDK) لمنصة Firebase. إذا تم إعداد تطبيقك لتلقّي الروابط الديناميكية، يعني ذلك أنّه سبق لك إكمال هذه الخطوات ويمكنك تخطّي هذا القسم.

  1. تثبيت حِزم تطوير البرامج (SDK) لمنصة Firebase وإعدادها من أجل Flutter إذا لم يسبق لك إجراء ذلك

  2. من الدليل الجذري لمشروع Flutter، شغِّل الأمر التالي لتثبيت المكوّن الإضافي "الروابط الديناميكية":

    flutter pub add firebase_dynamic_links
    
  3. إذا كنت تنشئ تطبيق Android، افتح صفحة إعدادات المشروع في وحدة تحكم Firebase وتأكد من تحديد مفتاح توقيع SHA-1. إذا كنت تستخدم روابط التطبيقات، يُرجى تحديد مفتاح SHA-256 أيضًا.

  4. في "وحدة تحكُّم Firebase"، افتح قسم الروابط الديناميكية.

    1. في حال لم يسبق لك إعداد نطاق للروابط الديناميكية، انقر على زر البدء واتّبِع التعليمات.

      إذا كان لديك نطاق "الروابط الديناميكية" من قبل، دوّنه. يجب توفير نطاق "الروابط الديناميكية" عند إنشاء "الروابط الديناميكية" آليًا.

    2. إجراء مقترَح: من القائمة "المزيد" (⋮)، حدِّد أنماط عناوين 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);

لإنشاء رابط ديناميكي قصير، مرِّر كائن 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,
);

يمكنك استخدام واجهة برمجة تطبيقات إنشاء الروابط الديناميكية لإنشاء روابط ديناميكية باستخدام أي من المعلمات المعتمدة. يُرجى الاطّلاع على مرجع واجهة برمجة التطبيقات.

ينشئ المثال التالي رابطًا ديناميكيًا به مجموعة من المعلمات الشائعة:

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
تعيين الرابط سيفتح التطبيق الرابط. عليك تحديد عنوان URL يمكن لتطبيقك التعامل معه، وعادةً ما يكون محتوى التطبيق أو حمولة البيانات التي تبدأ منطقًا خاصًا بالتطبيق (مثل إضافة قسيمة إلى المستخدم أو عرض شاشة ترحيب). ويجب أن يكون هذا الرابط عنوان URL بتنسيق صحيح، وترميز عنوان URL فيه بشكل صحيح، وأن يستخدم HTTP أو HTTPS، وألا يكون رابطًا ديناميكيًا آخر.
بادئة setDomainUriPrefix بادئة عنوان URL للرابط الديناميكي، والتي يمكنك العثور عليها في وحدة تحكُّم Firebase. يظهر نطاق الرابط الديناميكي على النحو التالي:
https://example.com/link
https://example.page.link
مَعلمات Android
setFallbackUrl الرابط الذي يتم فتحه عندما لا يكون التطبيق مثبَّتًا. حدِّد ذلك لاتخاذ إجراء غير تثبيت التطبيق من "متجر Play" إذا كان التطبيق غير مثبَّت، مثل فتح إصدار الويب المتوافق مع الأجهزة الجوّالة من المحتوى أو عرض صفحة ترويجية لتطبيقك.
ضبط الحد الأدنى للإصدار رمز الإصدار لأدنى إصدار من تطبيقك يمكنه فتح الرابط. إذا كان التطبيق المثبّت إصدارًا قديمًا، يتم نقل المستخدم إلى "متجر Play" لترقية التطبيق.
معلَمات Ios
setAppStoreId رقم تعريف تطبيقك على App Store، والذي يُستخدَم لتوجيه المستخدمين إلى App Store عند عدم تثبيت التطبيق
setFallbackUrl الرابط الذي يتم فتحه عندما لا يكون التطبيق مثبَّتًا. حدِّد هذا الإجراء لإجراء شيء آخر غير تثبيت تطبيقك من App Store إذا كان التطبيق غير مثبَّت، مثل فتح إصدار الويب المتوافق مع الأجهزة الجوّالة من المحتوى أو عرض صفحة ترويجية لتطبيقك.
تعيين CustomScheme مخطَّط عنوان URL المخصّص لتطبيقك، إذا تم تحديده على أنّه يختلف عن معرّف حِزمة التطبيق
setIpadFallbackUrl الرابط الذي يتم فتحه على أجهزة iPad عندما يكون التطبيق غير مثبَّت. حدِّد ذلك لتنفيذ إجراء آخر غير تثبيت تطبيقك من App Store في حال عدم تثبيت التطبيق، مثل فتح إصدار الويب من المحتوى أو عرض صفحة ترويجية لتطبيقك.
setIpadBundleId رقم تعريف حزمة تطبيق iOS المطلوب استخدامه على أجهزة iPad لفتح الرابط يجب ربط التطبيق بمشروعك من صفحة "نظرة عامة" في "وحدة تحكُّم Firebase".
ضبط الحد الأدنى للإصدار تمثّل هذه السمة رقم الإصدار الأدنى لإصدار تطبيقك الذي يمكنه فتح الرابط. يتم تمرير هذه العلامة إلى تطبيقك عند فتحه، وعلى التطبيق تحديد الإجراء الذي سيتم اتخاذه بشأنه.
مَعلَمات معلومات التنقّل
setForcedRedirectEnabled في حال الضبط على '1'، يمكنك تخطّي صفحة معاينة التطبيق عند فتح الرابط الديناميكي، وبدلاً من ذلك إعادة التوجيه إلى التطبيق أو المتجر. يمكن لصفحة معاينة التطبيق (المفعَّلة تلقائيًا) أن توجّه المستخدمين إلى الوجهة الأكثر ملاءمةً عند فتح "الروابط الديناميكية" في التطبيقات، ولكن إذا كنت تتوقّع أن يتم فتح رابط ديناميكي فقط في التطبيقات التي يمكنها فتح "الروابط الديناميكية" بشكل موثوق بدون هذه الصفحة، يمكنك إيقافها باستخدام هذه المعلَمة. ستؤثّر هذه المَعلمة في سلوك الرابط الديناميكي على نظام التشغيل iOS فقط.
مَعلمات SocialMetaTag
تعيين العنوان العنوان المستخدم عند نشر الرابط الديناميكي في مشاركة اجتماعية.
setDescription الوصف المستخدم عند نشر الرابط الديناميكي في مشاركة اجتماعية.
setImageUrl تمثّل هذه السمة عنوان URL لصورة ذات صلة بهذا الرابط. يجب ألا تقلّ حجم الصورة عن 300 × 200 بكسل وألا يزيد حجمها عن 300 كيلوبايت.
مَعلمات Google Analytics
setSource
setMedium
setCampaign
setTerm
setContent
مَعلمات "إحصاءات Google Play" يتم تمرير هذه المَعلمات ("utm_source` و"utm_medium" و"utm_campaign" و"utm_term" و"utm_content") إلى "متجر Play" بالإضافة إلى إلحاقها ببيانات الرابط الأساسية.
مَعلمات ItunesConnectAnalytics
setProviderToken
setAffiliateToken
setCampaignToken
معلَمات إحصاءات iTunes Connect يتم تمرير هذه المعلمات (`pt`، و`at`، و`ct`) إلى App Store.