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

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

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

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

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

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

    flutter pub add firebase_dynamic_links
    
  3. אם אתם מפתחים אפליקציית Android, פתחו את הדף הגדרות הפרויקט במסוף Firebase וודאו שציינתם את מפתח החתימה SHA-1. אם אתם משתמשים בקישורים לאפליקציות, ציינו גם את מפתח ה-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 ל-method‏ 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);

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

פרמטרים של DynamicLink
setLink הקישור שהאפליקציה תפתח. מציינים כתובת URL שהאפליקציה יכולה לטפל בה, בדרך כלל התוכן או המטען הייעודי (payload) של האפליקציה, שמפעילים לוגיקה ספציפית לאפליקציה (כמו זיכוי המשתמש בשובר או הצגת מסך פתיחה). הקישור הזה חייב להיות כתובת URL בפורמט תקין, עם קידוד URL תקין, להשתמש ב-HTTP או ב-HTTPS, והוא לא יכול להיות קישור דינמי אחר.
setDomainUriPrefix התחילית של כתובת ה-URL של הקישור הדינמי, שאפשר למצוא במסוף Firebase. דומיין של קישור דינמי נראה כמו בדוגמאות הבאות:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl הקישור שייפתח כשהאפליקציה לא מותקנת. צריך לציין את הפרמטר הזה כדי לבצע פעולה אחרת במקום להתקין את האפליקציה מחנות Play כשהאפליקציה לא מותקנת, למשל לפתוח את גרסת האינטרנט לנייד של התוכן או להציג דף קידום מכירות של האפליקציה.
setMinimumVersion ה-versionCode של הגרסה המינימלית של האפליקציה שיכולה לפתוח את הקישור. אם האפליקציה המותקנת היא גרסה ישנה יותר, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה.
IosParameters
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 וגם מצורפים למטען הייעודי (payload) של הקישור.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
פרמטרים של ניתוח נתונים ב-iTunes Connect. הפרמטרים האלה (`pt`,‏ `at`, ‏ `ct`) מועברים ל-App Store.