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

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

  1. إذا لم تكن قد فعلت ذلك بالفعل، إضافة Firebase إلى مشروع Android

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

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

    للحصول على أفضل تجربة باستخدام الروابط الديناميكية، ننصح تفعيل "إحصاءات Google" في مشروعك على 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'
    }
    

    باستخدام قائمة قائمتها التشغيلية (Android BoM) من Firebase سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Android في Firebase.

    (بديل) إضافة تبعيات مكتبة Firebase بدون استخدام BoM

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

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

لتسجيل هذه الأحداث، عليك ضبط "إحصاءات Google" قبل لاسترداد الرابط لصفحة في التطبيق. تحقَّق من استيفاء الشروط التالية:

  • الاتصال بـ FirebaseDynamicLinks.getDynamicLink() في نقاط الدخول الخاصة بالتطبيق:
    • أنشطة مشغّل التطبيقات: مثلاً: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER"
    • نقاط دخول الأنشطة مثلاً: onStart()، onCreate().
    • أنشطة الروابط لصفحات في التطبيق
  • إعداد "إحصاءات Google" واستخدامها:
    • يجب تضمين اعتمادية "إحصاءات Google". وعادة ما تتم إضافة هذه البيانات تلقائيًا من خلال google-services المكوّن الإضافي لنظام Gradle
    • تضمين ملف إعداد واحد (google-services.json) في تطبيقك.
    • الاتصال بالرقم FirebaseAnalytics.getInstance() قبل إجراء المكالمة FirebaseDynamicLinks.getDynamicLink()

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

يُرجى التأكّد من إضافة الملف المرجعي لشهادة 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() ضمن "النشاط الذي أضفته" ضمن "روابط التطبيق" فلتر الأهداف إلى (كما هو موضّح في التعامل مع الروابط المؤدية إلى صفحات في التطبيق).

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