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

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

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

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

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

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

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

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

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