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

Firebase Dynamic Links Oluşturucu API'si ile kısa veya uzun Dynamic Links oluşturabilirsiniz. Bu API, uzun bir Dynamic Link veya Dynamic Link parametreleri içeren bir nesne kabul eder ve aşağıdaki örneklerdeki gibi 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 almak üzere 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ı kaydederken SHA-1 imzalama anahtarınızı belirtin. Uygulama Bağlantıları'nı kullanıyorsanız SHA-256 anahtarınızı da belirtin.

  2. Modülünüzün (uygulama düzeyinde) Gradle dosyasında (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 kullanmanızı öneririz.

    Dynamic Links ile en iyi deneyimi elde etmek için Firebase projenizde Google Analytics'yi 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:34.0.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)  Firebase kitaplığı bağımlılıklarını BoM kullanmadan ekleyin.

    Firebase BoM kullanmamayı tercih ederseniz 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 sayede tüm sürümlerin uyumlu olması sağlanır.

    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 konsolunda Dynamic Links bölümünü açın.
  4. Hizmet şartlarını henüz kabul etmediyseniz ve Dynamic Links için bir alan adı belirlemediyseniz istendiğinde bu işlemleri yapın.

    Zaten bir Dynamic Links alanınız varsa bunu not edin. Dynamic Links oluştururken programatik olarak 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ı engellersiniz. Belirli URL kalıplarına izin verme başlıklı makaleyi inceleyin.

Firebase konsolunu kullanma

İster test amacıyla ister pazarlama ekibinizin sosyal medya gönderisi gibi yerlerde 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 formu izleyerek manuel olarak oluşturmaktır.

Dynamic Link oluşturmak için Builder'ı ile 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 minimum örnek, Android'de Android uygulamanızla ve iOS'te uygulama com.example.ios ile açılan uzun bir Dynamic Link oluşturur:https://www.example.com/

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

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

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

Varsayılan olarak, kısa Dynamic Links, 17 karakterlik bağlantı sonekleriyle oluşturulur. Bu sonekler, geçerli bir Dynamic Link'nin tahmin edilmesini son derece zorlaştırır. Kullanım alanınızda kısa bağlantıların tahmin edilmesinin bir sakıncası yoksa ShortDynamicLink.Suffix.SHORT değerini buildShortDynamicLink yöntemine ileterek yalnızca benzersiz olmak için gereken uzunlukta sonekler oluşturmayı tercih edebilirsiniz:

Kotlin

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 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 parametrenin ayarlandığı bir Dynamic Link oluşturuluyor:

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

Aşağıdaki yöntemlerle Dynamic Link parametrelerini ayarlayabilirsiniz:

DynamicLink parametreleri
setLink

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

setDomainUriPrefix Dynamic Link URL önekiniz. Bu bilgiyi Firebase konsolunda bulabilirsiniz. A Dynamic Link alanı aşağıdaki örneklere benzer:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl Uygulama yüklü değilken açılacak bağlantı. Uygulama yüklü değilken Play 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ız için bir tanıtım sayfası göstermek) bunu belirtin.
setMinimumVersion Bağlantıyı açabilecek uygulamanızın 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 Uygulama yüklü olmadığında 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ı. Uygulama yüklü değilken 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ız için tanıtım amaçlı bir sayfa göstermek) bunu belirtin.
setCustomScheme Uygulamanızın paket kimliğinden farklı olarak tanımlanmışsa uygulamanızın özel URL şeması
setIpadFallbackUrl Uygulama yüklü değilken iPad'lerde açılacak bağlantı. Uygulama yüklü değilken 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ız için 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ğlanmalıdır.
setMinimumVersion Bağlantıyı açabilecek uygulamanızın minimum sürümünün sürüm numarası. Bu işaret, uygulamanız açıldığında uygulamaya iletilir ve uygulamanız bu işaretle ne yapacağına karar vermelidir.
NavigationInfoParameters
setForcedRedirectEnabled "1" olarak ayarlanırsa Dynamic Link açıldığında uygulama önizleme sayfası atlanır ve bunun yerine 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 yönlendirebilir. Ancak Dynamic Link öğesinin yalnızca bu sayfa olmadan Dynamic Links öğesini güvenilir bir şekilde açabilen uygulamalarda açılmasını bekliyorsanız bu parametreyle devre dışı bırakabilirsiniz. Bu parametre, Dynamic Link davranışını yalnızca iOS'te etkiler.
SocialMetaTagParameters
setTitle Dynamic Link sosyal medya gönderisinde paylaşıldığında kullanılacak başlık.
setDescription Dynamic Link sosyal medya gönderisinde paylaşıldığında kullanılacak açıklama.
setImageUrl Bu bağlantıyla ilgili bir resmin URL'si. Resim en az 300x200 piksel boyutunda 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 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 Dynamic Link'yı kısaltmak için diğer oluşturucu yöntemleriyle parametreleri ayarlamak yerine setLongLink kullanarak Dynamic Link'nın URL'sini belirtin:

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