Check out what’s new from Firebase at Google I/O 2022. Learn more

קבל קישורים דינמיים של Firebase באנדרואיד

כדי לקבל את Firebase Dynamic Links שיצרת , עליך לכלול את Dynamic Links SDK באפליקציה שלך ולהתקשר לשיטת FirebaseDynamicLinks.getDynamicLink() כאשר האפליקציה שלך נטענת כדי להעביר את הנתונים ב-Dynamic Link.

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

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

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

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

    Java

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

    (אלטרנטיבי) הכרזה על תלות בספריית 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.1'
        implementation 'com.google.firebase:firebase-analytics:21.0.0'
    }
    

    Kotlin+KTX

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

    (אלטרנטיבי) הכרזה על תלות בספריית 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.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0'
    }
    
  3. במסוף Firebase , פתח את הקטע קישורים דינמיים . אשר את תנאי השירות אם תתבקש לעשות זאת.

בדומה לקישורים עמוקים רגילים , עליך להוסיף מסנן כוונות חדש לפעילות המטפלת בקישורי עומק עבור האפליקציה שלך. מסנן הכוונות אמור לתפוס קישורים עמוקים של הדומיין שלך, מכיוון שהקישור הדינמי יפנה מחדש לדומיין שלך אם האפליקציה שלך מותקנת. זה נדרש כדי שהאפליקציה שלך תקבל את נתוני הקישור הדינמי לאחר התקנתה/עדכון מחנות Play והקשה אחת על כפתור המשך. ב- AndroidManifest.xml :

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data
        android:host="example.com"
        android:scheme="https"/>
</intent-filter>

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

כדי לקבל את הקישור העמוק, התקשר getDynamicLink() :

Java

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(getIntent())
        .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
            @Override
            public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                // Get deep link from result (may be null if no link is found)
                Uri deepLink = null;
                if (pendingDynamicLinkData != null) {
                    deepLink = pendingDynamicLinkData.getLink();
                }


                // Handle the deep link. For example, open the linked
                // content, or apply promotional credit to the user's
                // account.
                // ...

                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "getDynamicLink:onFailure", e);
            }
        });

Kotlin+KTX

Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { pendingDynamicLinkData ->
            // Get deep link from result (may be null if no link is found)
            var deepLink: Uri? = null
            if (pendingDynamicLinkData != null) {
                deepLink = pendingDynamicLinkData.link
            }

            // Handle the deep link. For example, open the linked
            // content, or apply promotional credit to the user's
            // account.
            // ...

            // ...
        }
        .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }

עליך לקרוא getDynamicLink() בכל פעילות שעשויה להיות מופעלת על ידי הקישור, למרות שהקישור עשוי להיות זמין מהכוונה באמצעות getIntent().getData() . קריאה getDynamicLink() מאחזרת את הקישור ומנקה את הנתונים האלה כך שהם מעובדים רק פעם אחת על ידי האפליקציה שלך.

בדרך כלל אתה קורא getDynamicLink() בפעילות הראשית, כמו גם כל פעילות שהושקה על ידי מסנני כוונות התואמים לקישור.

ניתוח שיא

ניתן לעקוב אוטומטית אחר האירועים הבאים ב-Google Analytics ולהציג אותם במסוף Firebase.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

על מנת לרשום אירועים אלו, עליך להגדיר את Google Analytics לפני שאתה משחזר את הקישור העמוק. בדוק שהתנאים הבאים מתקיימים:

  • התקשר ל- FirebaseDynamicLinks.getDynamicLink() בנקודות הכניסה לאפליקציה שלך:
    • פעילויות משגר. למשל: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • נקודות כניסה לפעילות. למשל: onStart() , onCreate() .
    • פעילויות קישור עומק.
  • הגדר והשתמש ב-Google Analytics:
    • כלול את התלות ב-Google Analytics. זה בדרך כלל מתווסף אוטומטית על ידי תוסף google-services Gradle.
    • כלול את קובץ התצורה google-services.json באפליקציה שלך.
    • התקשר FirebaseAnalytics.getInstance() לפני קריאה FirebaseDynamicLinks.getDynamicLink() .

ב-Android 6.0 (API רמה 23) ומעלה, אתה יכול להגדיר את האפליקציה שלך לטיפול בקישורים דינמיים ישירות כאשר האפליקציה שלך כבר מותקנת על ידי שימוש בקישורי אפליקציות Android .

ודא שהוספת את טביעת האצבע של אישור SHA256 עבור האפליקציה שלך לפרויקט שלך במסוף Firebase . Dynamic Links יטפל בהגדרת שיוך האתר App Links לדומיין Dynamic Links שלך.

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

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:host="example.com/link" android:scheme="http"/>
    <data android:host="example.com/link" android:scheme="https"/>
</intent-filter>

שים לב ש- android:host חייב להיות מוגדר לדומיין Dynamic Links שלך, ולא לדומיין של הקישור העמוק שלך.

כל מסנני הכוונות autoVerify של אימות אוטומטי במניפסט שלך חייבים להיות רשומים כדי שקישורי אפליקציות יפעילו. Firebase מטפל בזה באופן אוטומטי עבור הדומיינים של Dynamic Links שלך, אבל אתה יכול לבדוק זאת על ידי פתיחת הקובץ assetlinks.json המתארח בדומיין Dynamic Links שלך:

https://YOUR_DOMAIN/.well-known/assetlinks.json
יש לכלול את כל שמות החבילות של אפליקציות Firebase שלך.

קישורים דינמיים יישלחו כעת ישירות לאפליקציה שלך. תוכל לקבל את הקישור העמוק ונתוני קישור דינמי אחרים על ידי קריאה getDynamicLink() בפעילות שאליה הוספת את מסנן הכוונות App Links (כמתואר בטיפול בקישורים עמוקים ).

הערה: מכיוון שהפעלת באמצעות קישורי אפליקציות מובילה את המשתמש ישירות לאפליקציה, קישור דינמי אינו יכול לכבד את הגרסה המינימלית הנדרשת. אז לאחר פתיחת האפליקציה, עליך להשוות את גרסת המינימום של הקישור הדינמי ( getminimumappversion ) מול PackageInfo.versionCode ולהפנות את המשתמש לשדרוג האפליקציה במידת הצורך באמצעות getUpdateAppIntent .