لتلقي روابط Firebase الديناميكية التي قمت بإنشائها ، يجب عليك تضمين Dynamic Links SDK في تطبيقك واستدعاء طريقة FirebaseDynamicLinks.getDynamicLink()
عند تحميل تطبيقك للحصول على البيانات التي تم تمريرها في الارتباط الديناميكي.
قم بإعداد Firebase وSDK للارتباطات الديناميكية
إذا لم تكن قد قمت بذلك بالفعل، فأضف Firebase إلى مشروع Android الخاص بك .
عندما تقوم بتسجيل تطبيقك، حدد مفتاح التوقيع SHA-1 الخاص بك. إذا كنت تستخدم روابط التطبيقات، فحدد أيضًا مفتاح SHA-256 الخاص بك.
في ملف 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.6.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.
هل تبحث عن وحدة مكتبة خاصة بـ Kotlin؟ بدءًا من أكتوبر 2023 (Firebase BoM 32.5.0) ، يمكن لمطوري Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (لمزيد من التفاصيل، راجع الأسئلة الشائعة حول هذه المبادرة ).(بديل) أضف تبعيات مكتبة 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.5.0' }
- في وحدة تحكم 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 (مستوى واجهة برمجة التطبيقات 23) والإصدارات الأحدث، يمكنك إعداد تطبيقك للتعامل مع الارتباطات الديناميكية مباشرة عندما يكون تطبيقك مثبتًا بالفعل باستخدام روابط تطبيقات Android .
تأكد من إضافة بصمة شهادة SHA256 لتطبيقك إلى مشروعك في وحدة تحكم Firebase . ستتعامل الروابط الديناميكية مع إعداد اقتران موقع ويب روابط التطبيقات لمجال الروابط الديناميكية الخاص بك.
أضف مرشح غرض تم التحقق منه تلقائيًا إلى النشاط الذي سيتعامل مع الارتباط الديناميكي، وقم بتعيين المضيف على مجال الروابط الديناميكية لمشروعك كما هو موجود في وحدة تحكم 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
على مجال الروابط الديناميكية الخاص بك، وليس على مجال الرابط العميق الخاص بك.
يجب تسجيل جميع عوامل تصفية غرض autoVerify
في البيان الخاص بك حتى تتمكن روابط التطبيقات من التفاعل. يتعامل Firebase مع هذا تلقائيًا لنطاقات الروابط الديناميكية الخاصة بك، ولكن يمكنك التحقق من ذلك عن طريق فتح ملف assetlinks.json
المستضاف على مجال الروابط الديناميكية الخاص بك:
https://YOUR_DOMAIN/.well-known/assetlinks.jsonيجب تضمين جميع أسماء حزم تطبيقات Firebase.
سيتم الآن إرسال الروابط الديناميكية مباشرةً إلى تطبيقك. ستتمكن من الحصول على الرابط العميق وبيانات الارتباط الديناميكي الأخرى عن طريق استدعاء getDynamicLink()
في النشاط الذي أضفت إليه مرشح أهداف روابط التطبيقات (كما هو موضح في التعامل مع الروابط العميقة ).
ملاحظة: نظرًا لأن الاستدعاء من خلال روابط التطبيقات ينقل المستخدم مباشرةً إلى التطبيق، فلا يمكن للارتباط الديناميكي تلبية الحد الأدنى المطلوب من الإصدار. لذلك بمجرد فتح التطبيق، تحتاج إلى مقارنة الإصدار الأدنى للارتباط الديناميكي ( getminimumappversion ) مع PackageInfo.versionCode وإعادة توجيه المستخدم لترقية التطبيق إذا لزم الأمر باستخدام getUpdateAppIntent .