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

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

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

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

  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 را باز کنید.
  4. اگر قبلاً شرایط خدمات را نپذیرفته‌اید و دامنه‌ای برای Dynamic Links خود تنظیم نکرده‌اید، در صورت درخواست این کار را انجام دهید.

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

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

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

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

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

مثال مینیمال زیر یک Dynamic Link طولانی به https://www.example.com/ ایجاد می‌کند که با برنامه اندروید شما در اندروید و برنامه 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);
        // ...

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

مثال زیر یک 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
ست‌لینک

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

setDomainUriPrefix پیشوند URL Dynamic Link شما، که می‌توانید آن را در کنسول Firebase پیدا کنید. یک دامنه Dynamic Link مانند مثال‌های زیر است:
https://example.com/link
https://example.page.link
پارامترهای اندروید
تنظیمFallbackUrl لینکی که وقتی برنامه نصب نشده است باز می‌شود. این را مشخص کنید تا وقتی برنامه نصب نشده است، کاری غیر از نصب برنامه از فروشگاه Play انجام دهد، مانند باز کردن نسخه وب موبایل محتوا یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
تنظیم حداقل نسخه versionCode حداقل نسخه برنامه شما که می‌تواند لینک را باز کند. اگر برنامه نصب شده نسخه قدیمی‌تری باشد، کاربر برای ارتقاء برنامه به فروشگاه Play هدایت می‌شود.
پارامترهای Ios
شناسه فروشگاه برنامه را تنظیم کنید شناسه اپ استور برنامه شما، که برای هدایت کاربران به اپ استور در زمانی که برنامه نصب نشده است، استفاده می‌شود.
تنظیمFallbackUrl لینکی که وقتی برنامه نصب نشده است باز می‌شود. این را مشخص کنید تا وقتی برنامه نصب نشده است، کاری غیر از نصب برنامه از اپ استور انجام دهد، مانند باز کردن نسخه وب موبایل محتوا، یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
setCustomScheme طرح URL سفارشی برنامه شما، اگر چیزی غیر از شناسه بسته برنامه شما تعریف شده باشد
تنظیم آدرس آی‌پد (setIpadFallbackUrl) لینکی که در آیپدها وقتی برنامه نصب نشده است باز می‌شود. این را مشخص کنید تا وقتی برنامه نصب نشده است، کاری غیر از نصب برنامه از اپ استور انجام دهد، مانند باز کردن نسخه وب محتوا یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
تنظیم شناسه بسته آی‌پد شناسه بسته برنامه iOS برای استفاده در iPads برای باز کردن لینک. برنامه باید از صفحه Overview کنسول Firebase به پروژه شما متصل شود.
تنظیم حداقل نسخه شماره نسخه حداقل نسخه برنامه شما که می‌تواند لینک را باز کند. این پرچم هنگام باز شدن به برنامه شما منتقل می‌شود و برنامه شما باید تصمیم بگیرد که با آن چه کاری انجام دهد.
پارامترهای اطلاعات ناوبری
تنظیم تغییر مسیر اجباری فعال شد اگر روی «۱» تنظیم شود، هنگام باز شدن Dynamic Link ، صفحه پیش‌نمایش برنامه را رد می‌کند و در عوض به برنامه یا فروشگاه هدایت می‌شود. صفحه پیش‌نمایش برنامه (که به طور پیش‌فرض فعال است) می‌تواند کاربران را هنگام باز کردن Dynamic Links در برنامه‌ها، با اطمینان بیشتری به مناسب‌ترین مقصد هدایت کند. با این حال، اگر انتظار دارید Dynamic Link فقط در برنامه‌هایی باز شود که می‌توانند Dynamic Links بدون این صفحه به طور مطمئن باز کنند، می‌توانید آن را با این پارامتر غیرفعال کنید. این پارامتر فقط بر رفتار Dynamic Link در iOS تأثیر می‌گذارد.
پارامترهای متا تگ اجتماعی
عنوان تنظیم عنوانی که هنگام اشتراک‌گذاری Dynamic Link در یک پست اجتماعی استفاده می‌شود.
مجموعهتوضیحات توضیحی که هنگام اشتراک‌گذاری Dynamic Link در یک پست اجتماعی استفاده می‌شود.
تنظیم تصویرURL آدرس اینترنتی (URL) تصویری مرتبط با این لینک. تصویر باید حداقل ۳۰۰x۲۰۰ پیکسل و کمتر از ۳۰۰ کیلوبایت باشد.
پارامترهای گوگل آنالیتیکس
تنظیم منبع
تنظیم متوسط
کمپین تنظیم‌شده
تنظیم مدت
تنظیم محتوا
پارامترهای تحلیلی گوگل پلی. این پارامترها ( utm_source ، utm_medium ، utm_campaign ، utm_term ، utm_content ) به فروشگاه پلی منتقل شده و همچنین به لینک بارگذاری شده اضافه می‌شوند.
پارامترهای تحلیلی iTunesConnect
setProviderToken
setAffiliateToken
توکن کمپین
پارامترهای تحلیلی iTunes Connect. این پارامترها ( pt ، at ، ct ) به اپ استور منتقل می‌شوند.

برای کوتاه کردن یک Dynamic Link طولانی، به جای تنظیم پارامترها با سایر متدهای سازنده، URL 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
                    // ...
                }
            }
        });