כדי לקבל את ה-Firebase Dynamic Links שיצרתם, אתם צריכים לכלול את ה-SDK של Dynamic Links באפליקציה ולקרוא ל-method FirebaseDynamicLinks.getDynamicLink() כשהאפליקציה נטענת כדי לקבל את הנתונים שהועברו ב-Dynamic Link.
הגדרת Firebase ו-SDK של Dynamic Links
אם עדיין לא הוספתם את Firebase לפרויקט Android, אתם צריכים להוסיף אותו.
כשרושמים את האפליקציה, צריך לציין את מפתח החתימה SHA-1. אם משתמשים בקישורים לאפליקציות, צריך לציין גם את מפתח ה-SHA-256.
-
בקובץ 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:35.1.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:24.0.0' }
- במסוף Firebase, פותחים את הקטע Dynamic Links. אם מוצגת בקשה לאשר את התנאים וההגבלות, מאשרים אותם.
הוספת מסנן Intent לקישורי עומק
כמו בקישורי עומק רגילים, צריך להוסיף מסנן 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 הזה כדי לטפל בקישור.
טיפול בקישורי עומק
כדי לקבל את קישור העומק, מפעילים את ה-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() בפעילות הראשית וגם בכל פעילות שמופעלת על ידי מסנני Intent שתואמים לקישור.
ניתוח נתונים של רשומות
אפשר לעקוב באופן אוטומטי אחרי האירועים הבאים ב-Google Analytics ולהציג אותם במסוף Firebase.
dynamic_link_app_opendynamic_link_first_opendynamic_link_app_update
כדי לרשום את האירועים האלה, צריך להגדיר את Google Analytics לפני שאחזור של קישור העומק. צריך לוודא שהתנאים הבאים מתקיימים:
- מפעילים את
FirebaseDynamicLinks.getDynamicLink()בנקודות הכניסה של האפליקציה: - פעילויות במרכז האפליקציות, למשל:
action="android.intent.action.MAIN",category="android.intent.category.LAUNCHER". - נקודות כניסה לפעילות. לדוגמה:
onStart(),onCreate(). - פעילויות של קישורי עומק.
- הגדרה ושימוש ב-Google Analytics:
- כוללים את התלות Google Analytics. בדרך כלל, הפלאגין
google-servicesGradle מוסיף את זה באופן אוטומטי. - כוללים את קובץ התצורה
google-services.jsonבאפליקציה. - צריך להפעיל את
FirebaseAnalytics.getInstance()לפני שמפעילים אתFirebaseDynamicLinks.getDynamicLink().
טיפול ב-Dynamic Links באמצעות קישורים לאפליקציה
ב-Android 6.0 (רמת API 23) ומעלה, אפשר להגדיר את האפליקציה כך שתטפל ב-Dynamic Links ישירות כשהאפליקציה כבר מותקנת, באמצעות Android App Links.
מוודאים שהוספתם את טביעת האצבע לאישור SHA256 של האפליקציה לפרויקט במסוף Firebase. Dynamic Links יטפל בהגדרת השיוך של האתר לקישורים לאפליקציה בדומיין Dynamic Links.
מוסיפים מסנן Intent עם אימות אוטומטי ל-Activity שתטפל ב-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
Dynamic Links יישלח עכשיו ישירות לאפליקציה. אפשר יהיה לקבל את קישור העומק ונתונים אחרים של Dynamic Link על ידי קריאה ל-getDynamicLink() ב-Activity שהוספת לה את מסנן ה-Intent של קישורי העומק לאפליקציה (כפי שמתואר בקטע טיפול בקישורי עומק).
הערה: מכיוון שהפעלה דרך קישורים לאפליקציה מעבירה את המשתמש ישירות לאפליקציה, קישור דינמי לא יכול לעמוד בדרישה של גרסת המינימום. לכן, אחרי שהאפליקציה נפתחת, צריך להשוות בין גרסת המינימום של הקישור הדינמי (getminimumappversion) לבין PackageInfo.versionCode, ולהפנות את המשתמש לשדרוג האפליקציה אם צריך באמצעות getUpdateAppIntent.