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

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

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

Android uygulamanızda Dinamik Bağlantılar oluşturabilmeniz için Firebase SDK'sını dahil etmeniz gerekir. Uygulamanız Dynamic Links'i alacak şekilde ayarlandıysa bu adımları zaten tamamlamışsınız demektir ve bu bölümü atlayabilirsiniz.

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

    Uygulamanızı kaydederken SHA-1 imzalama anahtarınızı belirtin. App Links 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ümü oluşturmayı kontrol etmek için Firebase Android BoM'u kullanmanızı öneririz.

    Dynamic Links ile ilgili optimum bir deneyim için Firebase projenizde Google Analytics'i etkinleştirmenizi ve uygulamanıza Google Analytics için Firebase SDK'sını eklemenizi öneririz.

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

    (Alternatif) Firebase kitaplığı bağımlılıklarını BoM'u kullanmadan ekleyin

    Firebase BoM'yi 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 tüm sürümlerin uyumlu olmasını sağlamak için BoM kullanmanızı kesinlikle öneririz.

    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.0.1'
    }
    
    Kotlin'e özel 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üne başvurabilir. (Ayrıntılar için Bu girişimle ilgili sık sorulan sorular bölümüne göz atın).
  3. Firebase konsolunda Dinamik Bağlantılar bölümünü açın.
  4. Dynamic Links için hizmet şartlarını kabul etmediyseniz ve bir alan adı ayarlamadıysanız istendiğinde kabul edin.

    Zaten bir Dynamic Links alan adınız varsa bunu not edin. Programatik olarak Dynamic Links 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ı belirleyin. Böylece yetkisiz tarafların alanınızdan kontrol etmediğiniz sitelere yönlendirme yapan Dinamik Bağlantılar oluşturmasını önlersiniz. Belirli URL kalıplarına izin ver bölümüne bakın.

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 Dinamik Bağlantı oluşturmak isterseniz en basit yol, Firebase konsolunu ziyaret edip adım adım açıklamalı formu takip ederek manuel olarak bir bağlantı oluşturmaktır.

Dinamik Bağlantı oluşturmak için Oluşturucu yöntemleriyle Dinamik Bağlantı parametrelerini belirterek, Oluşturucu ile yeni bir DynamicLink nesnesi oluşturun. Ardından buildDynamicLink veya buildShortDynamicLink numaralı telefonu arayın.

Aşağıdaki minimal örnek, Android'de Android uygulamanız ve iOS'te com.example.ios uygulamasıyla açılan https://www.example.com/ için uzun bir Dinamik Bağlantı oluşturur:

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 Dinamik Bağlantı oluşturmak için aynı şekilde bir DynamicLink oluşturun ve buildShortDynamicLink çağrısı yapın. Kısa bağlantı oluşturmak için bir ağ çağrısı gerekir. Bu nedenle buildShortDynamicLink, bağlantıyı doğrudan döndürmek yerine bir Task döndürür. Böylece, istek tamamlandığında kısa bağlantı kullanılabilir hale gelir. Örnek:

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 Dinamik Bağlantılar, 17 karakterlik bağlantı sonekleriyle oluşturulur. Bu da, kullanıcıların geçerli bir Dinamik Bağlantıyı tahmin etme olasılığını son derece artırır. Kullanım alanınızda, bir kişinin kısa bir bağlantıyı başarıyla tahmin etmesi sizin için bir sakıncası yoksa yalnızca benzersiz olması gereken süre boyunca son ekler oluşturabilirsiniz. Bunu, buildShortDynamicLink yöntemine ShortDynamicLink.Suffix.SHORT ileterek yapabilirsiniz:

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 biriyle Dinamik Bağlantılar oluşturmak için Dynamic Link Builder API'yi kullanabilirsiniz. Ayrıntılar için API referansına bakın.

Aşağıdaki örnek, birkaç ortak parametrenin ayarlandığı bir Dinamik Bağlantı oluşturur:

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

Dinamik Bağlantı parametrelerini aşağıdaki yöntemlerle ayarlayabilirsiniz:

DynamicLink parametreleri
setLink

Uygulamanızın açılacağı bağlantı. Uygulamanızın işleyebileceği bir URL (genellikle uygulamanın içeriği veya yükü) belirtin. Bu URL, uygulamaya özgü mantığı başlatır (ör. kullanıcıya kupon verme veya karşılama ekranı görüntüleme gibi). Bu bağlantı iyi biçimlendirilmiş bir URL olmalı, doğru şekilde URL olarak kodlanmış olmalı, HTTP veya HTTPS kullanmalı ve başka bir Dinamik Bağlantı olmamalıdır.

setDomainUriÖnek Firebase konsolunda bulabileceğiniz Dinamik Bağlantı URL'si ön ekiniz. Bir Dinamik Bağlantı alanı aşağıdaki örneklere benzer:
https://example.com/link
https://example.page.link
AndroidParametreleri
setFallbackUrl Uygulama yüklü olmadığında açılacak bağlantı. Uygulama yüklü olmadığında uygulamanızı Play Store'dan yüklemek dışında bir şey yapmak için bunu belirtin. Örneğin, içeriğin mobil web sürümünü açabilir veya uygulamanızın tanıtım sayfasını görüntüleyebilirsiniz.
MinimumSürümü ayarlayın Uygulamanızın bağlantıyı açabilecek minimum sürümünün versionCode. Yüklenen uygulama daha eski bir sürümse kullanıcı, uygulamayı yeni sürüme geçirmesi için Play Store'a yönlendirilir.
iOSParametreleri
SetAppStoreId Uygulamanızın yüklü olmadığı zamanlarda kullanıcıları App Store'a göndermek için kullanılan App Store kimliği
setFallbackUrl Uygulama yüklü olmadığında açılacak bağlantı. Uygulama yüklü olmadığında uygulamanızı App Store'dan yüklemek dışında bir şey yapmak için bunu belirtin. Örneğin, içeriğin mobil web sürümünü açabilir veya uygulamanız için bir tanıtım sayfası görüntüleyebilirsiniz.
Özel Şema ayarla Uygulamanızın özel URL şeması (uygulamanızın paket kimliğinden farklı bir şekilde tanımlanmışsa)
setIpadYedek URL'si Uygulama yüklü olmadığında iPad'lerde açılacak bağlantı. Uygulama yüklü olmadığında uygulamanızı App Store'dan yüklemek dışında bir şey yapmak için bunu belirtin. Örneğin, içeriğin web sürümünü açabilir veya uygulamanız için tanıtım sayfası görüntüleyebilirsiniz.
setIpadBundleKimliği iPad'lerde bağlantıyı açmak için kullanılacak iOS uygulamasının paket kimliği. Uygulama, Firebase konsolunun Genel bakış sayfasından projenize bağlanmalıdır.
MinimumSürümü ayarlayın Uygulamanızın bağlantıyı açabilen minimum sürümünün sürüm numarası. Uygulamanız açıldığında bu işaret, uygulamanıza iletilir ve uygulamanız bu işareti kullanarak ne yapacağına karar vermelidir.
GezinmeBilgi Parametreleri
setForcedRedirectEnabled "1" olarak ayarlanırsa Dinamik Bağlantı açıldığında uygulama önizleme sayfasını atlayıp bunun yerine uygulamaya veya mağazaya yönlendirme yapın. Uygulama önizleme sayfası (varsayılan olarak etkindir), uygulamalarda Dynamic Links açtıklarında kullanıcıları en uygun hedefe daha güvenilir şekilde gönderebilir. Ancak bir Dinamik Bağlantının yalnızca Dynamic Links'i bu sayfa olmadan güvenilir şekilde açabilen uygulamalarda açılmasını bekliyorsanız bu parametreyle özelliği devre dışı bırakabilirsiniz. Bu parametre yalnızca iOS'teki Dinamik Bağlantı davranışını etkiler.
SocialMetaTagParameters
setTitle Dinamik Bağlantı bir sosyal medya yayınında paylaşıldığında kullanılacak başlık.
setDescription Dinamik Bağlantı bir 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'den 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 iletilir 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 Dinamik Bağlantıyı kısaltmak için, parametreleri diğer oluşturucu yöntemleriyle ayarlamak yerine setLongLink kullanarak Dinamik Bağlantının 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
                    // ...
                }
            }
        });