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

כדי לקבל את Firebase Dynamic Links ש יצרתם, אתם צריכים לכלול את Dynamic Links SDK באפליקציה ולהפעיל את השיטה 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 ולהוסיף את Firebase SDK for Google Analytics לאפליקציה.

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

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

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

Kotlin

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

מוודאים שהוספתם את טביעת האצבע לאישור SHA256 של האפליקציה לפרויקט במסוף Firebase. ‫Dynamic 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, ולא הדומיין של קישור העומק.

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

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

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

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