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

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

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

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

  1. מתקינים ומפעילים את Firebase SDKs for Flutter, אם עוד לא עשיתם זאת.

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

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

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

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

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

    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 אל 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
הגדרת קישור הקישור שבו האפליקציה תיפתח. מציינים כתובת URL שהאפליקציה יכולה לטפל בה, בדרך כלל התוכן או עומס העבודה של האפליקציה, שמפעילים לוגיקה ספציפית לאפליקציה (למשל, זיכוי המשתמש בשובר או הצגת מסך קבלת פנים). הקישור צריך להיות כתובת 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.
GoogleAnalyticsParameters
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.