ایجاد پیوندهای پویا در یک برنامه Flutter

شما می‌توانید با استفاده از API سازنده لینک‌های پویای Firebase، لینک‌های پویای کوتاه یا بلند ایجاد کنید. این API یا یک لینک پویای بلند یا یک شیء حاوی پارامترهای لینک پویا را می‌پذیرد و URLهایی مانند مثال‌های زیر را برمی‌گرداند:

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

قبل از اینکه بتوانید لینک‌های پویا (Dynamic Links) را در برنامه اندروید خود ایجاد کنید، باید Firebase SDK را وارد کنید. اگر برنامه شما برای دریافت لینک‌های پویا (Dynamic Links) تنظیم شده است، این مراحل را قبلاً انجام داده‌اید و می‌توانید از این بخش صرف نظر کنید.

  1. اگر قبلاً SDK های Firebase را برای Flutter نصب و مقداردهی اولیه نکرده‌اید، این کار را انجام دهید.

  2. از دایرکتوری ریشه پروژه Flutter خود، دستور زیر را برای نصب افزونه Dynamic Links اجرا کنید:

    flutter pub add firebase_dynamic_links
    
  3. اگر در حال ساخت یک برنامه اندروید هستید، صفحه تنظیمات پروژه کنسول Firebase را باز کنید و مطمئن شوید که کلید امضای SHA-1 خود را مشخص کرده‌اید. اگر از App Links استفاده می‌کنید، کلید SHA-256 خود را نیز مشخص کنید.

  4. در کنسول فایربیس، بخش Dynamic Links را باز کنید.

    1. اگر هنوز دامنه‌ای برای Dynamic Links خود تنظیم نکرده‌اید، روی دکمه‌ی Get Started کلیک کنید و دستورالعمل‌ها را دنبال کنید.

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

    2. توصیه شده : از منوی «بیشتر» (⋮)، الگوهای URL مجاز در لینک‌های عمیق و لینک‌های جایگزین خود را مشخص کنید. با انجام این کار، از ایجاد لینک‌های پویا توسط اشخاص غیرمجاز که از دامنه شما به سایت‌هایی که کنترلی بر آنها ندارید، هدایت می‌شوند، جلوگیری می‌کنید.

      به بخش «اجازه دادن به الگوهای خاص URL» مراجعه کنید.

برای ایجاد یک پیوند پویا، یک شیء DynamicLinkParameters جدید ایجاد کنید و آن را به buildLink() یا buildShortLink() ارسال کنید.

مثال مینیمال زیر یک پیوند پویای طولانی به https://www.example.com/ ایجاد می‌کند که در اندروید با com.example.app.android و در iOS با برنامه com.example.app.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);

به طور پیش‌فرض، لینک‌های پویای کوتاه با پسوندهایی تولید می‌شوند که فقط چند کاراکتر دارند. اگرچه این کار لینک‌ها را فشرده‌تر می‌کند، اما این احتمال را نیز ایجاد می‌کند که کسی بتواند یک لینک کوتاه معتبر را حدس بزند. اغلب، اگر کسی این کار را انجام دهد، ضرری ندارد، زیرا لینک به اطلاعات عمومی منتهی می‌شود.

با این حال، اگر لینک‌های کوتاه شما به اطلاعات خاص کاربر منتهی می‌شوند، باید لینک‌های طولانی‌تری با پسوندهای ۱۷ کاراکتری ایجاد کنید که حدس زدن یک لینک پویای معتبر را بسیار بعید کند. برای انجام این کار، ShortDynamicLinkType.unguessable را به متد buildShortLink() ارسال کنید:

final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
    dynamicLinkParams,
    shortLinkType: ShortDynamicLinkType.unguessable,
);

شما می‌توانید از 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);

شما می‌توانید پارامترهای Dynamic Link را با روش‌های زیر تنظیم کنید:

پارامترهای DynamicLink
ست‌لینک لینکی که برنامه شما باز خواهد کرد. یک URL مشخص کنید که برنامه شما می‌تواند آن را مدیریت کند، معمولاً محتوای برنامه یا محتوای برنامه که منطق خاص برنامه را آغاز می‌کند (مانند اعطای کوپن به کاربر یا نمایش صفحه خوشامدگویی). این لینک باید یک URL با فرمت مناسب باشد، به درستی URL-encode شده باشد، از HTTP یا HTTPS استفاده کند و نمی‌تواند یک لینک پویای دیگر باشد.
setDomainUriPrefix پیشوند URL پیوند پویای شما، که می‌توانید آن را در کنسول Firebase پیدا کنید. یک دامنه پیوند پویا مانند مثال‌های زیر است:
https://example.com/link
https://example.page.link
پارامترهای اندروید
تنظیمFallbackUrl لینکی که وقتی برنامه نصب نشده است باز می‌شود. این را مشخص کنید تا وقتی برنامه نصب نشده است، کاری غیر از نصب برنامه از فروشگاه Play انجام دهد، مانند باز کردن نسخه وب موبایل محتوا یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
تنظیم حداقل نسخه کد نسخه (versionCode) حداقل نسخه برنامه شما که می‌تواند لینک را باز کند. اگر برنامه نصب شده نسخه قدیمی‌تری باشد، کاربر برای ارتقاء برنامه به فروشگاه Play هدایت می‌شود.
پارامترهای Ios
شناسه فروشگاه برنامه را تنظیم کنید شناسه اپ استور برنامه شما، که برای هدایت کاربران به اپ استور در زمانی که برنامه نصب نشده است، استفاده می‌شود.
تنظیمFallbackUrl لینکی که وقتی برنامه نصب نشده است باز می‌شود. این را مشخص کنید تا وقتی برنامه نصب نشده است، کاری غیر از نصب برنامه از اپ استور انجام دهد، مانند باز کردن نسخه وب موبایل محتوا، یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
setCustomScheme طرح URL سفارشی برنامه شما، اگر چیزی غیر از شناسه بسته برنامه شما تعریف شده باشد
تنظیم آدرس آی‌پد (setIpadFallbackUrl) لینکی که در آیپدها وقتی برنامه نصب نشده است باز می‌شود. این را مشخص کنید تا وقتی برنامه نصب نشده است، کاری غیر از نصب برنامه از اپ استور انجام دهد، مانند باز کردن نسخه وب محتوا یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
تنظیم شناسه بسته آی‌پد شناسه بسته برنامه iOS برای استفاده در iPads برای باز کردن لینک. برنامه باید از صفحه Overview کنسول Firebase به پروژه شما متصل شود.
تنظیم حداقل نسخه شماره نسخه حداقل نسخه برنامه شما که می‌تواند لینک را باز کند. این پرچم هنگام باز شدن به برنامه شما منتقل می‌شود و برنامه شما باید تصمیم بگیرد که با آن چه کاری انجام دهد.
پارامترهای اطلاعات ناوبری
تنظیم تغییر مسیر اجباری فعال شد اگر روی «۱» تنظیم شود، هنگام باز شدن پیوند پویا، صفحه پیش‌نمایش برنامه را رد می‌کند و در عوض به برنامه یا فروشگاه هدایت می‌شود. صفحه پیش‌نمایش برنامه (که به طور پیش‌فرض فعال است) می‌تواند کاربران را هنگام باز کردن پیوندهای پویا در برنامه‌ها، با اطمینان بیشتری به مناسب‌ترین مقصد هدایت کند. با این حال، اگر انتظار دارید پیوند پویا فقط در برنامه‌هایی باز شود که می‌توانند پیوندهای پویا را بدون این صفحه به طور مطمئن باز کنند، می‌توانید آن را با این پارامتر غیرفعال کنید. این پارامتر فقط بر رفتار پیوند پویا در iOS تأثیر می‌گذارد.
پارامترهای متا تگ اجتماعی
عنوان تنظیم عنوانی که هنگام اشتراک‌گذاری پیوند پویا در یک پست اجتماعی استفاده می‌شود.
مجموعهتوضیحات توضیحی که هنگام اشتراک‌گذاری لینک پویا در یک پست اجتماعی استفاده می‌شود.
تنظیم تصویرURL آدرس اینترنتی (URL) تصویری مرتبط با این لینک. تصویر باید حداقل ۳۰۰x۲۰۰ پیکسل و کمتر از ۳۰۰ کیلوبایت باشد.
پارامترهای گوگل آنالیتیکس
تنظیم منبع
تنظیم متوسط
کمپین تنظیم‌شده
تنظیم مدت
تنظیم محتوا
پارامترهای تحلیلی گوگل پلی. این پارامترها (`utm_source`، `utm_medium`، `utm_campaign`، `utm_term`، `utm_content`) به فروشگاه پلی منتقل شده و همچنین به لینک بارگذاری شده اضافه می‌شوند.
پارامترهای تحلیلی iTunesConnect
setProviderToken
setAffiliateToken
توکن کمپین
پارامترهای تحلیلی iTunes Connect. این پارامترها (`pt`، `at`، `ct`) به اپ استور منتقل می‌شوند.