Android'de Dinamik Bağlantılar oluşturma

Firebase Dynamic Links Builder API ile kısa veya uzun Dynamic Links oluşturabilirsiniz. Bu API, uzun bir Dynamic Link veya Dynamic Link parametreleri içeren bir nesneyi kabul eder ve aşağıdaki örneklere benzer URL'ler döndürür:

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

Android uygulamanızda Dynamic Links oluşturabilmek için Firebase SDK'sını eklemeniz gerekir. Uygulamanız Dynamic Links almaya ayarlanmışsa bu adımları zaten tamamlamışsınızdır ve bu bölümü atlayabilirsiniz.

  1. Henüz yapmadıysanız Firebase'i Android projenize ekleyin.

    Uygulamanızı kaydettirirken SHA-1 imzalama anahtarınızı belirtin. Uygulama Bağlantıları kullanıyorsanız SHA-256 anahtarınızı da belirtin.

  2. Modül (uygulama düzeyi) Gradle dosyanıza (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle) Android için Dynamic Links kitaplığının bağımlılığını ekleyin. Kitaplık sürümlendirmesini kontrol etmek için Firebase Android BoM simgesini kullanmanızı öneririz.

    Dynamic Links ile en iyi deneyimi yaşamak için Firebase projenizde Google Analytics'i etkinleştirmenizi ve Google Analytics için Firebase SDK'sını uygulamanıza eklemenizi öneririz.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.6.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 kullanıldığında uygulamanız Firebase Android kitaplıklarının daima uyumlu sürümlerini kullanır.

    (Alternatif) BoM

    Firebase BoM kullanmamayı seçerseniz her Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'ı kullanmanızı önemle tavsiye ederiz. Bu, tüm sürümlerin uyumlu olmasını sağlar.

    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'
    }
    
    Kotlin'e özgü bir kitaplık modülü mü arıyorsunuz? Ekim 2023'ten (Firebase BoM 32.5.0) itibaren hem Kotlin hem de Java geliştiricileri ana kitaplık modülünden yararlanabilir (ayrıntılar için bu girişimle ilgili SSS bölümüne bakın).
  3. Firebase konsolunda Dynamic Links bölümünü açın.
  4. Henüz hizmet şartlarını kabul etmediyseniz ve Dynamic Links için bir alan adı ayarlamadıysanız istendiğinde bunu yapın.

    Zaten bir Dynamic Links alanınız varsa bunu not edin. Dynamic Links'ü programatik olarak oluştururken bir Dynamic Links alanı sağlamanız gerekir.

  5. Önerilen: Derin bağlantılarınızda ve yedek bağlantılarınızda izin verilen URL kalıplarını belirtin. Bu sayede, yetkisiz tarafların alanınızdan kontrol etmediğiniz sitelere yönlendiren Dynamic Links oluşturmasını engellemiş olursunuz. Belirli URL kalıplarına izin verme başlıklı makaleyi inceleyin.

Firebase konsolunu kullanma

Test amacıyla veya pazarlama ekibinizin sosyal medya yayını gibi bir yerde kullanılabilecek bir bağlantıyı kolayca oluşturması için tek bir Dynamic Link oluşturmak istiyorsanız en basit yol, Firebase konsolunu ziyaret edip adım adım talimatları uygulayarak manuel olarak bir Dynamic Link oluşturmaktır.

Dynamic Link oluşturmak için Builder'ı kullanarak yeni bir DynamicLink nesnesi oluşturun ve Builder yöntemleriyle Dynamic Link parametrelerini belirtin. Ardından buildDynamicLink veya buildShortDynamicLink numaralı telefonu arayın.

Aşağıdaki minimal örnekte, Android'de Android uygulamanızla ve iOS'te com.example.ios uygulamasıyla açılan uzun bir Dynamic Link to https://www.example.com/ oluşturulmaktadır:

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();

Kısa bir Dynamic Link oluşturmak için aynı şekilde bir DynamicLink oluşturun ve ardından buildShortDynamicLink'yi çağırın. Kısa bağlantı oluşturmak için ağ çağrısı gerekir. Bu nedenle buildShortDynamicLink, bağlantıyı doğrudan döndürmek yerine bir Task döndürür. Bu Task, istek tamamlandığında kısa bağlantıyı kullanılabilir hale getirir. Örneğin:

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

Varsayılan olarak kısa Dynamic Links, geçerli bir Dynamic Link'ın tahmin edilmesini son derece zorlaştıran 17 karakterlik bağlantı son ekleriyle oluşturulur. Kullanım alanınızda, kısa bir bağlantının başarılı bir şekilde tahmin edilmesinin sakıncası yoksa yalnızca benzersiz olması gereken uzunlukta son ekler oluşturmayı tercih edebilirsiniz. Bunu yapmak için ShortDynamicLink.Suffix.SHORT değerini buildShortDynamicLink yöntemine iletmeniz gerekir:

Kotlin+KTX

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

Java

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

Desteklenen parametrelerden herhangi birini kullanarak Dynamic Links oluşturmak için Dynamic Link Builder API'yi kullanabilirsiniz. Ayrıntılar için API referansına bakın.

Aşağıdaki örnekte, birkaç yaygın parametre grubu içeren bir Dynamic Link oluşturulmaktadır:

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 parametrelerini aşağıdaki yöntemlerle ayarlayabilirsiniz:

DynamicLink parametreleri
setLink

Uygulamanızın açacağı bağlantı. Uygulamanızın işleyebileceği bir URL belirtin. Bu URL genellikle uygulamaya özgü mantığı (ör. kullanıcıya kupon verme veya karşılama ekranı gösterme) başlatan uygulamanın içeriği ya da yükü olur. Bu bağlantı, iyi biçimlendirilmiş bir URL olmalıdır, düzgün bir şekilde URL kodlamalı, HTTP veya HTTPS kullanmalıdır ve başka bir dinamik bağlantı olamaz.

setDomainUriPrefix Dynamic Link URL ön ekiniz. Firebase konsolunda bulabilirsiniz. Dynamic Link alan adları aşağıdaki örneklere benzer:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl Uygulama yüklü değilken açılacak bağlantı. Uygulamanız yüklü değilken Play Store'dan uygulamanızı yüklemek dışında bir işlem yapmak için (ör. içeriğin mobil web sürümünü açmak veya uygulamanızla ilgili tanıtım sayfası göstermek) bunu belirtin.
setMinimumVersion Uygulamanızın bağlantıyı açabilen minimum sürümünün versionCode. Yüklü uygulama eski bir sürümse kullanıcı, uygulamayı yükseltmek için Play Store'a yönlendirilir.
IosParameters
setAppStoreId Uygulamanız yüklü değilken kullanıcıları App Store'a yönlendirmek için kullanılan uygulamanızın App Store kimliği
setFallbackUrl Uygulama yüklü değilken açılacak bağlantı. Uygulamanız yüklü değilken uygulamanızı App Store'dan yüklemek dışında bir işlem yapmak için (ör. içeriğin mobil web sürümünü açmak veya uygulamanızla ilgili tanıtım sayfası göstermek) bunu belirtin.
setCustomScheme Uygulamanızın paket kimliğinden farklı bir şekilde tanımlanmışsa uygulamanızın özel URL şeması
setIpadFallbackUrl Uygulama yüklü değilken iPad'lerde açılacak bağlantı. Uygulamanız yüklü değilken uygulamanızı App Store'dan yüklemek dışında bir işlem yapmak için (ör. içeriğin web sürümünü açmak veya uygulamanızla ilgili tanıtım sayfası göstermek) bunu belirtin.
setIpadBundleId Bağlantıyı açmak için iPad'lerde kullanılacak iOS uygulamasının paket kimliği. Uygulama, Firebase konsolunun Genel Bakış sayfasından projenize bağlı olmalıdır.
setMinimumVersion Uygulamanızın bağlantıyı açabilen minimum sürümünün sürüm numarası. Bu işaret, uygulamanız açıldığında uygulamanıza iletilir ve uygulamanızın bu işaretle ne yapacağını belirlemesi gerekir.
NavigationInfoParameters
setForcedRedirectEnabled "1" olarak ayarlanırsa Dynamic Link açıldığında uygulama önizleme sayfası atlanır ve uygulamaya veya mağazaya yönlendirilir. Uygulama önizleme sayfası (varsayılan olarak etkindir), kullanıcılar uygulamalarda Dynamic Links'ü açtığında onları en uygun hedefe daha güvenilir bir şekilde gönderebilir. Ancak Dynamic Link'ün yalnızca bu sayfa olmadan Dynamic Links'ü güvenilir bir şekilde açabilen uygulamalarda açılmasını bekliyorsanız bu parametreyle sayfayı devre dışı bırakabilirsiniz. Bu parametre, Dynamic Link öğesinin davranışını yalnızca iOS'te etkiler.
SocialMetaTagParameters
setTitle Dynamic Link sosyal medya yayınında paylaşıldığında kullanılacak başlık.
setDescription Dynamic Link sosyal medya yayınında paylaşıldığında kullanılacak açıklama.
setImageUrl Bu bağlantıyla ilgili bir resmin URL'si. Resim en az 300x200 piksel ve 300 KB'tan küçük olmalıdır.
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Google Play analiz parametreleri. Bu parametreler (utm_source, utm_medium, utm_campaign, utm_term, utm_content), Play Store'a aktarılır ve bağlantı yüküne eklenir.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect analiz parametreleri. Bu parametreler (pt, at, ct) App Store'a iletilir.

Uzun bir Dynamic Link'yi kısaltmak için diğer oluşturucu yöntemleriyle parametre ayarlamak yerine setLongLink kullanarak Dynamic Link'nin URL'sini belirtin:

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