إنشاء روابط ديناميكية باستخدام C++

يمكنك إنشاء Dynamic Links قصيرة أو طويلة باستخدام واجهة برمجة التطبيقات Firebase Dynamic Links. تتطلّب واجهة برمجة التطبيقات عدّة بنى مَعلمات اختيارية لإنشاء الروابط. يمكن أيضًا إنشاء الروابط القصيرة من رابط طويل تم إنشاؤه مسبقًا. Firebase Dynamic Links تُنشئ عنوان URL مثل ما يلي:

https://example.page.link/WXYZ

تعمل حزمة تطوير البرامج (SDK) لـ C++‎ مع كل من Android وiOS، مع بعض الإعدادات الإضافية المطلوبة لكل نظام أساسي.

قبل البدء

قبل أن تتمكّن من استخدام Firebase Dynamic Links، عليك تنفيذ ما يلي:

  • سجِّل مشروع C++‎ وأعدَّه لاستخدام Firebase.

    إذا كان مشروعك المكتوب بلغة C++‎ يستخدم Firebase حاليًا، يعني ذلك أنّه مسجَّل ومُعدّ مسبقًا لاستخدام Firebase.

  • أضِف حزمة تطوير البرامج (SDK) لـ Firebase C++ إلى مشروعك بلغة C++‎.

يُرجى العِلم أنّ إضافة Firebase إلى مشروع C++‎ تتضمّن مهامًا في كلّ من وحدة تحكّم Firebase ومشروع C++‎ المفتوح (على سبيل المثال، يمكنك تنزيل ملفات إعدادات Firebase من وحدة التحكّم، ثم نقلها إلى مشروع C++‎).

Android

  1. في وحدة تحكّم Firebase، افتح قسم Dynamic Links.
  2. إذا لم تكن قد قبلت بنود الخدمة وضبطت بادئة معرّف الموارد المنتظم (URI) لمشروعك على Dynamic Links، يمكنك إجراء ذلك عندما يُطلب منك.

    إذا كان لديك بادئة عنوان URI لـ Dynamic Links، دوِّنها. يجب تقديم بادئة معرّف موارد منتظم (URI) لـ Dynamic Links عند إنشاء Dynamic Links آليًا.

  3. إجراء يُنصح به: حدِّد أنماط عناوين URL المسموح بها في الروابط لصفحات معيّنة والروابط الاحتياطية. من خلال إجراء ذلك، يمكنك منع الجهات غير المصرّح لها من إنشاء Dynamic Links تعيد التوجيه من نطاقك إلى مواقع إلكترونية لا تتحكّم فيها. يُرجى الاطّلاع على السماح بأنماط عناوين URL محدّدة.

iOS

  1. في وحدة تحكّم Firebase، افتح قسم Dynamic Links.
  2. إذا لم تكن قد قبلت بنود الخدمة وضبطت بادئة معرّف الموارد المنتظم (URI) لمشروعك على Dynamic Links، يمكنك إجراء ذلك عندما يُطلب منك.

    إذا كان لديك بادئة عنوان URI لـ Dynamic Links، دوِّنها. يجب تقديم نطاق Dynamic Links عند إنشاء Dynamic Links آليًا.

  3. تستخدم مكتبة برامج Firebase Dynamic Links C++‎ مخطّطات عناوين URL مخصّصة على نظام التشغيل iOS لمعالجة الروابط. يجب إضافة مخطّطات عناوين URL مخصّصة إلى تطبيقك لإتاحة تلقّي Dynamic Links:
    1. لفتح إعدادات مشروعك، انقر مرّتين على اسم المشروع في العرض التدرّجي للحساب على يمين الصفحة. اختَر تطبيقك من قسم TARGETS (الأهداف)، ثم اختَر علامة التبويب Info (المعلومات)، ووسِّع قسم URL Types (أنواع عناوين URL).
    2. انقر على الزر +، وأضِف مخطّط URL لمعرِّف العميل المعكوس. للعثور على هذه القيمة، افتح ملف الإعداد GoogleService-Info.plist وابحث عن المفتاح REVERSED_CLIENT_ID. انسخ قيمة هذا المفتاح والصقها في مربّع مخطّطات عناوين URL في صفحة الإعدادات. اترك الحقول الأخرى فارغة.
    3. انقر على الزر +، وأضِف مخطّط URL ثانيًا. هذا هو نفسه معرّف حزمة تطبيقك. على سبيل المثال، إذا كان معرّف الحزمة هو com.example.ios، اكتب هذه القيمة في مربّع مخطّطات عناوين URL. يمكنك العثور على معرّف حزمة تطبيقك في علامة التبويب عام ضمن إعدادات المشروع (الهوية > معرّف الحزمة).

استخدام وحدة تحكّم "Firebase"

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

النطاقات الخاصة

يمكنك التحكّم بشكل أكبر في هوية علامتك التجارية في "Dynamic Link" باستخدام نطاقك الخاص بدلاً من نطاق فرعي في "goo.gl" أو "page.link". اتّبِع هذه التعليمات لإعداد نطاق خاص لمشروعك.

استخدام واجهة برمجة التطبيقات Firebase Dynamic Links

إنشاء التطبيق وإعداده

قبل إنشاء Dynamic Links، عليك إنشاء عنصر firebase::App وإعداده.

أدرِج ملف العنوان لـ firebase::App:

#include "firebase/app.h"

يختلف الجزء التالي حسب النظام الأساسي:

Android

أنشئ firebase::App، مع تمرير بيئة JNI ومرجع jobject إلى نشاط Java كوسيطات:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

iOS

أنشئ firebase::App:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

إعداد مكتبة Dynamic Links

قبل إنشاء Dynamic Link، عليك أولاً إعداد مكتبة Dynamic Links:

::firebase::dynamic_links::Initialize(app, null);

جارٍ إنشاء Dynamic Link طويل من المَعلمات

لإنشاء رابط ديناميكي، أنشئ عنصر DynamicLinkComponents، واضبط أيًا من العناصر الاختيارية لإعدادات إضافية، ثم مرِّره إلى dynamic_links::GetShortLink أو dynamic_links::GetLongLink.

ينشئ المثال البسيط التالي رابطًا ديناميكيًا طويلاً يؤدي إلى https://www.example.com/ ويتم فتحه باستخدام تطبيق Android com.example.android.package_name وتطبيق iOS‏ com.example.ios:

firebase::dynamic_links::IOSParameters ios_parameters("com.example.ios");

firebase::dynamic_links::AndroidParameters android_parameters(
    "com.example.android.package_name");

firebase::dynamic_links::DynamicLinkComponents components(
    "https://www.example.com/", "example.page.link");
components.android_parameters = &android_parameters;
components.ios_parameters = &ios_parameters;

firebase::dynamic_links::GeneratedDynamicLink long_link =
    firebase::dynamic_links::GetLongLink(components);

جارٍ إنشاء فيديو Shorts قصير بعنوان "Dynamic Link"

لإنشاء رابط ديناميكي قصير، يمكنك تمرير رابط طويل تم إنشاؤه مسبقًا إلى GetShortLink أو إنشاء DynamicLinkComponents بالطريقة نفسها الموضّحة أعلاه.

يمكن أن تأخذ الدالة GetShortLink مَعلمة ضبط إضافية DynamicLinkOptions مع PathLength، ما يتيح لك التحكّم في كيفية إنشاء الرابط. يتطلّب إنشاء رابط قصير إرسال طلب شبكة إلى الخلفية في Firebase، لذا تكون GetShortLink غير متزامنة، وتُرجع Future<GeneratedLink>.

على سبيل المثال:

firebase::dynamic_links::DynamicLinkOptions short_link_options;
short_link_options.path_length = firebase::dynamic_links::kPathLengthShort;

firebase::Future<firebase::dynamic_links::GeneratedDynamicLink> result =
    firebase::dynamic_links::GetShortLink(components, short_link_options);

إذا كان برنامجك يحتوي على حلقة تحديث تعمل بانتظام (مثلاً 30 أو 60 مرة في الثانية)، يمكنك التحقق من النتائج مرة واحدة لكل تحديث:

if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) {
    firebase::dynamic_links::GeneratedDynamicLink link = *result.result();
    printf("Create short link succeeded: %s\n", link.url.c_str());
  } else {
    printf("Created short link failed with error '%s'\n",
           result.error_message());
  }
}