יצירת קישורים דינמיים באפליקציית Flutter

אפשר ליצור קישורים דינמיים קצרים או ארוכים באמצעות ה-API של הכלי ליצירת קישורים דינמיים ב-Firebase. ה-API הזה מקבל קישור דינמי ארוך או אובייקט שמכיל קישור דינמי ומחזירה כתובות URL כמו הדוגמאות הבאות:

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

לפני שתוכלו ליצור קישורים דינמיים באפליקציה ל-Android, עליכם לכלול את Firebase SDK. אם האפליקציה מוגדרת לקבלת קישורים דינמיים, כבר השלמת את השלבים האלה, ואפשר לדלג על הקטע הזה.

  1. מתקינים ומפעילים את ערכות Firebase SDK של Flutter, אם עדיין לא עשו זאת.

  2. מתיקיית הבסיס של פרויקט Flutter, מריצים את הפקודה הבאה כדי להתקין את הפלאגין של קישורים דינמיים:

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

  4. במסוף Firebase, פותחים את הקטע קישורים דינמיים.

    1. אם עדיין לא הגדרתם דומיין לקישורים הדינמיים, לוחצים על שנתחיל? ופועלים לפי ההנחיות.

      אם כבר יש לכם דומיין של קישורים דינמיים, כדאי לשים לב אליו. צריך לציין דומיין של קישורים דינמיים כשיוצרים קישורים דינמיים באופן פרוגרמטי.

    2. מומלצים: מתוך 'עוד' (⋮), ציון כתובת האתר דפוסים שמותרים בקישורי העומק ובקישורי הגיבוי. כך, אתה מונע מגורמים לא מורשים ליצור קישורים דינמיים שמפנים מחדש מהדומיין שלך לאתרים שאין לך שליטה עליהם.

      מידע נוסף זמין בקטע התרת תבניות 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 אל 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 ל-method buildShortLink():

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

אפשר להשתמש ב-Dynamic Link Builder API כדי ליצור קישורים דינמיים עם כל אחד פרמטרים נתמכים. הפניית API

הדוגמה הבאה יוצרת קישור דינמי עם כמה פרמטרים נפוצים set:

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);

אפשר להגדיר פרמטרים של קישור דינמי באמצעות השיטות הבאות:

פרמטרים של DynamicLink
הגדרת קישור הקישור שהאפליקציה תפתח. מציינים כתובת URL שהאפליקציה יכולה לטפל בה. בדרך כלל, התוכן או המטען הייעודי (Payload) של האפליקציה, שמפעילים לוגיקה (למשל, זיכוי את המשתמש באמצעות שובר או הצגת מסך הפתיחה). הקישור חייב להיות כתובת URL בפורמט תקין, הוא צריך להיות תקין מקודדים בכתובות URL, משתמשים ב-HTTP או ב-HTTPS, ולא יכולים להיות מודל דינמי אחר קישור.
setDomainUriPrefix הקידומת של כתובת ה-URL של הקישור הדינמי, שאפשר למצוא במסוף Firebase. א' דומיין קישור דינמי נראה כמו בדוגמאות הבאות:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl הקישור שייפתח כשהאפליקציה לא מותקנת. יש לציין את הפעולה הזו משהו מלבד התקנת האפליקציה שלך מחנות Play כאשר האפליקציה אינו מותקן, למשל לפתוח את גרסת האינטרנט לנייד של התוכן, או להציג דף קידום מכירות של האפליקציה.
setMinimumVersion קוד הגרסה של הגרסה המינימלית של האפליקציה שיכולה לפתוח את קישור. אם האפליקציה המותקנת היא גרסה ישנה יותר, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה.
פרמטרים של Ios
setAppStoreId מזהה האפליקציה שלך ב-App Store, המשמש לשליחת המשתמשים אל ה-App Store כאשר האפליקציה לא מותקנת
setFallbackUrl הקישור שייפתח כשהאפליקציה לא מותקנת. יש לציין את הפעולה הזו משהו מלבד התקנת האפליקציה שלך מ-App Store כשהאפליקציה אינו מותקן, למשל לפתוח את גרסת האינטרנט לנייד של התוכן, או להציג דף קידום מכירות של האפליקציה.
setCustomScheme הסכימה של כתובת ה-URL המותאמת אישית של האפליקציה, אם היא מוגדרת להיות משהו שאינו מזהה החבילה של האפליקציה
setIpadFallbackUrl הקישור שצריך לפתוח ב-iPad כשהאפליקציה לא מותקנת. יש לציין את זה ל לעשות משהו חוץ מהתקנת האפליקציה מ-App Store כאשר שהאפליקציה לא מותקנת, למשל פתיחת גרסת אינטרנט של התוכן, או להציג דף קידום מכירות של האפליקציה.
setIpadBundleId מזהה החבילה של האפליקציה ל-iOS לשימוש במכשירי iPad לפתיחת הקישור. האפליקציה להיות מחוברות לפרויקט מדף הסקירה הכללית של מסוף Firebase.
setMinimumVersion מספר הגרסה של הגרסה המינימלית של האפליקציה שבה אפשר לפתוח את קישור. הדגל הזה מועבר לאפליקציה כשהיא נפתחת אל האפליקציה צריכים להחליט מה לעשות איתו.
NavigationInfoParameters
setForcedRedirectEnabled אם הערך מוגדר כ-1, הדף עם התצוגה המקדימה של האפליקציה יידלג כשהקישור הדינמי ייפתח, ובמקום זאת יועבר לכתובת של האפליקציה או החנות. דף התצוגה המקדימה של האפליקציה (מופעל כברירת מחדל) יכול לשלוח משתמשים ליעד המתאים ביותר בצורה מהימנה יותר כשהם פותחים קישורים דינמיים באפליקציות. עם זאת, אם אתם מצפים שקישור דינמי ייפתח רק באפליקציות שיכולות לפתוח קישורים דינמיים בצורה מהימנה בלי הדף הזה, תוכלו להשבית אותו באמצעות הפרמטר הזה. הפרמטר הזה ישפיע על ההתנהגות של הקישור הדינמי רק ב-iOS.
SocialMetaTagParameters
setTitle הכותרת שבה צריך להשתמש כשהקישור הדינמי משותף בפוסט ברשתות חברתיות.
setDescription התיאור שבו צריך להשתמש כשהקישור הדינמי משותף בפוסט ברשתות חברתיות.
setImageUrl כתובת ה-URL של תמונה שקשורה לקישור הזה. התמונה צריכה להיות בגודל מינימלי 300x200 פיקסלים וקטן מ-300KB.
פרמטרים של Google Analytics
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.