צור קישורים דינמיים ב- 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. באמצעות BOM Firebase אנדרואיד , להכריז על התלות של הספרייה אנדרואיד קישורים דינאמיים במודול שלך (ברמת האפליקציה) קובץ 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.4.1')
    
        // 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:20.1.1'
        implementation 'com.google.firebase:firebase-analytics:19.0.1'
    }
    

    קוטלין+KTX

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

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

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

השתמש במסוף Firebase

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

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

הדוגמה הבאה יוצרת המינימאלית קישור דינמי ארוך https://www.example.com/ שנפתח עם אפליקציית אנדרואיד שלך על אנדרואיד האפליקציה 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();

קוטלין+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
                    // ...
                }
            }
        });

קוטלין+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);
        // ...

קוטלין+KTX

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

תוכל להשתמש ב- API לבניית הקישורים הדינמיים כדי ליצור קישורים דינאמיים עם כל אחד מהפרמטרים הנתמכים. ראה התייחסות 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()

קוטלין+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 שהאפליקציה שלך יכולה להתמודד איתה, בדרך כלל תוכן האפליקציה או המטען, שיוזמת לוגיקה ספציפית לאפליקציה (כגון זיכוי המשתמש בקופון או הצגת מסך קבלת פנים). קישור זה חייב להיות כתובת URL מעוצבת היטב, להיות מקודד כראוי לכתובת אתר, להשתמש ב- HTTP או ב- HTTPS, ואינו יכול להיות קישור דינמי נוסף.

setDomainUriPrefix קידומת כתובת האתר של הקישור הדינמי שלך, שתוכל למצוא במסוף Firebase. במראהו תחום קישור דינמי כמו בדוגמאות הבאות:
https://example.com/link
https://example.page.link
Android פרמטרים
setFallbackUrl הקישור לפתיחה כאשר האפליקציה אינה מותקנת. ציין זאת כדי לעשות משהו אחר מאשר התקנת האפליקציה שלך מחנות Play כאשר האפליקציה אינה מותקנת, כגון פתיחת גרסת האינטרנט לנייד של התוכן, או הצגת דף קידום מכירות לאפליקציה שלך.
setMinimumVersion versionCode של הגרסה המינימאלית של האפליקציה שלך שיכול לפתוח את הקישור. אם האפליקציה המותקנת היא גרסה ישנה יותר, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה.
IosParameters
setAppStoreId מזהה App Store של האפליקציה שלך, המשמש לשלוח משתמשים ל- App Store כאשר האפליקציה אינה מותקנת
setFallbackUrl הקישור לפתיחה כאשר האפליקציה אינה מותקנת. ציין זאת כדי לעשות משהו אחר מאשר התקנת האפליקציה שלך מחנות האפליקציות כאשר האפליקציה אינה מותקנת, כגון פתיחת גרסת האינטרנט לנייד של התוכן, או הצגת דף קידום מכירות לאפליקציה שלך.
setCustomScheme ערכת כתובת האתר המותאמת אישית של האפליקציה שלך, אם היא מוגדרת כמשהו אחר מזהה החבילה של האפליקציה שלך
setIpadFallbackUrl הקישור לפתיחה באייפדים כאשר האפליקציה אינה מותקנת. ציין זאת כדי לעשות משהו אחר מאשר התקנת האפליקציה שלך מחנות האפליקציות כאשר האפליקציה אינה מותקנת, כגון פתיחת גרסת האינטרנט של התוכן או הצגת דף קידום מכירות לאפליקציה שלך.
setIpadBundleId מזהה החבילה של אפליקציית iOS לשימוש ב- iPad לפתיחת הקישור. האפליקציה חייבת להיות מחוברת לפרויקט שלך מדף סקירה כללית של מסוף 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 במקום הגדרת פרמטרים עם שיטות בונה אחרים:

ג'אווה

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