تلقّي "روابط Firebase الديناميكية" على نظام التشغيل Android

لتلقّي Firebase Dynamic Links الذي أنشأته، يجب تضمين حزمة تطوير البرامج (SDK) لـ Dynamic Links في تطبيقك واستدعاء طريقة FirebaseDynamicLinks.getDynamicLink() عند تحميل تطبيقك للحصول على البيانات التي تم تمريرها في Dynamic Link.

  1. أضِف Firebase إلى مشروع Android الخاص بك، في حال لم يسبق لك إجراء ذلك.

    عند تسجيل تطبيقك، حدِّد مفتاح توقيع SHA-1. إذا كنت تستخدم روابط التطبيقات، حدِّد أيضًا مفتاح SHA-256.

  2. في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle)، أضِف الاعتمادية لمكتبة Dynamic Links على Android. ننصح باستخدام Firebase Android BoM للتحكّم في إصدارات المكتبة.

    للحصول على تجربة مثالية مع "Dynamic Links"، ننصحك بتفعيل "Google Analytics" في مشروعك على Firebase وإضافة حزمة تطوير البرامج (SDK) لمنصّة Firebase التي تخصّ "إحصاءات Google" إلى تطبيقك.

    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'
    }
  3. في وحدة تحكّم Firebase، افتح قسم Dynamic Links. اقبل بنود الخدمة إذا طُلب منك ذلك.

كما هو الحال مع الروابط العميقة العادية، يجب إضافة intent filter جديد إلى النشاط الذي يعالج الروابط العميقة لتطبيقك. يجب أن يلتقط intent filter الروابط العميقة في نطاقك، لأنّ Dynamic Link سيعيد التوجيه إلى نطاقك إذا كان تطبيقك مثبّتًا. هذا الإجراء مطلوب لكي يتلقّى تطبيقك بيانات "Dynamic Link" بعد تثبيته أو تحديثه من "متجر Google 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 filter هذا لمعالجة الرابط.

لتلقّي الرابط العميق، استدعِ الطريقة 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().

على الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك إعداد تطبيقك للتعامل مع Dynamic Links مباشرةً عندما يكون تطبيقك مثبّتًا من خلال استخدام روابط تطبيقات Android.

تأكَّد من إضافة الملف المرجعي لشهادة SHA256 الخاصة بتطبيقك إلى مشروعك في وحدة تحكّم Firebase. سيتولى Dynamic 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، وليس على نطاق الرابط العميق.

يجب تسجيل جميع فلاتر الأهداف (intent filters) البالغ عددها autoVerify في بيان التطبيق لكي يتم تفعيل ميزة &quot;روابط التطبيقات&quot;. تعالج منصة Firebase هذا الأمر تلقائيًا لنطاقات Dynamic Links، ولكن يمكنك التحقّق من ذلك من خلال فتح ملف assetlinks.json المستضاف على نطاق Dynamic Links:

https://YOUR_DOMAIN/.well-known/assetlinks.json
يجب تضمين جميع أسماء حزم تطبيقات Firebase.

سيتم الآن إرسال Dynamic Links مباشرةً إلى تطبيقك. وستتمكّن من الحصول على الرابط العميق وبيانات Dynamic Link الأخرى من خلال طلب getDynamicLink() في النشاط الذي أضفت إليه intent filter الخاص بروابط التطبيقات (كما هو موضّح في التعامل مع الروابط العميقة).

ملاحظة: بما أنّ الاستدعاء من خلال روابط التطبيقات ينقل المستخدم مباشرةً إلى التطبيق، لا يمكن للرابط الديناميكي الالتزام بالحد الأدنى المطلوب للإصدار. لذلك، بعد فتح التطبيق، عليك مقارنة الحد الأدنى لإصدار الرابط الديناميكي ( getminimumappversion) مع PackageInfo.versionCode وإعادة توجيه المستخدم لترقية التطبيق إذا لزم الأمر باستخدام getUpdateAppIntent.