Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

تلقي روابط Firebase الديناميكية على Android

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

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

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

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

    للحصول على تجربة مثالية مع الروابط الديناميكية ، نوصي بتمكين Google Analytics في مشروع Firebase وإضافة Firebase SDK لـ Google Analytics إلى تطبيقك.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.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 لإدارة إصدارات المكتبة ، مما يضمن توافق جميع الإصدارات.

    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.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    باستخدام 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-ktx:21.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    
  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() :

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);
            }
        });

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) }

يجب عليك استدعاء 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 .