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

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

https://example.page.link/WXYZ

تعمل حزمة C++ SDK على كل من Android وiOS، مع الحاجة إلى بعض الإعدادات الإضافية لكل منصة.d

قبل البدء

قبل أن تتمكّن من استخدام Firebase Dynamic Links، عليك إجراء ما يلي:

  • تسجيل مشروع C++ وإعداده لاستخدام Firebase

    إذا كان مشروع C++ يستخدم Firebase حاليًا، يكون قد تم تسجيله وإعداده لاستخدام Firebase.

  • إضافة حزمة Firebase C++ SDK إلى مشروع C++

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

Android

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

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

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

iOS

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

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

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

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

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

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

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

استخدام Firebase Dynamic Links API

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

قبل أن تتمكّن من إنشاء 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);

إنشاء رابط ديناميكي قصير 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());
  }
}