Catch up on everything we announced at this year's Firebase Summit. Learn more

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

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

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

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

  2. باستخدام Firebase الروبوت بوم ، أن يعلن تبعية المكتبة الديناميكية سريعة الروبوت في الوحدة النمطية الخاصة بك (على مستوى التطبيق) ملف Gradle (عادة app/build.gradle ).

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

    جافا

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.1')
    
        // Declare 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 الروبوت بوم ، والتطبيق دائما استخدام إصدارات متوافقة من المكتبات Firebase الروبوت.

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

    إذا اخترت عدم استخدام Firebase BoM ، فيجب عليك تحديد كل إصدار من إصدارات مكتبة Firebase في سطر التبعية الخاص بها.

    ملاحظة أنه إذا كنت تستخدم مكتبات Firebase متعددة في التطبيق الخاص بك، ونحن نوصي بشدة باستخدام بوم لإدارة إصدارات المكتبة، والذي يضمن أن جميع إصدارات متوافقة.

    dependencies {
        // Declare 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.0.0'
        implementation 'com.google.firebase:firebase-analytics:20.0.0'
    }
    

    Kotlin + KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.1')
    
        // Declare 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 الروبوت بوم ، والتطبيق دائما استخدام إصدارات متوافقة من المكتبات Firebase الروبوت.

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

    إذا اخترت عدم استخدام Firebase BoM ، فيجب عليك تحديد كل إصدار من إصدارات مكتبة Firebase في سطر التبعية الخاص بها.

    ملاحظة أنه إذا كنت تستخدم مكتبات Firebase متعددة في التطبيق الخاص بك، ونحن نوصي بشدة باستخدام بوم لإدارة إصدارات المكتبة، والذي يضمن أن جميع إصدارات متوافقة.

    dependencies {
        // Declare 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.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.0.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() الأسلوب:

جافا

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 ->
            // 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() .

على الروبوت 6.0 (مستوى API 23) وأعلى، يمكنك إعداد التطبيق الخاص بك لمعالجة دينامية سريعة مباشرة عند تثبيت التطبيق الخاص بك بالفعل باستخدام الروبوت التطبيق سريعة .

تأكد من أن قمت بإضافة شهادة بصمة 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 .