Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

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

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

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

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

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

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

  2. באמצעות Firebase Android BoM , הצהיר על התלות בספריית Android Dynamic Links במודול שלך (ברמת האפליקציה) בקובץ Gradle (בדרך כלל app/build.gradle ).

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

    ג'אווה

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.1.0')
    
        // 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 Android BoM , היישום שלך ישתמש תמיד בגרסאות תואמות של ספריות Android ל- 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:20.1.0'
        implementation 'com.google.firebase:firebase-analytics:19.0.0'
    }
    

    Kotlin + KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.1.0')
    
        // 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 Android BoM , היישום שלך ישתמש תמיד בגרסאות תואמות של ספריות Android ל- 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:20.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:19.0.0'
    }
    
  3. במסוף Firebase, פתח את הקטע קישורים דינמיים .
  4. אם עדיין לא קיבלת את תנאי השירות והגדרת דומיין לקישורים הדינמיים שלך, עשה זאת כשתתבקש לעשות זאת.

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

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

השתמש במסוף Firebase

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

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

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

ג'אווה

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();

Kotlin + 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 , מה שהופך את הקישור הקצר לזמין לאחר השלמת הבקשה. לדוגמה:

ג'אווה

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
                    // ...
                }
            }
        });

Kotlin + 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 השיטה :

ג'אווה

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

Kotlin + KTX

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

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

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

ג'אווה

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()

Kotlin + 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

הקישור שהאפליקציה שלך תפתח. ציין כתובת 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 הקישור לפתיחה כאשר האפליקציה לא מותקנת. ציין זאת כדי לעשות משהו אחר מלבד להתקין את האפליקציה שלך מחנות האפליקציות כאשר האפליקציה לא מותקנת, כמו לפתוח את גרסת האינטרנט לנייד של התוכן, או להציג דף קידום מכירות עבור האפליקציה שלך.
setCustomScheme תוכנית ה- URL המותאמת אישית של האפליקציה שלך, אם היא מוגדרת כמשהו שאינו מזהה החבילה של האפליקציה שלך
setIpadFallbackUrl הקישור לפתיחה באייפדים כאשר האפליקציה לא מותקנת. ציין זאת כדי לעשות משהו אחר מלבד להתקין את האפליקציה שלך מחנות האפליקציות כאשר האפליקציה לא מותקנת, כמו לפתוח את גרסת האינטרנט של התוכן, או להציג דף קידום מכירות עבור האפליקציה שלך.
setIpadBundleId מזהה הצרור של אפליקציית iOS לשימוש במכשירי iPad כדי לפתוח את הקישור. על האפליקציה להיות מחוברת לפרויקט שלך מדף סקירה כללית של מסוף Firebase.
setMinimumVersion מספר הגרסה של הגרסה המינימלית של האפליקציה שלך שיכולה לפתוח את הקישור. דגל זה מועבר לאפליקציה שלך כאשר היא נפתחת, ועל האפליקציה שלך להחליט מה לעשות איתה.
NavigationInfoParameters
setForcedRedirectEnabled אם מוגדר ל- '1', דלג על דף התצוגה המקדימה של האפליקציה כאשר הקישור הדינמי נפתח, ובמקום זאת להפנות מחדש לאפליקציה או לחנות. דף התצוגה המקדימה של האפליקציה (מופעל כברירת מחדל) יכול לשלוח משתמשים בצורה אמינה יותר ליעד המתאים ביותר כאשר הם פותחים קישורים דינמיים באפליקציות; עם זאת, אם אתה מצפה כי קישור דינמי ייפתח רק באפליקציות שיכולות לפתוח קישורים דינמיים באופן אמין ללא עמוד זה, תוכל להשבית אותו באמצעות פרמטר זה. פרמטר זה ישפיע על התנהגות הקישור הדינמי רק ב- iOS.
SocialMetaTagParameters
setTitle הכותרת לשימוש כאשר הקישור הדינמי משותף בפוסט חברתי.
setDescription התיאור לשימוש כאשר הקישור הדינמי משותף בפוסט חברתי.
setImageUrl כתובת האתר לתמונה שקשורה לקישור זה. התמונה צריכה להיות לפחות 300x200 פיקסלים, ופחות מ -300 KB.
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 ) מועברים לחנות האפליקציות.

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

ג'אווה

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
                    // ...
                }
            }
        });

Kotlin + 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
    // ...
}