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

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

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

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