دریافت کردن «پیوندهای پویای Firebase» در Android

برای دریافت Firebase Dynamic Links که ایجاد کرده‌اید، باید کیت توسعه نرم‌افزار 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 خود و افزودن کیت توسعه نرم‌افزار Firebase برای Google Analytics به برنامه خود.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.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، برنامه شما همیشه از نسخه‌های سازگار کتابخانه‌های 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 را باز کنید. اگر از شما خواسته شد، شرایط خدمات را بپذیرید.

مانند پیوندهای عمیق ساده، باید فیلتر قصد جدیدی به فعالیتی که پیوندهای عمیق را برای برنامه‌تان مدیریت می‌کند اضافه کنید. فیلتر قصد باید پیوندهای عمیق دامنه‌تان را دریافت کند، زیرا اگر برنامه‌تان نصب شده باشد، Dynamic Link به دامنه‌تان هدایت خواهد شد. این کار برای این لازم است که برنامه‌تان پس‌از نصب/به‌روزرسانی از «فروشگاه Play» و ضربه زدن روی دکمه «ادامه»، داده‌های Dynamic Link را دریافت کند. در 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

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 را اضافه کنید. این معمولاً به‌طور خودکار توسط افزونه Gradle google-services اضافه می‌شود.
    • فایل پیکربندی google-services.json را در برنامه‌تان اضافه کنید.
    • قبل‌از تماس با FirebaseDynamicLinks.getDynamicLink()، با FirebaseAnalytics.getInstance() تماس بگیرید.

در Android نسخه ۶.۰ (سطح میانای برنامه‌سازی کاربردی ۲۳) و بالاتر، می‌توانید برنامه‌تان را طوری تنظیم کنید که 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() در «فعالیتی» که فیلتر قصد «پیوندهای برنامه» را به آن اضافه کرده‌اید دریافت کنید (همان‌طور که در رسیدگی به پیوندهای عمیق شرح داده شده است).

توجه: ازآنجایی‌که فراخوانی ازطریق «پیوندهای برنامه» کاربر را مستقیماً به برنامه می‌برد، «پیوند پویا» نمی‌تواند حداقل نسخه موردنیاز را رعایت کند. بنابراین، پس‌از باز شدن برنامه، باید حداقل نسخه «پیوند پویا» ( getminimumappversion) را با PackageInfo.versionCode مقایسه کنید و درصورت نیاز، کاربر را بااستفاده از getUpdateAppIntent برای ارتقای برنامه هدایت کنید.