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

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

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

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

  1. قم بتثبيت وتهيئة Firebase SDKs for Flutter إذا لم تكن قد قمت بذلك بالفعل.

  2. من الدليل الجذر لمشروع Flutter الخاص بك، قم بتشغيل الأمر التالي لتثبيت المكون الإضافي Dynamic Links:

    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,
);

يمكنك استخدام Dynamic Link Builder API لإنشاء روابط ديناميكية باستخدام أي من المعلمات المدعومة. راجع مرجع 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);

يمكنك تعيين معلمات الارتباط الديناميكي بالطرق التالية:

معلمات الارتباط الديناميكي
setLink الرابط الذي سيفتحه تطبيقك. حدد عنوان URL الذي يمكن لتطبيقك التعامل معه، وهو عادةً محتوى التطبيق أو حمولة التطبيق، والذي يبدأ منطقًا خاصًا بالتطبيق (مثل إضافة قسيمة إلى المستخدم أو عرض شاشة ترحيب). يجب أن يكون هذا الرابط عنوان URL منسقًا بشكل جيد، وأن يكون مشفرًا لعنوان URL بشكل صحيح، وأن يستخدم إما HTTP أو HTTPS، ولا يمكن أن يكون رابطًا ديناميكيًا آخر.
setDomainUriPrefix بادئة عنوان URL للرابط الديناميكي، والتي يمكنك العثور عليها في وحدة تحكم Firebase. يشبه مجال الارتباط الديناميكي الأمثلة التالية:
https://example.com/link
https://example.page.link
معلمات Android
setFallbackUrl الرابط الذي سيتم فتحه عندما لا يكون التطبيق مثبتًا. حدد هذا للقيام بشيء آخر غير تثبيت تطبيقك من متجر Play عندما لا يكون التطبيق مثبتًا، مثل فتح إصدار الويب للجوال من المحتوى، أو عرض صفحة ترويجية لتطبيقك.
setMinimumVersion رمز الإصدار الخاص بالإصدار الأدنى لتطبيقك الذي يمكنه فتح الرابط. إذا كان التطبيق المثبت إصدارًا أقدم، فسيتم نقل المستخدم إلى متجر Play لترقية التطبيق.
IosParameters
setAppStoreId معرف متجر التطبيقات الخاص بتطبيقك، والذي يُستخدم لإرسال المستخدمين إلى متجر التطبيقات عندما لا يكون التطبيق مثبتًا
setFallbackUrl الرابط الذي سيتم فتحه عندما لا يكون التطبيق مثبتًا. حدد هذا للقيام بشيء آخر غير تثبيت تطبيقك من App Store عندما لا يكون التطبيق مثبتًا، مثل فتح إصدار الويب للجوال من المحتوى، أو عرض صفحة ترويجية لتطبيقك.
setCustomScheme نظام عنوان URL المخصص لتطبيقك، إذا تم تعريفه على أنه شيء آخر غير معرف حزمة تطبيقك
setIpadFallbackUrl الرابط الذي سيتم فتحه على أجهزة iPad عندما لا يكون التطبيق مثبتًا. حدد هذا للقيام بشيء آخر غير تثبيت تطبيقك من App Store عندما لا يكون التطبيق مثبتًا، مثل فتح إصدار الويب من المحتوى، أو عرض صفحة ترويجية لتطبيقك.
setIpadBundleId معرف حزمة تطبيق iOS المراد استخدامه على أجهزة iPad لفتح الرابط. يجب أن يكون التطبيق متصلاً بمشروعك من صفحة النظرة العامة في وحدة تحكم Firebase.
setMinimumVersion رقم إصدار الحد الأدنى من إصدار تطبيقك الذي يمكنه فتح الرابط. يتم تمرير هذه العلامة إلى تطبيقك عند فتحه، ويجب أن يقرر تطبيقك ما يجب فعله بها.
معلمات معلومات التنقل
setForcedRedirectEnabled إذا تم التعيين على "1"، فتخطى صفحة معاينة التطبيق عند فتح الرابط الديناميكي، وأعد التوجيه بدلاً من ذلك إلى التطبيق أو المتجر. يمكن لصفحة معاينة التطبيق (التي يتم تمكينها افتراضيًا) إرسال المستخدمين بشكل أكثر موثوقية إلى الوجهة الأكثر ملاءمة عند فتح الروابط الديناميكية في التطبيقات؛ ومع ذلك، إذا كنت تتوقع أن يتم فتح الارتباط الديناميكي فقط في التطبيقات التي يمكنها فتح الارتباطات الديناميكية بشكل موثوق بدون هذه الصفحة، فيمكنك تعطيله باستخدام هذه المعلمة. ستؤثر هذه المعلمة على سلوك الارتباط الديناميكي على نظام iOS فقط.
SocialMetaTagParameters
تعيين العنوان العنوان الذي سيتم استخدامه عند مشاركة الارتباط الديناميكي في منشور اجتماعي.
setDescription الوصف الذي سيتم استخدامه عند مشاركة الارتباط الديناميكي في منشور اجتماعي.
setImageUrl عنوان URL للصورة المرتبطة بهذا الرابط. يجب أن تكون الصورة بحجم 300 × 200 بكسل على الأقل، وأقل من 300 كيلو بايت.
معلمات GoogleAnalytics
setSource
setMedium
setCampaign
setTerm
setContent
معلمات تحليلات Google Play. يتم تمرير هذه المعلمات (`utm_source`، و`utm_medium`، و`utm_campaign`، و`utm_term`، و`utm_content`) إلى متجر Play بالإضافة إلى إلحاقها بحمولة الرابط.
iTunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
معلمات تحليلات iTunes Connect. يتم تمرير هذه المعلمات (`pt`، `at`، `ct`) إلى متجر التطبيقات.