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

می‌توانید با Firebase Dynamic Links Builder API، «پیوندهای پویای» کوتاه یا بلند ایجاد کنید. این API یا یک Dynamic Link طولانی را می‌پذیرد یا شیئی حاوی پارامترهای Dynamic Link، و نشانی‌های وبی مانند نمونه‌های زیر را برمی‌گرداند:

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

قبل‌از اینکه بتوانید «پیوندهای پویا» را در برنامه Android خود ایجاد کنید، باید کیت توسعه نرم‌افزار Firebase را اضافه کنید. اگر برنامه‌تان برای دریافت «پیوندهای پویا» راه‌اندازی شده است، قبلاً این مراحل را تکمیل کرده‌اید و می‌توانید از این بخش رد شوید.

  1. اگر قبلاً این کار را نکرده‌اید، کیت‌های توسعه نرم‌افزار Firebase برای Flutter را نصب و مقداردهی اولیه کنید.

  2. از دایرکتوری ریشه پروژه Flutter، فرمان زیر را اجرا کنید تا افزونه «پیوندهای پویا» نصب شود:

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

  4. در کنسول Firebase، بخش پیوندهای پویا را باز کنید.

    1. اگر هنوز دامنه‌ای برای «پیوندهای پویا» خود راه‌اندازی نکرده‌اید، روی دکمه شروع به کار کلیک کنید و پیام‌واره‌ها را دنبال کنید.

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

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

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

برای ایجاد Dynamic Link، شیء 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);

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

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

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

می‌توانید از Dynamic Link Builder 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
setLink پیوندی که برنامه‌تان باز خواهد کرد. نشانی وبی را مشخص کنید که برنامه‌تان بتواند آن را مدیریت کند، معمولاً محتوا یا بار داده برنامه، که منطق مختص برنامه را آغاز می‌کند (مثل اعتبار دادن به کاربر با کوپن یا نمایش صفحه خوشامدگویی). این پیوند باید نشانی وب با قالب‌بندی مناسب باشد، به‌درستی کدگذاری نشانی وب شده باشد، از HTTP یا HTTPS استفاده کند، و نمی‌تواند «پیوند پویای» دیگری باشد.
setDomainUriPrefix پیشوند نشانی وب «پیوند پویای» شما که می‌توانید آن را در کنسول Firebase پیدا کنید. دامنه Dynamic Link شبیه نمونه‌های زیر است:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl پیوندی که وقتی برنامه نصب نشده است باز می‌شود. این را برای انجام کاری غیراز نصب برنامه‌تان از «فروشگاه Play» در زمانی که برنامه نصب نشده است مشخص کنید، مثلاً باز کردن نسخه وب تلفن همراه محتوا، یا نمایش صفحه تبلیغاتی برای برنامه‌تان.
setMinimumVersion کد نسخه حداقل نسخه برنامه‌تان که می‌تواند پیوند را باز کند. اگر برنامه نصب‌شده نسخه قدیمی‌تری باشد، کاربر به «فروشگاه Play» هدایت می‌شود تا برنامه را ارتقا دهد.
IosParameters
setAppStoreId شناسه App Store برنامه‌تان، که برای ارسال کاربران به App Store در زمانی که برنامه نصب نشده است استفاده می‌شود
setFallbackUrl پیوندی که وقتی برنامه نصب نشده است باز می‌شود. این را برای انجام کاری غیراز نصب برنامه از App Store در زمانی که برنامه نصب نشده است مشخص کنید، مثلاً باز کردن نسخه وب تلفن همراه محتوا، یا نمایش صفحه تبلیغاتی برای برنامه شما.
تنظیم طرح‌واره سفارشی طرح‌واره نشانی وب سفارشی برنامه‌تان، اگر چیزی غیراز شناسه بسته ترکیبی برنامه‌تان تعریف شده باشد
setIpadFallbackUrl پیوندی که وقتی برنامه نصب نشده است در iPad باز می‌شود. این را برای انجام کاری غیراز نصب برنامه‌تان از App Store در زمانی که برنامه نصب نشده است مشخص کنید، مثلاً باز کردن نسخه وب محتوا یا نمایش صفحه تبلیغاتی برای برنامه‌تان.
setIpadBundleId شناسه بسته ترکیبی برنامه iOS برای استفاده در iPad جهت باز کردن پیوند. برنامه باید از صفحه «نمای کلی» کنسول Firebase به پروژه شما متصل شود.
setMinimumVersion شماره نسخه حداقل نسخه‌ای از برنامه‌تان که می‌تواند پیوند را باز کند. این پرچم هنگام باز شدن برنامه به آن منتقل می‌شود و برنامه شما باید تصمیم بگیرد که با آن چه کند.
NavigationInfoParameters
setForcedRedirectEnabled اگر روی «۱» تنظیم شده باشد، وقتی «پیوند پویا» باز می‌شود، از صفحه پیش‌نمایش برنامه رد می‌شود و درعوض به برنامه یا فروشگاه هدایت می‌کند. صفحه پیش‌نمایش برنامه (به‌طور پیش‌فرض فعال است) می‌تواند کاربران را به‌طور مطمئن‌تری به مناسب‌ترین مقصد هدایت کند وقتی «پیوندهای پویا» را در برنامه‌ها باز می‌کنند؛ بااین‌حال، اگر انتظار دارید «پیوند پویا» فقط در برنامه‌هایی باز شود که می‌توانند «پیوندهای پویا» را به‌طور مطمئن بدون این صفحه باز کنند، می‌توانید آن را با این پارامتر غیرفعال کنید. این پارامتر بر رفتار «پیوند پویا» فقط در iOS تأثیر می‌گذارد.
SocialMetaTagParameters
setTitle عنوانی که هنگام هم‌رسانی «پیوند پویا» در پست اجتماعی استفاده می‌شود.
setDescription شرحی که هنگام هم‌رسانی «پیوند پویا» در پست اجتماعی استفاده می‌شود.
setImageUrl نشانی وب تصویر مربوط به این پیوند. تصویر باید حداقل ۳۰۰×۲۰۰ پیکسل و کمتر از ۳۰۰ کیلوبایت باشد.
GoogleAnalyticsParameters
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`) به App Store ارسال می‌شوند.