Check out what’s new from Firebase at Google I/O 2022. Learn more

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

برای دریافت پیوندهای دینامیک Firebase که ایجاد کرده‌اید، باید SDK پیوندهای پویا را در برنامه خود قرار دهید و زمانی که برنامه شما بارگیری می‌شود، متد FirebaseDynamicLinks.getDynamicLink() را فراخوانی کنید تا داده‌های ارسال شده در پیوند پویا دریافت شود.

  1. اگر قبلاً این کار را نکرده‌اید، Firebase را به پروژه Android خود اضافه کنید .

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

  2. با استفاده از Firebase Android BoM ، وابستگی کتابخانه Android Dynamic Links را در فایل Gradle ماژول (سطح برنامه) خود (معمولا app/build.gradle ) اعلام کنید.

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

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:30.1.0')
    
        // 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 Android BoM ، برنامه شما همیشه از نسخه‌های سازگار کتابخانه‌های Firebase Android استفاده می‌کند.

    (جایگزین) وابستگی های کتابخانه Firebase را بدون استفاده از BoM اعلام کنید

    اگر تصمیم گرفتید از Firebase BoM استفاده نکنید، باید هر نسخه کتابخانه Firebase را در خط وابستگی آن مشخص کنید.

    توجه داشته باشید که اگر از چندین کتابخانه Firebase در برنامه خود استفاده می کنید، ما به شدت توصیه می کنیم از BoM برای مدیریت نسخه های کتابخانه استفاده کنید، که تضمین می کند همه نسخه ها سازگار هستند.

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

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:30.1.0')
    
        // 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 Android BoM ، برنامه شما همیشه از نسخه‌های سازگار کتابخانه‌های Firebase Android استفاده می‌کند.

    (جایگزین) وابستگی های کتابخانه Firebase را بدون استفاده از BoM اعلام کنید

    اگر تصمیم گرفتید از Firebase BoM استفاده نکنید، باید هر نسخه کتابخانه Firebase را در خط وابستگی آن مشخص کنید.

    توجه داشته باشید که اگر از چندین کتابخانه Firebase در برنامه خود استفاده می کنید، ما به شدت توصیه می کنیم از BoM برای مدیریت نسخه های کتابخانه استفاده کنید، که تضمین می کند همه نسخه ها سازگار هستند.

    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.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0'
    }
    
  3. در کنسول Firebase ، بخش Dynamic Links را باز کنید. اگر از شما خواسته شد شرایط خدمات را بپذیرید.

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

وقتی کاربران یک پیوند پویا را با پیوند عمیق به طرح و میزبانی که مشخص کرده‌اید باز می‌کنند، برنامه شما فعالیت را با این فیلتر قصد شروع می‌کند تا پیوند را مدیریت کند.

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

در Android 6.0 (سطح API 23) و بالاتر، می‌توانید با استفاده از پیوندهای برنامه Android ، برنامه خود را طوری تنظیم کنید که مستقیماً وقتی برنامه شما قبلاً نصب شده است، پیوندهای پویا را مدیریت کند.

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

یک فیلتر هدف تأیید شده خودکار به Activity اضافه کنید که پیوند پویا را مدیریت می‌کند و میزبان را روی دامنه پیوندهای پویا پروژه شما همانطور که در کنسول 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 شما باید گنجانده شود.

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

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