ایجاد پیوندهای پویا در Android

بااستفاده از Firebase Dynamic Links Builder API می‌توانید Dynamic Links کوتاه یا بلند ایجاد کنید. این میانای برنامه‌سازی کاربردی یا یک پارامتر طولانی Dynamic Link یا یک شیء حاوی پارامترهای Dynamic Link را می‌پذیرد و نشانی‌های وب مانند مثال‌های زیر را برمی‌گرداند:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

قبل‌از اینکه بتوانید Dynamic Links را در برنامه Android خود ایجاد کنید، باید کیت توسعه نرم‌افزار Firebase را اضافه کنید. اگر برنامه‌تان برای دریافت Dynamic Links راه‌اندازی شده است، قبلاً این مراحل را تکمیل کرده‌اید و می‌توانید از این بخش رد شوید.

  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.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:22.1.0'
        implementation 'com.google.firebase:firebase-analytics:24.0.0'
    }
  3. در کنسول Firebase، بخش Dynamic Links را باز کنید.
  4. اگر قبلاً شرایط خدمات را نپذیرفته‌اید و دامنه‌ای برای Dynamic Links خود تنظیم نکرده‌اید، وقتی از شما خواسته شد این کار را انجام دهید.

    اگر ازقبل دامنه Dynamic Links دارید، آن را یادداشت کنید. وقتی به‌طور برنامه‌نویسی‌شده Dynamic Links ایجاد می‌کنید، باید دامنه Dynamic Links ارائه دهید.

  5. توصیه‌شده: الگوهای نشانی وب مجاز در پیوندهای عمیق و پیوندهای بازگشتی را مشخص کنید. با انجام این کار، از ایجاد Dynamic Links توسط طرف‌های غیرمجاز که از دامنه شما به سایت‌هایی که تحت کنترل شما نیستند هدایت می‌کنند جلوگیری می‌کنید. مجاز کردن الگوهای نشانی وب خاص را ببینید.

استفاده از کنسول Firebase

اگر می‌خواهید یک Dynamic Link تکی ایجاد کنید، چه برای اهداف آزمایشی یا برای تیم بازاریابی‌تان تا به‌راحتی پیوندی ایجاد کنید که بتوان از آن در چیزی مثل پست رسانه‌های اجتماعی استفاده کرد، ساده‌ترین راه مراجعه به کنسول Firebase و ایجاد کردن آن به‌صورت دستی با دنبال کردن فرم گام‌به‌گام است.

برای ایجاد Dynamic Link، شیء DynamicLink جدیدی با Builder آن ایجاد کنید و پارامترهای Dynamic Link را با روش‌های Builder مشخص کنید. سپس با buildDynamicLink یا buildShortDynamicLink تماس بگیرید.

نمونه حداقلی زیر یک Dynamic Link طولانی برای https://www.example.com/ ایجاد می‌کند که با برنامه Android شما در Android و برنامه com.example.ios در iOS باز می‌شود:

Kotlin

val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Open links with this app on Android
    androidParameters { }
    // Open links with com.example.ios on iOS
    iosParameters("com.example.ios") { }
}

val dynamicLinkUri = dynamicLink.uri

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink();

Uri dynamicLinkUri = dynamicLink.getUri();

برای ایجاد Dynamic Link کوتاه، DynamicLink را به همان روش بسازید و سپس buildShortDynamicLink را فراخوانی کنید. ساختن پیوند کوتاه به تماس شبکه نیاز دارد، بنابراین به‌جای برگرداندن مستقیم پیوند، buildShortDynamicLink یک Task برمی‌گرداند که باعث می‌شود پیوند کوتاه پس‌از تکمیل درخواست دردسترس قرار گیرد. برای مثال:

Kotlin

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { (shortLink, flowchartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.component1 and
    // com.google.firebase.dynamiclinks.component2

    // Short link created
    processShortLink(shortLink, flowchartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

به‌طور پیش‌فرض، Dynamic Links کوتاه با پسوند پیوند ۱۷ نویسه‌ای تولید می‌شود که حدس زدن Dynamic Link معتبر را برای دیگران بسیار نامحتمل می‌کند. اگر برای مورد استفاده شما، حدس زدن موفقیت‌آمیز پیوند کوتاه توسط فردی ضرری ندارد، ممکن است ترجیح دهید پسوندهایی تولید کنید که فقط به اندازه لازم برای منحصربه‌فرد بودن طولانی باشند، که می‌توانید این کار را با ارسال ShortDynamicLink.Suffix.SHORT به روش buildShortDynamicLink انجام دهید:

Kotlin

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

می‌توانید از Dynamic Link Builder API برای ایجاد Dynamic Links با هریک از پارامترهای پشتیبانی‌شده استفاده کنید. برای جزئیات، به مرجع میانای برنامه‌سازی کاربردی مراجعه کنید.

مثال زیر یک Dynamic Link با چندین پارامتر رایج ایجاد می‌کند تنظیم:

Kotlin

val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    androidParameters("com.example.android") {
        minimumVersion = 125
    }
    iosParameters("com.example.ios") {
        appStoreId = "123456789"
        minimumVersion = "1.0.1"
    }
    googleAnalyticsParameters {
        source = "orkut"
        medium = "social"
        campaign = "example-promo"
    }
    itunesConnectAnalyticsParameters {
        providerToken = "123456"
        campaignToken = "example-promo"
    }
    socialMetaTagParameters {
        title = "Example of a Dynamic Link"
        description = "This link works whether the app is installed or not!"
    }
}

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                new DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                new DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                new DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink();  // Or buildShortDynamicLink()

می‌توانید پارامترهای Dynamic Link را با روش‌های زیر تنظیم کنید:

پارامترهای DynamicLink
setLink

پیوندی که برنامه‌تان باز خواهد کرد. نشانی وبی را مشخص کنید که برنامه‌تان بتواند آن را مدیریت کند، معمولاً محتوا یا بار مفید برنامه که منطق مختص برنامه را آغاز می‌کند (مثل اعتبار دادن به کاربر با کوپن یا نمایش صفحه خوشامدگویی). این پیوند باید نشانی وب با قالب‌بندی مناسب باشد، به‌درستی کدگذاری نشانی وب شده باشد، از HTTP یا HTTPS استفاده کند، و نمی‌تواند «پیوند پویای» دیگری باشد.

setDomainUriPrefix پیشوند نشانی وب Dynamic Link که می‌توانید آن را در کنسول Firebase پیدا کنید. دامنه Dynamic Link شبیه نمونه‌های زیر است:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl پیوندی که وقتی برنامه نصب نشده است باز می‌شود. این را برای انجام کاری غیراز نصب برنامه‌تان از «فروشگاه Play» (وقتی برنامه نصب نشده است) مشخص کنید، مثلاً باز کردن نسخه وب تلفن همراه محتوا، یا نمایش صفحه تبلیغاتی برای برنامه‌تان.
setMinimumVersion versionCode حداقل نسخه برنامه‌تان که می‌تواند پیوند را باز کند. اگر برنامه نصب‌شده نسخه قدیمی‌تری باشد، کاربر برای ارتقا دادن برنامه به «فروشگاه Play» هدایت می‌شود.
IosParameters
setAppStoreId شناسه App Store برنامه‌تان، که برای هدایت کاربران به App Store در زمانی که برنامه نصب نشده است استفاده می‌شود
setFallbackUrl پیوندی که وقتی برنامه نصب نشده است باز می‌شود. این را برای انجام کاری غیراز نصب برنامه از App Store در زمانی که برنامه نصب نشده است مشخص کنید، مثلاً باز کردن نسخه وب تلفن همراه محتوا، یا نمایش صفحه تبلیغاتی برای برنامه‌تان.
تنظیم طرح‌واره سفارشی طرح‌واره نشانی وب سفارشی برنامه‌تان، اگر چیزی غیراز شناسه بسته ترکیبی برنامه‌تان تعریف شده باشد
setIpadFallbackUrl پیوندی که وقتی برنامه نصب نشده است در iPad باز می‌شود. این را برای انجام کاری غیراز نصب برنامه‌تان از App Store در زمانی که برنامه نصب نشده است مشخص کنید، مثلاً باز کردن نسخه وب محتوا، یا نمایش صفحه تبلیغاتی برای برنامه‌تان.
setIpadBundleId شناسه بسته ترکیبی برنامه iOS برای استفاده در iPad جهت باز کردن پیوند. برنامه باید از صفحه «نمای کلی» کنسول Firebase به پروژه شما متصل شود.
setMinimumVersion شماره نسخه حداقل نسخه‌ای از برنامه‌تان که می‌تواند پیوند را باز کند. این پرچم هنگام باز شدن برنامه به آن منتقل می‌شود و برنامه شما باید تصمیم بگیرد که با آن چه کند.
NavigationInfoParameters
setForcedRedirectEnabled اگر روی «۱» تنظیم شده باشد، وقتی Dynamic Link باز می‌شود، از صفحه پیش‌نمایش برنامه رد می‌شود و درعوض به برنامه یا فروشگاه هدایت می‌شود. صفحه پیش‌نمایش برنامه (به‌طور پیش‌فرض فعال است) می‌تواند کاربران را هنگام باز کردن Dynamic Links در برنامه‌ها، با اطمینان بیشتری به مناسب‌ترین مقصد ارسال کند؛ بااین‌حال، اگر انتظار دارید Dynamic Link فقط در برنامه‌هایی باز شود که می‌توانند Dynamic Links را بدون این صفحه به‌طور مطمئن باز کنند، می‌توانید آن را با این پارامتر غیرفعال کنید. این پارامتر فقط در iOS بر رفتار Dynamic Link تأثیر می‌گذارد.
SocialMetaTagParameters
setTitle عنوانی که هنگام هم‌رسانی Dynamic Link در پست اجتماعی استفاده می‌شود.
setDescription شرحی که هنگام هم‌رسانی Dynamic Link در پست اجتماعی استفاده می‌شود.
setImageUrl نشانی وب تصویر مربوط به این پیوند. تصویر باید حداقل ۳۰۰×۲۰۰ پیکسل و کمتر از ۳۰۰ کیلوبایت باشد.
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
پارامترهای تجزیه‌وتحلیل Google Play. این پارامترها (utm_source، utm_medium، utm_campaign، utm_term، utm_content) به «فروشگاه Play» ارسال می‌شوند و به محموله پیوند نیز اضافه می‌شوند.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
پارامترهای تجزیه‌وتحلیل iTunes Connect. این پارامترها (pt، at، ct) به App Store ارسال می‌شوند.

برای کوتاه کردن Dynamic Link طولانی، نشانی وب Dynamic Link را بااستفاده از setLongLink مشخص کنید، به‌جای اینکه پارامترها را با روش‌های دیگر سازنده تنظیم کنید:

Kotlin

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    longLink = Uri.parse(
        "https://example.page.link/?link=" +
            "https://www.example.com/&apn=com.example.android&ibn=com.example.ios",
    )
}.addOnSuccessListener { (shortLink, flowChartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.component1 and
    // com.google.firebase.dynamiclinks.component2

    // Short link created
    processShortLink(shortLink, flowChartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });