צור קישורים דינמיים ב- Android

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

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

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

  1. אם לא עשית זאת עדיין, להוסיף Firebase לפרויקט Android שלך .

    כאשר אתה רושם את האפליקציה שלך, ציין את מפתח החתימה שלך SHA-1. אם אתה משתמש ב-App Links, ציין גם את מפתח SHA-256 שלך.

  2. באמצעות BOM Firebase אנדרואיד , להכריז על התלות של הספרייה אנדרואיד קישורים דינאמיים במודול שלך (ברמת האפליקציה) קובץ Gradle (בדרך כלל app/build.gradle ).

    לקבלת חווית שימוש אופטימלית עם קישורים דינאמיים, אנו ממליצים לאפשר ל- Google Analytics בפרויקט Firebase שלך והוספת SDK Firebase עבור Google Analytics באפליקציה.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.4')
    
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    באמצעות Firebase אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד Firebase.

    (אלטרנטיבי) הצהר תלות הספרייה Firebase ללא שימוש BOM

    אם תבחר לא להשתמש ב-Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש בספריות Firebase מרובים באפליקציה, אנו ממליצים בחום להשתמש בתמונה BOM לנהל גרסאות הספרייה, אשר מבטיח כי כל הגרסאות תואמות.

    dependencies {
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:21.0.0'
        implementation 'com.google.firebase:firebase-analytics:20.0.2'
    }
    

    קוטלין+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.4')
    
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    באמצעות Firebase אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד Firebase.

    (אלטרנטיבי) הצהר תלות הספרייה Firebase ללא שימוש BOM

    אם תבחר לא להשתמש ב-Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש בספריות Firebase מרובים באפליקציה, אנו ממליצים בחום להשתמש בתמונה BOM לנהל גרסאות הספרייה, אשר מבטיח כי כל הגרסאות תואמות.

    dependencies {
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx:21.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.0.2'
    }
    
  3. במסוף Firebase, פתח את הקטע קישורים דינמיים.
  4. אם עדיין לא קיבלת את תנאי השירות והגדרת דומיין עבור הקישורים הדינמיים שלך, עשה זאת כאשר תתבקש.

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

  5. מומלץ: ציין את דפוסי הכתובות מותרים קישורים עמוקים וקישורי fallback. על ידי כך, אתה מונע מגורמים לא מורשים ליצור קישורים דינמיים המפנים מהדומיין שלך לאתרים שאינך בשליטתם. ראה אפשר דפוסי URL הספציפי .

השתמש במסוף Firebase

אם אתה רוצה ליצור קישור דינמי יחיד, או למטרות בדיקה, או עבור צוות השיווק שלך בקלות ליצור קישור שניתן להשתמש במשהו כמו פוסט מדיה חברתית, הדרך הפשוטה ביותר תהיה לבקר קונסולת Firebase וליצור אחד בצע את הטופס שלב אחר שלב באופן ידני.

כדי ליצור קישור דינאמי, ליצור חדש DynamicLink אובייקט עם הבונה שלה, המפרט את פרמטרי הקישור הדינמי עם שיטות Builder. לאחר מכן, קרא buildDynamicLink או buildShortDynamicLink .

הדוגמה הבאה יוצרת מינימלי קישור דינמי ארוך https://www.example.com/ שנפתח עם אפליקציית אנדרואיד שלך על אנדרואיד האפליקציה com.example.ios על iOS:

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink();

Uri dynamicLinkUri = dynamicLink.getUri();

קוטלין+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Open links with this app on Android
    androidParameters { }
    // Open links with com.example.ios on iOS
    iosParameters("com.example.ios") { }
}

val dynamicLinkUri = dynamicLink.uri

כדי ליצור קישור דינמי קצר, לבנות DynamicLink באותו אופן, ואז להתקשר buildShortDynamicLink . בניית קישור קצר דורשת שיחת רשת, כך שבמקום ישירות חוזר על הקישור, buildShortDynamicLink מחזירה Task , מה שהופך את הקישור הקצר שעמד לרשותם כאשר משלים את בקשתך. לדוגמה:

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

קוטלין+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { (shortLink, flowchartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowchartLink)
}.addOnFailureListener {
    // Error
    // ...
}

כברירת מחדל, קישורים דינמיים קצרים נוצרים עם סיומות קישור בנות 17 תווים שהופכות את זה לא סביר ביותר שמישהו יוכל לנחש קישור דינמי חוקי. אם, עבור המקרה שלכם, יש לא מזיק למישהו ניחוש בהצלחה קישור קצר, ייתכן שתעדיף ליצור סיומות שאינן רק ככל שיידרש כדי להיות ייחודי, שבו אתה יכול לעשות על ידי העברת ShortDynamicLink.Suffix.SHORT אל buildShortDynamicLink השיטה :

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

קוטלין+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

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

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

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                new DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                new DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                new DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink();  // Or buildShortDynamicLink()

קוטלין+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    androidParameters("com.example.android") {
        minimumVersion = 125
    }
    iosParameters("com.example.ios") {
        appStoreId = "123456789"
        minimumVersion = "1.0.1"
    }
    googleAnalyticsParameters {
        source = "orkut"
        medium = "social"
        campaign = "example-promo"
    }
    itunesConnectAnalyticsParameters {
        providerToken = "123456"
        campaignToken = "example-promo"
    }
    socialMetaTagParameters {
        title = "Example of a Dynamic Link"
        description = "This link works whether the app is installed or not!"
    }
}

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

פרמטרים של DynamicLink
setLink

הקישור שהאפליקציה שלך תיפתח. ציין כתובת אתר שהאפליקציה שלך יכולה לטפל בה, בדרך כלל התוכן או המטען של האפליקציה, אשר יוזמת היגיון ספציפי לאפליקציה (כגון זיכוי של המשתמש בקופון או הצגת מסך קבלת פנים). קישור זה חייב להיות כתובת אתר מעוצבת היטב, להיות מקודד כהלכה, להשתמש ב-HTTP או ב-HTTPS, ולא יכול להיות קישור דינמי אחר.

setDomainUriPrefix קידומת כתובת האתר של קישור דינמי, שתוכל למצוא במסוף Firebase. במראהו תחום קישור דינמי כמו בדוגמאות הבאות:
https://example.com/link
https://example.page.link
אנדרואיד פרמטרים
setFallbackUrl הקישור שייפתח כשהאפליקציה לא מותקנת. ציין זאת כדי לעשות משהו אחר מלבד התקנת האפליקציה שלך מחנות Play כאשר האפליקציה לא מותקנת, כגון פתיחת גרסת האינטרנט לנייד של התוכן, או הצגת דף קידום מכירות עבור האפליקציה שלך.
setMinimumVersion versionCode של הגרסה המינימאלית של האפליקציה שלך שיכול לפתוח את הקישור. אם האפליקציה המותקנת היא גרסה ישנה יותר, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה.
IosParameters
setAppStoreId מזהה App Store של האפליקציה שלך, המשמש לשליחת משתמשים ל-App Store כאשר האפליקציה אינה מותקנת
setFallbackUrl הקישור שייפתח כשהאפליקציה לא מותקנת. ציין זאת כדי לעשות משהו אחר מלבד התקנת האפליקציה שלך מ-App Store כאשר האפליקציה לא מותקנת, כגון פתיחת גרסת האינטרנט לנייד של התוכן, או הצגת דף קידום מכירות עבור האפליקציה שלך.
setCustomScheme סכימת כתובת האתר המותאמת אישית של האפליקציה שלך, אם היא מוגדרת כמשהו אחר מאשר מזהה החבילה של האפליקציה שלך
setIpadFallbackUrl הקישור לפתיחה באייפד כאשר האפליקציה לא מותקנת. ציין זאת כדי לעשות משהו אחר מלבד התקנת האפליקציה שלך מ-App Store כאשר האפליקציה אינה מותקנת, כגון פתיחת גרסת האינטרנט של התוכן, או הצגת דף קידום מכירות עבור האפליקציה שלך.
setIpadBundleId מזהה החבילה של אפליקציית iOS לשימוש באייפד לפתיחת הקישור. האפליקציה חייבת להיות מחוברת לפרויקט שלך מדף הסקירה הכללית של מסוף Firebase.
setMinimumVersion מספר הגרסה של הגרסה המינימאלית של האפליקציה שלך שיכול לפתוח את הקישור. הדגל הזה מועבר לאפליקציה שלך כאשר היא נפתחת, והאפליקציה שלך חייבת להחליט מה לעשות איתה.
NavigationInfoParameters
setForcedRedirectEnabled אם מוגדר ל'1', דלג על דף התצוגה המקדימה של האפליקציה כאשר הקישור הדינמי נפתח, ובמקום זאת הפנה מחדש לאפליקציה או לחנות. דף התצוגה המקדימה של האפליקציה (מופעל כברירת מחדל) יכול לשלוח משתמשים בצורה מהימנה יותר ליעד המתאים ביותר כאשר הם פותחים קישורים דינמיים באפליקציות; עם זאת, אם אתה מצפה שקישור דינמי ייפתח רק באפליקציות שיכולות לפתוח קישורים דינמיים בצורה מהימנה ללא דף זה, תוכל להשבית אותו עם פרמטר זה. פרמטר זה ישפיע על התנהגות הקישור הדינמי רק ב-iOS.
SocialMetaTagParameters
setTitle הכותרת לשימוש כאשר הקישור הדינמי משותף בפוסט חברתי.
setDescription התיאור לשימוש כאשר הקישור הדינמי משותף בפוסט חברתי.
setImageUrl כתובת האתר לתמונה הקשורה לקישור זה. התמונה צריכה להיות לפחות 300x200 פיקסלים, ופחות מ-300 KB.
פרמטרים של GoogleAnalytics
setSource
setMedium
setCampaign
setTerm
setContent
פרמטרי ניתוח של Google Play. פרמטרים אלה ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) מועברות ל- Play Store וכן מצורף מטען הקישור.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
פרמטרי ניתוח של iTunes Connect. פרמטרים אלה ( pt , at , ct ) מועברים ל- App Store.

כדי לקצר קישור דינמי ארוך, לציין את כתובת האתר של קישור דינמי באמצעות setLongLink במקום הגדרת פרמטרים עם שיטות בונה אחרים:

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

קוטלין+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    longLink = Uri.parse("https://example.page.link/?link=" +
            "https://www.example.com/&apn=com.example.android&ibn=com.example.ios")
}.addOnSuccessListener { (shortLink, flowChartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowChartLink)
}.addOnFailureListener {
    // Error
    // ...
}