קבלת קישורים דינמיים ב-Firebase ב-Android

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

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

    כשמגדירים את האפליקציה, מציינים את מפתח החתימה מסוג SHA-1. אם משתמשים קישורים לאפליקציות, כוללים גם את מפתח SHA-256.

  2. בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל <project>/<app-module>/build.gradle.kts או <project>/<app-module>/build.gradle), מוסיפים את התלות בספריית Dynamic Links ל-Android. מומלץ להשתמש Firebase Android BoM כדי לשלוט בניהול גרסאות של ספריות.

    כדי ליהנות מחוויה אופטימלית עם Dynamic Links, מומלץ הפעלת Google Analytics בפרויקט Firebase והוספת ה-SDK של Firebase ל-Google Analytics לאפליקציה.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.2.0"))
    
        // Add 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 {
        // Add 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:22.1.0'
        implementation 'com.google.firebase:firebase-analytics:22.1.0'
    }
    מחפשים מודול ספרייה ספציפי ל-Kotlin? מתחיל בעוד אוקטובר 2023 (Firebase BoM 32.5.0), גם מפתחי Kotlin וגם מפתחי Java יכולים תלויות במודול הספרייה הראשי (לקבלת פרטים נוספים, אפשר לעיין שאלות נפוצות על היוזמה).
  3. במסוף Firebase, פותחים את הקטע Dynamic Links. אם תתבקשו לעשות זאת, יש לאשר את התנאים וההגבלות.

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

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

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

Kotlin+KTX

Firebase.dynamicLinks
    .getDynamicLink(intent)
    .addOnSuccessListener(this) { pendingDynamicLinkData: 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) }

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

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

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

הקלטת ניתוח הנתונים

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

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

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

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

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

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

מוסיפים מסנן Intent שאומת באופן אוטומטי לפעילות שתטפל ב-Dynamic Link, וקובעים את ההגדרה מארח לדומיין 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 מסנני ה-Intent במניפסט צריכים להיות רשומים כדי להשתמש באפליקציה קישורים ליצירת מעורבות. מערכת Firebase מטפלת בזה באופן אוטומטי עבור Dynamic Links הדומיינים שלך, אבל אפשר לבדוק זאת על ידי פתיחת הקובץ assetlinks.json שמתארח בדומיין שלכם ב-Dynamic Links:

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

הקובץ Dynamic Links יישלח עכשיו ישירות לאפליקציה שלך. תהיה לך אפשרות לקבל את קישור העומק נתונים מ-Dynamic Link באמצעות קריאה ל-getDynamicLink() בפעילות שהוספת את הקישורים לאפליקציות סינון לפי Intent (כפי שמתואר טיפול בקישורי עומק).

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