ایجاد لینک های پویا در اندروید

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

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

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

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

    هنگامی که برنامه خود را ثبت می کنید، کلید امضای 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:33.7.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:22.1.2'
    }
    به دنبال یک ماژول کتابخانه خاص کاتلین هستید؟ از اکتبر 2023 ( Firebase BoM 32.5.0) ، توسعه دهندگان Kotlin و Java می توانند به ماژول کتابخانه اصلی وابسته باشند (برای جزئیات، به سؤالات متداول در مورد این ابتکار مراجعه کنید).
  3. در کنسول Firebase ، بخش Dynamic Links را باز کنید.
  4. اگر قبلاً شرایط خدمات را نپذیرفته اید و دامنه ای را برای Dynamic Links خود تنظیم نکرده اید، هنگامی که از شما خواسته شد این کار را انجام دهید.

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

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

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

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

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

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

Kotlin+KTX

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+KTX

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 کوتاه با پسوندهای پیوندی 17 کاراکتری ایجاد می‌شوند که احتمال اینکه کسی نتواند یک Dynamic Link معتبر را حدس بزند بسیار بعید می‌سازد. اگر برای مورد استفاده شما، حدس زدن موفقیت آمیز یک پیوند کوتاه ضرری ندارد، ممکن است ترجیح دهید پسوندهایی ایجاد کنید که تنها تا زمانی که لازم است منحصر به فرد باشند، که می توانید با ارسال ShortDynamicLink.Suffix.SHORT به متد buildShortDynamicLink انجام دهید. :

Kotlin+KTX

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 با هر یک از پارامترهای پشتیبانی شده استفاده کنید. برای جزئیات به مرجع API مراجعه کنید.

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

Kotlin+KTX

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

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

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

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

Kotlin+KTX

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
                    // ...
                }
            }
        });