Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

پیوندهای دینامیک Firebase را در یک برنامه Flutter دریافت کنید

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

برای دریافت پیوندهای دینامیک Firebase که ایجاد کرده‌اید، باید SDK پیوندهای پویا را در برنامه خود قرار دهید و هنگامی که برنامه شما بارگیری می‌شود، متد FirebaseDynamicLinks.getDynamicLink() را فراخوانی کنید تا داده‌های ارسال شده در پیوند پویا دریافت شود.

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

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

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

ادغام پلتفرم

مراحل ادغام پلتفرم زیر را برای پلتفرم هایی که برنامه خود را برای آنها می سازید، تکمیل کنید.

اندروید

در اندروید، باید یک فیلتر قصد جدید برای پیوندهای عمیق دامنه خود اضافه کنید، زیرا در صورت نصب برنامه، پیوند پویا به دامنه شما هدایت می شود. این برای دریافت داده‌های Dynamic Link پس از نصب/به‌روزرسانی از فروشگاه Play و یک ضربه زدن روی دکمه Continue، مورد نیاز است. در AndroidManifest.xml :

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data
        android:host="example.com"
        android:scheme="https"/>
</intent-filter>

وقتی کاربران یک پیوند پویا را با پیوند عمیق به طرح و میزبانی که مشخص کرده‌اید باز می‌کنند، برنامه شما فعالیت را با این فیلتر قصد شروع می‌کند تا پیوند را مدیریت کند.

پلتفرم های اپل

  1. اگر قبلاً ندارید یک حساب توسعه دهنده اپل ایجاد کنید .

  2. در صفحه تنظیمات پروژه کنسول Firebase، مطمئن شوید که برنامه iOS شما با شناسه App Store و Team ID شما به درستی پیکربندی شده است.

  3. در سایت Apple Developer، با فعال بودن قابلیت Associated Domain، یک نمایه تامین کننده برای برنامه خود ایجاد کنید.

  4. در Xcode موارد زیر را انجام دهید:

    1. برنامه خود را در زیر هدر TARGETS باز کنید.

    2. در صفحه Signing & Capabilities، مطمئن شوید که تیم شما ثبت شده است و نمایه تامین شما تنظیم شده است.

    3. در صفحه Signing & Capabilities، Associated Domains را فعال کنید و موارد زیر را به لیست Associated Domains اضافه کنید:

      applinks:example.page.link
      
    4. در صفحه اطلاعات، یک نوع URL به پروژه خود اضافه کنید. فیلد URL Schemes را روی شناسه بسته نرم افزاری خود تنظیم کنید. (شناسه می تواند Bundle ID یا هر چیزی که می خواهید باشد.)

    5. اگر یک دامنه سفارشی برای پروژه Firebase خود راه اندازی کرده اید، پیشوند URL Link Dynamic Link را با استفاده از کلید FirebaseDynamicLinksCustomDomains به فایل Info.plist پروژه iOS خود اضافه کنید.

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
      <key>FirebaseDynamicLinksCustomDomains</key>
      <array>
          <string>https://custom.domain.io/path1</string>
          <string>https://custom.domain.io/path2</string>
      </array>
      
      ...other settings
      
      </dict>
      </plist>
      
    6. اختیاری: غیرفعال کردن استفاده SDK پیوندهای پویا از مقوای iOS.

      به طور پیش‌فرض، Dynamic Links SDK از مقوا برای بهبود قابلیت اطمینان پیوندهای عمیق پس از نصب استفاده می‌کند. با استفاده از مقوا، Dynamic Links می‌تواند مطمئن شود که وقتی کاربر یک پیوند پویا را باز می‌کند اما باید ابتدا برنامه شما را نصب کند، کاربر می‌تواند بلافاصله پس از باز کردن برنامه برای اولین بار پس از نصب، بلافاصله به محتوای پیوند شده اصلی برود.

      نقطه ضعف این کار این است که استفاده از مقوا باعث ایجاد اعلان در iOS 14 به بعد می شود. بنابراین، اولین باری که کاربران برنامه شما را باز می‌کنند، اگر کارت‌برد حاوی URL پیوند پویا باشد، اعلانی مبنی بر دسترسی برنامه شما به کارت‌بورد مشاهده خواهند کرد که می‌تواند باعث سردرگمی شود.

      برای غیرفعال کردن این رفتار، فایل Info.plist پروژه Xcode خود را ویرایش کنید و کلید FirebaseDeepLinkPasteboardRetrievalEnabled را روی NO تنظیم کنید.

برای مدیریت یک پیوند پویا در برنامه خود، دو سناریو نیاز به پیاده سازی دارد.

دولت خاتمه یافته

اگر برنامه خاتمه یابد، متد FirebaseDynamicLinks.getInitialLink به شما امکان می دهد پیوند پویا را که برنامه را باز کرده است بازیابی کنید.

این یک درخواست ناهمزمان است، بنابراین منطقی است که یک پیوند را قبل از رندر کردن منطق برنامه، مانند یک ناوبر، مدیریت کنید. به عنوان مثال، شما می توانید این را در تابع main مدیریت کنید:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);

  // Get any initial links
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  runApp(MyApp(initialLink));
}

در منطق برنامه خود، می توانید بررسی کنید که آیا یک پیوند مدیریت شده است یا خیر و یک عمل را انجام دهید، به عنوان مثال:

if (initialLink != null) {
  final Uri deepLink = initialLink.link;
  // Example of using the dynamic link to push the user to a different screen
  Navigator.pushNamed(context, deepLink.path);
}

از طرف دیگر، اگر می‌خواهید تشخیص دهید که آیا از یک Dynamic Link دقیق برای باز کردن برنامه استفاده شده است یا خیر، آن را به روش getDynamicLink کنید:

String link = 'https://dynamic-link-domain/ke2Qa';

final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));

پس زمینه / وضعیت پیش زمینه

زمانی که برنامه باز است یا در پس‌زمینه است، می‌توانید با استفاده از کنترل‌کننده جریان به رویدادهای پیوندهای پویا گوش دهید. دریافت‌کننده FirebaseDynamicLinks.onLink یک Stream حاوی PendingDynamicLinkData را برمی‌گرداند:

FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
  // Handle errors
});