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 Dynamic Links שיצרת , עליך לכלול את Dynamic Links SDK באפליקציה שלך ולהתקשר לשיטת FirebaseDynamicLinks.getDynamicLink() כאשר האפליקציה שלך נטענת כדי להעביר את הנתונים ב-Dynamic Link.

  1. התקן ואתחל את ערכות ה-SDK של Firebase עבור Flutter אם עדיין לא עשית זאת.

  2. מספריית השורש של פרויקט Flutter שלך, הפעל את הפקודה הבאה כדי להתקין את הפלאגין Dynamic Links:

    flutter pub add firebase_dynamic_links
    
  3. אם אתה בונה אפליקציית Android, פתח את דף הגדרות הפרויקט של מסוף Firebase וודא שציינת את מפתח החתימה SHA-1 שלך. אם אתה משתמש ב-App Links, ציין גם את מפתח SHA-256 שלך.

אינטגרציה של פלטפורמה

השלם את שלבי שילוב הפלטפורמה הבאים עבור הפלטפורמות שאליהן אתה בונה את האפליקציה שלך.

דְמוּי אָדָם

באנדרואיד, עליך להוסיף מסנן כוונות חדש לתפוס קישורים עמוקים של הדומיין שלך, מכיוון שהקישור הדינמי יפנה מחדש לדומיין שלך אם האפליקציה שלך מותקנת. זה נדרש כדי שהאפליקציה שלך תקבל את נתוני הקישור הדינמי לאחר התקנתה/עדכון מחנות 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 שלך מוגדרת כהלכה עם מזהה ה-App Store ומזהה הצוות שלך.

  3. באתר Apple Developer, צור פרופיל אספקה ​​עבור האפליקציה שלך עם יכולת ה-Associated Domain מופעלת.

  4. ב-Xcode, בצע את הפעולות הבאות:

    1. פתח את האפליקציה שלך מתחת לכותרת TARGETS .

    2. בדף חתימה ויכולות, ודא שהצוות שלך רשום ושפרופיל ההקצאה שלך מוגדר.

    3. בדף חתימה ויכולות, הפעל דומיינים משויכים והוסף את הדברים הבאים לרשימת הדומיינים המשויכים:

      applinks:example.page.link
      
    4. בדף המידע, הוסף סוג כתובת URL לפרויקט שלך. הגדר את השדה 'סכימות URL' למזהה החבילה של האפליקציה שלך. (המזהה יכול להיות Bundle ID או מה שתרצה.)

    5. אם הגדרת תחום מותאם אישית עבור פרויקט Firebase שלך, הוסף את קידומת כתובת האתר של קישור דינמי לקובץ 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 של Dynamic Links משתמש בלוח ההדבקה כדי לשפר את האמינות של קישורי עומק לאחר ההתקנה. על ידי שימוש בלוח ההדבקה, Dynamic Links יכולים לוודא שכאשר משתמש פותח קישור דינמי אך צריך להתקין תחילה את האפליקציה שלך, המשתמש יכול לעבור מיד לתוכן המקושר המקורי בעת פתיחת האפליקציה בפעם הראשונה לאחר ההתקנה.

      החיסרון של זה הוא שהשימוש בלוח הדבק מפעיל התראה ב-iOS 14 ואילך. לכן, בפעם הראשונה שמשתמשים פותחים את האפליקציה שלך, אם הלוח מכיל כתובת אתר של קישור דינמי, הם יראו הודעה שהאפליקציה שלך ניגשה ללוח, מה שעלול לגרום לבלבול.

      כדי להשבית התנהגות זו, ערוך את הקובץ 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 getter מחזיר Stream המכיל PendingDynamicLinkData :

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