כדי לקבל את ה-Firebase Dynamic Links
שיצרתם, אתם צריכים לכלול את ה-SDK של Dynamic Links באפליקציה ולקרוא ל-method FirebaseDynamicLinks.getDynamicLink() כשהאפליקציה נטענת כדי לקבל את הנתונים שהועברו ב-Dynamic Link.
הגדרת Firebase ו-Dynamic Links SDK
אם עדיין לא הוספתם את 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.0.1")) // 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 הזה כדי לטפל בקישור.
טיפול בקישורי עומק
כדי לקבל את קישור העומק, צריך להפעיל את השיטה 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.
מוודאים שהוספתם את טביעת האצבע לאישור 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, ולא לדומיין של קישור העומק.
כדי להפעיל קישורים לאפליקציה, צריך לרשום את כל 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.