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

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

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

    כאשר אתה רושם את האפליקציה שלך, ציין את מפתח החתימה שלך SHA-1. אם אתה משתמש ב-App Links, ציין גם את מפתח SHA-256 שלך.

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

    לחוויה מיטבית עם קישורים דינמיים, אנו ממליצים להפעיל את Google Analytics בפרויקט Firebase שלך ​​ולהוסיף את Firebase SDK עבור Google Analytics לאפליקציה שלך.

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

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

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

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

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

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

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