Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

احصل على روابط Firebase الديناميكية في تطبيق Flutter

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

لتلقي روابط Firebase الديناميكية التي قمت بإنشائها ، يجب عليك تضمين Dynamic Links SDK في تطبيقك واستدعاء طريقة FirebaseDynamicLinks.getDynamicLink() عند تحميل تطبيقك للحصول على البيانات التي تم تمريرها في الرابط الديناميكي.

  1. قم بتثبيت وتهيئة Firebase SDKs لـ Flutter إذا لم تكن قد قمت بذلك بالفعل.

  2. من الدليل الجذر لمشروع Flutter الخاص بك ، قم بتشغيل الأمر التالي لتثبيت المكون الإضافي Dynamic Links:

    flutter pub add firebase_dynamic_links
    
  3. إذا كنت تقوم بإنشاء تطبيق Android ، فافتح صفحة إعدادات المشروع في وحدة تحكم Firebase وتأكد من تحديد مفتاح توقيع SHA-1. إذا كنت تستخدم ارتباطات التطبيق ، فحدد أيضًا مفتاح SHA-256 الخاص بك.

تكامل النظام الأساسي

أكمل خطوات تكامل النظام الأساسي التالية للأنظمة الأساسية التي تنشئ تطبيقك من أجلها.

ذكري المظهر

على نظام التشغيل Android ، يجب عليك إضافة عامل تصفية نية جديد يلتقط روابط عميقة لنطاقك ، لأن الرابط الديناميكي سيعيد التوجيه إلى مجالك إذا كان تطبيقك مثبتًا. هذا مطلوب لتطبيقك لتلقي بيانات الرابط الديناميكي بعد تثبيته / تحديثه من متجر Play وضغط مرة واحدة على زر متابعة. في 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. قم بإنشاء حساب مطور Apple إذا لم يكن لديك حساب بالفعل.

  2. في صفحة إعدادات المشروع بوحدة تحكم Firebase ، تأكد من تكوين تطبيق iOS الخاص بك بشكل صحيح باستخدام معرف متجر التطبيقات ومعرف الفريق.

  3. على موقع Apple Developer ، أنشئ ملف تعريف توفير لتطبيقك مع تمكين إمكانية المجال المرتبط.

  4. في Xcode ، قم بما يلي:

    1. افتح التطبيق الخاص بك تحت عنوان TARGETS .

    2. في صفحة التوقيع والقدرات ، تأكد من تسجيل فريقك وتعيين ملف التزويد.

    3. في صفحة التوقيع والقدرات ، قم بتمكين المجالات المرتبطة وأضف ما يلي إلى قائمة المجالات المرتبطة:

      applinks:example.page.link
      
    4. في صفحة المعلومات ، أضف نوع URL إلى مشروعك. عيّن حقل مخططات عناوين URL على معرّف حزمة تطبيقك. (يمكن أن يكون المعرف هو Bundle ID أو أيًا كان ما تريده.)

    5. إذا قمت بإعداد مجال مخصص لمشروع Firebase الخاص بك ، فأضف بادئة عنوان URL للرابط الديناميكي إلى ملف Info.plist الخاص بمشروع iOS باستخدام مفتاح FirebaseDynamicLinksCustomDomains .

      <?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. اختياري: قم بتعطيل استخدام Dynamic Links SDK للوحة لصق iOS.

      بشكل افتراضي ، تستخدم حزمة SDK للروابط الديناميكية لوحة اللصق لتحسين موثوقية الروابط العميقة بعد التثبيت. باستخدام لوحة اللصق ، يمكن للروابط الديناميكية التأكد من أنه عندما يفتح المستخدم رابطًا ديناميكيًا ولكنه يحتاج إلى تثبيت تطبيقك أولاً ، يمكن للمستخدم الانتقال فورًا إلى المحتوى المرتبط الأصلي عند فتح التطبيق لأول مرة بعد التثبيت.

      الجانب السلبي لهذا هو أن استخدام لوحة اللصق يؤدي إلى ظهور إشعار على نظام التشغيل 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);
}

بدلاً من ذلك ، إذا كنت ترغب في تحديد ما إذا كان قد تم استخدام رابط ديناميكي دقيق لفتح التطبيق ، فمرره إلى طريقة 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
});

لاختبار ارتباط ديناميكي على iOS ، يجب أن تستخدم جهازًا فعليًا. ستحتاج أيضًا إلى تشغيل التطبيق في وضع الإصدار ( flutter run --release .) ، في حالة اختبار ارتباط ديناميكي من حالة التطبيق المنتهية (أي تم تمرير التطبيق سريعًا).