קבלת קישורים דינמיים ב-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 ולהוסיף את Firebase SDK for Google Analytics לאפליקציה.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.7.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:22.1.2'
    }
    מחפשים מודול ספרייה ספציפי ל-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 עם קישור עומק לסכימה ולמארח שציינתם, האפליקציה תפעיל את הפעילות באמצעות מסנן הכוונה הזה כדי לטפל בקישור.

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

תיעוד ניתוח נתונים

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

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