لینک های دینامیک Firebase را در اندروید دریافت کنید

برای دریافت Firebase Dynamic Links که ایجاد کرده‌اید ، باید SDK Dynamic Links در برنامه خود بگنجانید و هنگام بارگذاری برنامه، متد FirebaseDynamicLinks.getDynamicLink() را فراخوانی کنید تا داده‌های ارسالی در Dynamic Link را دریافت کنید.

  1. اگر هنوز Firebase را به پروژه اندروید خود اضافه نکرده‌اید، آن را اضافه کنید.

    هنگام ثبت برنامه، کلید امضای SHA-1 خود را مشخص کنید. اگر از App Links استفاده می‌کنید، کلید SHA-256 خود را نیز مشخص کنید.

  2. در فایل Gradle ماژول (سطح برنامه) خود (معمولاً <project>/<app-module>/build.gradle.kts یا <project>/<app-module>/build.gradle )، وابستگی مربوط به کتابخانه Dynamic Links برای اندروید را اضافه کنید. توصیه می‌کنیم از Firebase Android BoM برای کنترل نسخه‌بندی کتابخانه استفاده کنید.

    برای یک تجربه بهینه با Dynamic Links ، توصیه می‌کنیم Google Analytics در پروژه Firebase خود فعال کنید و Firebase SDK را برای Google Analytics به برنامه خود اضافه کنید.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.4.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 استفاده خواهد کرد.

    (جایگزین) اضافه کردن وابستگی‌های کتابخانه 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:23.0.0'
    }
  3. در کنسول Firebase ، بخش Dynamic Links را باز کنید. در صورت درخواست، شرایط خدمات را بپذیرید.

همانند لینک‌های عمیق ساده ، باید یک فیلتر intent جدید به activity که لینک‌های عمیق را برای برنامه شما مدیریت می‌کند، اضافه کنید. فیلتر intent باید لینک‌های عمیق دامنه شما را دریافت کند، زیرا اگر برنامه شما نصب شده باشد، Dynamic Link به دامنه شما هدایت می‌شود. این برای برنامه شما لازم است تا داده‌های Dynamic Link را پس از نصب/به‌روزرسانی از فروشگاه Play و با یک ضربه روی دکمه Continue دریافت کند. در 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 با یک پیوند عمیق (deep link) به طرحواره (scheme) و میزبان (host) مشخص شده توسط شما باز می‌کنند، برنامه شما فعالیتی را با این فیلتر intent برای مدیریت پیوند آغاز می‌کند.

برای دریافت لینک عمیق، متد 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() از intent در دسترس باشد. فراخوانی getDynamicLink() لینک را بازیابی کرده و آن داده‌ها را پاک می‌کند، بنابراین فقط یک بار توسط برنامه شما پردازش می‌شود.

شما معمولاً getDynamicLink() در اکتیویتی اصلی و همچنین هر اکتیویتی که توسط فیلترهای intent که با لینک مطابقت دارند، اجرا می‌شود، فراخوانی می‌کنید.

تجزیه و تحلیل رکوردها

رویدادهای زیر می‌توانند به طور خودکار در 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 :

در اندروید ۶.۰ (سطح API ۲۳) و بالاتر، می‌توانید با استفاده از Android App Links، برنامه خود را طوری تنظیم کنید که وقتی از قبل نصب شده است، مستقیماً Dynamic Links مدیریت کند.

مطمئن شوید که اثر انگشت گواهی SHA256 را برای برنامه خود به پروژه خود در کنسول Firebase اضافه کرده‌اید. Dynamic Links تنظیم انجمن وب‌سایت App Links را برای دامنه Dynamic Links شما انجام خواهد داد.

یک فیلتر intent با تأیید خودکار به Activity اضافه کنید که 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 شما تنظیم شود، و نه دامنه deep link شما.

تمام فیلترهای هدف autoVerify در مانیفست شما باید ثبت شوند تا App Links فعال شوند. Firebase این کار را به طور خودکار برای دامنه‌های Dynamic Links شما انجام می‌دهد، اما می‌توانید با باز کردن فایل assetlinks.json که در دامنه Dynamic Links شما میزبانی می‌شود، این موضوع را بررسی کنید:

https://YOUR_DOMAIN/.well-known/assetlinks.json
نام بسته‌های تمام برنامه‌های Firebase شما باید درج شود.

Dynamic Links اکنون مستقیماً به برنامه شما ارسال می‌شوند. شما می‌توانید با فراخوانی getDynamicLink() در Activity که فیلتر App Links intent را به آن اضافه کرده‌اید (همانطور که در بخش مدیریت پیوندهای عمیق توضیح داده شده است)، پیوند عمیق و سایر داده‌های Dynamic Link را دریافت کنید.

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