لتلقّي Firebase Dynamic Links الذي
أنشأته، يجب تضمين حزمة تطوير البرامج (SDK) Dynamic Links في تطبيقك واستدعاء الطريقة 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 وإضافة حزمة تطوير البرامج (SDK) الخاصة بخدمة "إحصاءات Google" لبرنامج Firebase إلى تطبيقك.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.16.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متعدّدة في تطبيقك، ننصحك بشدة باستخدام 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.5.0' }
- في Firebase وحدة التحكّم، افتح القسم Dynamic Links. اقبل بنود الخدمة إذا طُلب منك ذلك.
إضافة فلتر أهداف للروابط لصفحات في التطبيق
كما هو الحال مع
الروابط العادية لصفحات في التطبيق، عليك إضافة فلتر أهداف جديد إلى النشاط الذي يعالج
الروابط لصفحات في تطبيقك. يجب أن يرصد فلتر الأهداف الروابط لصفحات في نطاقك، لأنّ
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 باستخدام رابط لصفحة في التطبيق يؤدي إلى المخطط والمضيف اللذين تحدّدهما، سيبدأ تطبيقك النشاط باستخدام فلتر الأهداف هذا للتعامل مع الرابط.
التعامل مع الروابط المؤدية إلى صفحات في التطبيق
لتلقّي الرابط لصفحة في التطبيق، استدعِ الطريقة 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()
في كل نشاط يمكن أن يتم تشغيله من خلال الرابط، حتى إذا كان الرابط متاحًا من الغرض باستخدام 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()
".
التعامل مع Dynamic Links باستخدام روابط التطبيقات
على الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك إعداد تطبيقك للتعامل مع Dynamic Links مباشرةً عندما يكون تطبيقك مثبّتًا من خلال استخدام روابط التطبيقات على Android.
تأكَّد من إضافة الملف المرجعي لشهادة SHA256 الخاصة بتطبيقك إلى مشروعك في وحدة تحكّم Firebase. ستتولّى Dynamic Links عملية إعداد ربط الموقع الإلكتروني بتطبيق App Links لنطاق Dynamic Links.
أضِف فلتر أهداف تم التحقّق منه تلقائيًا إلى النشاط الذي سيتعامل مع 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
في البيان حتى تعمل روابط التطبيقات. تتولّى Firebase هذه العملية تلقائيًا لنطاقات Dynamic Links، ولكن يمكنك التحقّق من ذلك من خلال فتح ملف assetlinks.json
المستضاف على نطاق Dynamic Links:
https://YOUR_DOMAIN/.well-known/assetlinks.json
سيتم الآن نقل Dynamic Links مباشرةً إلى تطبيقك. وسيصبح بإمكانك الحصول على الرابط لصفحة معيّنة وبيانات Dynamic Link الأخرى من خلال استدعاء getDynamicLink()
في النشاط الذي أضفت إليه فلتر الأهداف الخاص بـ "روابط التطبيقات" (كما هو موضّح في التعامل مع الروابط لصفحات معيّنة).
ملاحظة: بما أنّ الاستدعاء من خلال روابط التطبيقات ينقل المستخدم مباشرةً إلى التطبيق، لا يمكن للرابط الديناميكي الالتزام بالحد الأدنى المطلوب من الإصدار. وبعد فتح التطبيق، عليك مقارنة الحد الأدنى لإصدار الرابط الديناميكي ( getminimumappversion) مع PackageInfo.versionCode وإعادة توجيه المستخدم لترقية التطبيق إذا لزم الأمر باستخدام getUpdateAppIntent.