欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

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

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

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

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

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

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

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

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

    1. اگر قبلاً دامنه ای برای پیوندهای پویا خود تنظیم نکرده اید، روی دکمه شروع کار کلیک کرده و دستورات را دنبال کنید.

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

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

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

برای ایجاد یک پیوند پویا، یک شیء 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 را به 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);

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

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

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

می توانید از Dynamic Link Builder 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
setLink پیوندی که برنامه شما باز خواهد شد. نشانی اینترنتی را مشخص کنید که برنامه شما بتواند آن را مدیریت کند، معمولاً محتوای برنامه یا بار بار، که منطق خاص برنامه را آغاز می کند (مانند اعتبار دادن به کاربر با یک کوپن یا نمایش صفحه خوش آمدگویی). این پیوند باید یک URL با قالب بندی مناسب باشد، به درستی کدگذاری URL داشته باشد، از HTTP یا HTTPS استفاده کند و نمی تواند پیوند پویا دیگری باشد.
setDomainUriPrefix پیشوند URL لینک پویا شما، که می توانید آن را در کنسول Firebase پیدا کنید. یک دامنه Dynamic Link مانند مثال‌های زیر است:
https://example.com/link
https://example.page.link
پارامترهای اندروید
setFallbackUrl پیوندی که وقتی برنامه نصب نشده باشد باز می شود. این را برای انجام کاری غیر از نصب برنامه خود از فروشگاه Play در زمانی که برنامه نصب نشده است مشخص کنید، مانند باز کردن نسخه وب موبایل محتوا یا نمایش یک صفحه تبلیغاتی برای برنامه خود.
setMinimumVersion نسخه کد حداقل نسخه برنامه شما که می تواند پیوند را باز کند. اگر برنامه نصب‌شده نسخه قدیمی‌تر باشد، کاربر برای ارتقای برنامه به فروشگاه Play منتقل می‌شود.
IosParameters
setAppStoreId شناسه App Store برنامه شما، برای ارسال کاربران به App Store زمانی که برنامه نصب نشده باشد استفاده می‌شود
setFallbackUrl پیوندی که وقتی برنامه نصب نشده باشد باز می شود. برای انجام کاری غیر از نصب برنامه از App Store زمانی که برنامه نصب نشده است، این مورد را مشخص کنید، مانند باز کردن نسخه وب تلفن همراه محتوا، یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
setCustomScheme طرح URL سفارشی برنامه شما، اگر چیزی غیر از شناسه بسته برنامه شما تعریف شده باشد
setIpadFallbackUrl پیوندی که وقتی برنامه نصب نشده باشد در iPad باز می شود. این را برای انجام کاری غیر از نصب برنامه خود از App Store در زمانی که برنامه نصب نشده است مشخص کنید، مانند باز کردن نسخه وب محتوا یا نمایش یک صفحه تبلیغاتی برای برنامه خود.
setIpadBundleId شناسه بسته برنامه iOS برای استفاده در iPad برای باز کردن پیوند. برنامه باید از صفحه نمای کلی کنسول Firebase به پروژه شما متصل شود.
setMinimumVersion شماره نسخه حداقل نسخه برنامه شما که می تواند پیوند را باز کند. این پرچم پس از باز شدن به برنامه شما منتقل می شود و برنامه شما باید تصمیم بگیرد که با آن چه کاری انجام دهد.
NavigationInfoParameters
setForcedRedirectEnabled اگر روی «1» تنظیم شده است، وقتی پیوند پویا باز شد، از صفحه پیش‌نمایش برنامه رد شوید و در عوض به برنامه یا فروشگاه هدایت شوید. صفحه پیش‌نمایش برنامه (به طور پیش‌فرض فعال است) می‌تواند کاربران را با باز کردن پیوندهای پویا در برنامه‌ها با اطمینان بیشتری به مناسب‌ترین مقصد بفرستد. با این حال، اگر انتظار دارید یک پیوند پویا فقط در برنامه‌هایی باز شود که می‌توانند پیوندهای پویا را بدون این صفحه به طور قابل اعتماد باز کنند، می‌توانید با این پارامتر آن را غیرفعال کنید. این پارامتر فقط روی رفتار Dynamic Link در iOS تأثیر می گذارد.
SocialMetaTagParameters
setTitle عنوانی که هنگام اشتراک گذاری پیوند پویا در یک پست اجتماعی استفاده می شود.
setDescription توضیحاتی که باید هنگام اشتراک گذاری پیوند پویا در یک پست اجتماعی استفاده شود.
setImageUrl نشانی وب یک تصویر مربوط به این پیوند. تصویر باید حداقل 300x200 پیکسل و کمتر از 300 کیلوبایت باشد.
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
پارامترهای تجزیه و تحلیل گوگل پلی این پارامترها («utm_source»، «utm_medium»، «utm_campaign»، «utm_term»، «utm_content») به فروشگاه Play منتقل می‌شوند و همچنین به بار پیوند اضافه می‌شوند.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
پارامترهای تجزیه و تحلیل iTunes Connect. این پارامترها ("pt"، "at"، "ct") به فروشگاه App ارسال می شوند.