יצירת קישורים דינמיים באפליקציית 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. מריצים את הפקודה הבאה מתיקיית הבסיס של פרויקט Flutter כדי להתקין את הפלאגין Dynamic Links:

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

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

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

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

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