تلقّي "روابط 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:33.1.2"))
    
        // 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، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Android في Firebase.

    (بديل) إضافة اعتماديات مكتبة 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:22.0.2'
    }
    
    هل تبحث عن وحدة مكتبة خاصة بلغة Kotlin؟ ستبدأ بعد تشرين الأول (أكتوبر) 2023 (Firebase BoM 32.5.0)، بإمكان مطوّري البرامج بلغة Kotlin وJava. تعتمد على وحدة المكتبة الرئيسية (لمزيد من التفاصيل، راجع الأسئلة الشائعة حول هذه المبادرة).
  3. في وحدة تحكُّم 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+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 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك إعداد تطبيقك للتعامل مع 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، وليس على النطاق. من الرابط لصفحة في التطبيق

يجب تسجيل جميع فلاتر الأهداف البالغ عددها autoVerify في ملف البيان لكي يكون التطبيق المستخدَم. روابط للتفاعل. يعالج Firebase هذا الإعداد تلقائيًا لنطاقات Dynamic Links، ولكن يمكنك التحقق منها. هذا من خلال فتح ملف assetlinks.json المستضاف على نطاق Dynamic Links:

https://YOUR_DOMAIN/.well-known/assetlinks.json
جميع تطبيقاتك في Firebase أسماء الحزم الخاصة بهم.

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

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