Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

כדי לקבל את קישורים דינמיים Firebase כי שיצרת , אתה חייב לכלול את SDK קישורים דינאמיים באפליקציה ולקרוא FirebaseDynamicLinks.getDynamicLink() שיטה כאשר עומסי האפליקציה כדי לקבל את הנתונים שהועברו על קישור דינמי.

  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:29.0.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:21.0.0'
        implementation 'com.google.firebase:firebase-analytics:20.0.0'
    }
    

    קוטלין+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.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:21.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.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() שיטה:

ג'אווה

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

קוטלין+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 קובץ config באפליקציה.
    • התקשר FirebaseAnalytics.getInstance() לפני פניית FirebaseDynamicLinks.getDynamicLink() .

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

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

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

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

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

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

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