ساختن «پیوندهای پویا» با C++‎

بااستفاده از «میانای برنامه‌سازی کاربردی» Firebase Dynamic Links می‌توانید Dynamic Links کوتاه یا بلند بسازید. «میانای برنامه‌سازی کاربردی» چند ساختار پارامتر اختیاری برای ساختن پیوندها می‌گیرد. پیوندهای کوتاه را می‌توان از پیوندهای بلند تولیدشده قبلی نیز ایجاد کرد. Firebase Dynamic Links نشانی وبی مانند نشانی زیر تولید می‌کند:

https://example.page.link/WXYZ

«کیت توسعه نرم‌افزار C++» هم برای Android و هم برای iOS کار می‌کند و برای هر پلاتفرم به چند تنظیم اضافی نیاز دارد.

قبل از شروع

پیش‌از اینکه بتوانید از Firebase Dynamic Links استفاده کنید، باید:

  • پروژه C++ خود را ثبت کنید و آن را برای استفاده از Firebase پیکربندی کنید.

    اگر پروژه C++ شما ازقبل از Firebase استفاده می‌کند، پس ازقبل برای Firebase ثبت و پیکربندی شده است.

  • کیت توسعه نرم‌افزار Firebase C++ را به پروژه C++ خود اضافه کنید.

توجه داشته باشید که افزودن Firebase به پروژه C++ شما شامل وظایفی هم در Firebase کنسول و هم در پروژه C++ باز شما می‌شود (برای مثال، فایل‌های پیکربندی Firebase را از کنسول بارگیری می‌کنید، سپس آن‌ها را به پروژه C++ خود منتقل می‌کنید).

Android

  1. در کنسول Firebase، بخش Dynamic Links را باز کنید.
  2. اگر قبلاً شرایط خدمات را نپذیرفته‌اید و پیشوند نشانی وب برای Dynamic Links خود تنظیم نکرده‌اید، وقتی از شما خواسته شد این کار را انجام دهید.

    اگر ازقبل پیشوند نشانی وب Dynamic Links دارید، آن را یادداشت کنید. وقتی به‌صورت برنامه‌ریزی‌شده Dynamic Links ایجاد می‌کنید، باید پیشوند نشانی وب Dynamic Links ارائه کنید.

  3. توصیه‌شده: الگوهای نشانی وب مجاز در پیوندهای عمیق و پیوندهای جایگزین را مشخص کنید. با انجام این کار، از ایجاد Dynamic Links توسط طرف‌های غیرمجاز که از دامنه شما به سایت‌هایی که تحت کنترل شما نیستند هدایت می‌شوند جلوگیری می‌کنید. به مجاز کردن الگوهای نشانی وب خاص مراجعه کنید.

iOS

  1. در کنسول Firebase، بخش Dynamic Links را باز کنید.
  2. اگر قبلاً شرایط خدمات را نپذیرفته‌اید و پیشوند نشانی وب برای Dynamic Links خود تنظیم نکرده‌اید، وقتی از شما خواسته شد این کار را انجام دهید.

    اگر ازقبل پیشوند نشانی وب Dynamic Links دارید، آن را یادداشت کنید. وقتی به‌صورت برنامه‌ریزی‌شده Dynamic Links ایجاد می‌کنید، باید دامنه Dynamic Links ارائه دهید.

  3. کتابخانه کارخواه Firebase Dynamic Links C++‎ از طرح‌های نشانی وب سفارشی در iOS برای پردازش پیوندها استفاده می‌کند. برای پشتیبانی از دریافت Dynamic Links، باید طرح‌های نشانی وب سفارشی به برنامه‌تان اضافه کنید:
    1. برای باز کردن پیکربندی پروژه، روی نام پروژه در نمای درختی سمت راست دوکلیک کنید. برنامه خود را از بخش هدف‌ها انتخاب کنید، سپس برگه اطلاعات را انتخاب کنید و بخش انواع نشانی وب را ازهم باز کنید.
    2. روی دکمه + کلیک کنید و طرح نشانی وب را برای شناسه مشتری معکوس خود اضافه کنید. برای پیدا کردن این مقدار، GoogleService-Info.plist فایل پیکربندی را باز کنید و کلید REVERSED_CLIENT_ID را پیدا کنید. مقدار آن کلید را کپی کنید و آن را در کادر طرح‌های نشانی وب در صفحه پیکربندی جای‌گذاری کنید. بقیه فیلدها را خالی بگذارید.
    3. روی دکمه + کلیک کنید و طرح نشانی وب دوم را اضافه کنید. این شناسه همان شناسه بسته نرم‌افزاری برنامه شما است. برای مثال، اگر شناسه دسته‌بندی شما com.example.ios است، این مقدار را در چارگوش طرح‌های نشانی وب تایپ کنید. می‌توانید شناسه دسته برنامه را در برگه کلی پیکربندی پروژه (هویت > شناسه دسته) پیدا کنید.

استفاده از کنسول Firebase

اگر می‌خواهید یک Dynamic Link واحد تولید کنید، چه برای اهداف آزمایشی، چه برای تیم بازاریابی‌تان تا به‌راحتی پیوندی ایجاد کند که بتواند در مواردی مثل پست رسانه‌های اجتماعی استفاده شود، ساده‌ترین راه این است که به کنسول Firebase بروید و با دنبال کردن گام‌به‌گام فرم، آن را به‌صورت دستی ایجاد کنید.

دامنه‌های سفارشی

بااستفاده از دامنه خود به‌جای زیردامنه goo.gl یا page.link، می‌توانید کنترل بیشتری بر نمانام‌سازی Dynamic Link خود داشته باشید. برای راه‌اندازی دامنه سفارشی برای پروژه‌تان، این دستورالعمل‌ها را دنبال کنید.

استفاده از Firebase Dynamic Links API

ایجاد و مقداردهی اولیه برنامه

قبل‌از اینکه بتوانید Dynamic Links را ایجاد کنید، باید شیء firebase::App را ایجاد و مقداردهی اولیه کنید.

فایل سرایند را برای firebase::App اضافه کنید:

#include "firebase/app.h"

بخش بعدی بسته به پلاتفرم شما متفاوت است:

Android

‫firebase::App را ایجاد کنید و محیط JNI و مرجع jobject «فعالیت جاوا» را به‌عنوان آرگومان ارسال کنید:

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

اگر برنامه شما حلقه به‌روزرسانی دارد که به‌طور منظم اجرا می‌شود (مثلاً ۳۰ یا ۶۰ بار در ثانیه)، می‌توانید نتایج را یک‌بار در هر به‌روزرسانی بررسی کنید:

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());
  }
}