Firebase Dynamic Links, kullanıcıyı mobil uygulama içinde doğru yere veya bir web sitesine yönlendiren akıllı bağlantılar oluşturmak için Google hizmetidir. Uygulamanın cihazda yüklü olup olmamasına göre çalışır. Dynamic Links, uygulama mağazasından yükleme sonrası ilk başlatmada bile geçiş bağlamını korur. Firebase Dokümantasyonu, 2026'ya göre, dinamik bağlantılar tek bir API'de işlenir ve davranışı otomatik olarak belirler: uygulamayı açma, web sitesine gitme veya uygulamayı yükleme. Hizmet, referans programları, onboarding senaryoları ve pazarlama kampanyaları için vazgeçilmezdir.
Önemli Noktalar
Firebase Dynamic Links, mobil uygulama veya web sitesinde istenen içeriğe götüren tek bir bağlantı oluşturan Google teknolojisidir. Platform ve yükleme durumuna göre davranışı uyarlar. Bağlantı, uygulamanın cihazda yüklü olup olmadığını kontrol eder: yüklüyse — parametrelerle uygulamayı açar, yüklü değilse — yükleme için Google Play veya App Store'a yönlendirir ve yükleme sonrası hedef ekrana yönlendirir.
Dynamic Links'in normal derin bağlantılara göre ana avantajı, ertelenmiş derin bağlantı desteğidir. Deferred Deep Linking, uygulama henüz yüklenmemiş olsa bile geçiş bağlamının (bağlantı parametreleri) korunması anlamına gelir. Kullanıcı uygulamayı mağazadan yüklediğinde, Dynamic Links SDK kaydedilen bağlamı okur ve istenen ekrana iletir. Bu teknoloji olmadan, kullanıcı yükleme sonrası ana ekrana gelir ve promosyon kodunu, daveti veya belirli bir sipariş bağlantısını kaybeder.
Dynamic Links, davet edenin hesabına atıfla yeni kullanıcılar çekmek için referans programlarında kullanılır. Pazarlama kampanyaları, e-posta bültenlerinden ve sosyal ağlardan geçişlerle Dynamic Links'i hassas dönüşüm ölçümü için kullanır. Onboarding senaryolarında bağlantı, yeni kullanıcıyı kişiselleştirilmiş içerikle bir karşılama ekranına götürür. E-ticarette ürün bağlantıları bağlamı korur ve yükleme sonrası ilk başlatmada bile ürün kartına götürür.
Dinamik Bağlantıların çalışma mekanizması, her biri uygulama durumuna göre değişebilen birkaç aşamadan oluşur. Kullanıcı dinamik bir bağlantıya tıkladığında, tarayıcı Firebase sunucusuna bir istek gönderir. Firebase, intent-filter veya universal link kontrolü yoluyla uygulamanın yüklü olup olmadığını kontrol eder. Uygulama yüklüyse, Firebase derin bağlantıyı ileterek açar. Yüklü değilse — mağaza sayfasına veya web sürümüne yönlendirir.
Standart bir Dynamic Link, temel URL, bağlantı parametreleri ve isteğe bağlı pazarlama etiketlerinden oluşur. Temel URL, Firebase Console'da kayıtlı your-app.page.link gibi bir alan adıdır. Derin bağlantı parametreleri sorgu parametreleriyle ayarlanır: link (uygulama içindeki hedef URL), apn (Android Paket Adı), ibi (iOS Bundle ID), st ve sd (sosyal önizleme için başlık ve açıklama). Pazarlama etiketleri utm_source, utm_medium, utm_campaign izleme için Google Analytics'e iletilir.
| Parametre | Açıklama | Örnek |
|---|---|---|
| link | Hedef derin bağlantı | https://yourapp.page.link/product/123 |
| apn | Android Paket Adı | com.example.myapp |
| ibi | iOS Bundle ID | com.example.myapp.ios |
| st | Sosyal başlık | Özel teklif |
| sd | Sosyal açıklama | İlk siparişte %30 indirim |
Firebase Console, Engage > Dynamic Links bölümünde Dynamic Links oluşturmak için görsel bir arayüz sağlar. Konsolda, derin bağlantı, web davranışı, sosyal meta veriler ve UTM etiketleri dahil tüm bağlantı parametrelerini ayarlayabilirsiniz. Bağlantı oluşturulduktan sonra konsol, kullanıma hazır bir URL ve tıklamalar ile geçişler hakkında istatistikler sağlar. Toplu bağlantı oluşturma için OAuth 2.0 kimlik doğrulamasıyla Firebase Dynamic Links REST API kullanılır.
Programlı Dynamic Links oluşturma için Firebase Dynamic Links API'sine bir POST isteği gönderilir. İstek gövdesi, derin bağlantı parametreleri, platform ayarları ve sosyal meta veriler içeren dynamicLinkInfo'yu içerir. API, https://your-app.page.link/abc123 gibi kullanıma hazır bir URL döndürür. Uzun ömürlü bağlantılar için suffix.option = UNIQUE kullanılır — benzersiz sonekli kısa bağlantılar. Geçici bağlantılar için — SHORT, olası çakışmalarla birlikte.
const axios = require("axios")
const apiUrl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY"
const data = {
dynamicLinkInfo: {
domainUriPrefix: "https://yourapp.page.link",
link: "https://yourapp.com/promo/summer",
androidInfo: { androidPackageName: "com.example.myapp" },
iosInfo: { iosBundleId: "com.example.myapp.ios" },
socialMetaTagInfo: {
socialTitle: "Yaz kampanyası",
socialDescription: "Ay sonuna kadar %50'ye varan indirim"
}
},
suffix: { option: "UNIQUE" }
}
axios.post(apiUrl, data)
.then(res => console.log(res.data.shortLink))
.catch(err => console.error(err))
Dynamic Links, alan adından sonra 6–8 karakterli kısa URL'leri otomatik olarak oluşturur ve bunları SMS ve sosyal ağlarda kullanıma uygun hale getirir. UTM parametreleri utmParameters alanı veya doğrudan link parametresi aracılığıyla eklenir. Firebase, Dynamic Links'teki tıklamaları Firebase için Google Analytics ile otomatik olarak ilişkilendirerek referans trafiğini ve kampanya atıflarını izlemenizi sağlar.
Android'de Dynamic Links ayarlama, Firebase SDK eklemeyi, derin bağlantıları alan activity için intent-filter yapılandırmayı ve bağlantıları Firebase Dynamic Links SDK aracılığıyla işlemeyi içerir. SDK'yı kurduktan ve google-services.json'ı ekledikten sonra, uygulama alan adınızdan bağlantıları işlemek için AndroidManifest.xml'de intent-filter ile activity kaydetmeniz gerekir.
Dynamic Links'i işleyen activity, VIEW eylemi ve DEFAULT ile BROWSABLE kategorileri için intent-filter'e sahip olmalıdır. AndroidManifest.xml, derin bağlantınıza karşılık gelen android:scheme, android:host ve android:pathPrefix ile data etiketi içerir. page.link alan adından bağlantıları işlemek için https şeması ve Dynamic Links alan adı sunucunuzla bir intent-filter de eklenir.
<!-- AndroidManifest.xml -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name=
"android.intent.action.VIEW" />
<category android:name=
"android.intent.category.DEFAULT" />
<category android:name=
"android.intent.category.BROWSABLE" />
<data android:scheme="https"
android:host="yourapp.com"
android:pathPrefix="/promo" />
</intent-filter>
</activity>
intent-filter ayarlandıktan sonra, Activity kodunda gelen Dynamic Link'i işlemeniz gerekir. FirebaseDynamicLinks API, intent'ten bağlantıyı alır ve çıkarılan parametrelerle birlikte bir PendingDynamicLinkData nesnesi döndürür. getLink yöntemi, ayrıştırılıp gezinme için kullanılabilen hedef derin bağlantıyı döndürür. Bağlantıyı hem soğuk başlatma (onCreate'te getIntent ile) hem de sıcak başlatma (onNewIntent ile) sırasında işlemek önemlidir.
iOS'ta Dynamic Links ayarlama, hem Firebase tarafında hem de Xcode projesinde yapılandırma gerektirir. Firebase Console'a bir APNs anahtarı yüklemeniz, Swift Package Manager veya CocoaPods aracılığıyla Firebase SDK eklemeniz ve Universal Links'i işlemek için App Delegate'i yapılandırmanız gerekir. iOS'ta Dynamic Links, tarayıcı ve uygulama arasında ara sayfa olmadan sorunsuz geçiş için Universal Links kullanır.
Universal Links, alan adınızı mobil uygulamaya bağlayan bir Apple teknolojisidir. apple-app-site-association (AASA) dosyası https://your-app.page.link/apple-app-site-association adresindeki sunucuya yüklenir. Firebase, Dynamic Links alan adınız için bu dosyayı otomatik olarak oluşturur ve bakımını yapar. Xcode'da Associated Domains'i etkinleştirmeniz ve proje Yeteneklerinde applinks:your-app.page.link belirtmeniz gerekir.
iOS için Dynamic Links işleme, App Delegate veya Scene Delegate'te Firebase SDK aracılığıyla yapılır. application:continueUserActivity: yöntemi, gelen Universal Link'i yakalar ve hedef bağlantıyı ve parametreleri çıkaran Firebase Dynamic Links API'sine iletir. Firebase SDK, Firebase Installation API kısa süreli depolaması aracılığıyla yükleme verilerini isteyerek Deferred Deep Links'i otomatik olarak işler.
import FirebaseDynamicLinks
class AppDelegate: UIApplicationDelegate {
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping
([UIUserActivityRestoring]?) -> Void
) -> Bool {
return DynamicLinks.dynamicLinks()
.handleUniversalLink(userActivity.webpageURL!) {
dynamicLink, error in
if let link = dynamicLink?.url {
self.handleDeepLink(link)
}
}
}
}
Kotlin kullanarak bir Android uygulamasında Dynamic Link işlemenin tam bir örneğine bakalım. MainActivity, uygulamanın hem soğuk hem de sıcak başlatılmasında gelen Dynamic Link'i okur. Bağlantı, argümanlarla istenen ekrana gezinmek için kullanılan parametrelere ayrıştırılır. Örnek, bir promosyon kampanyası tanımlayıcısıyla promosyon sayfasına giden bir bağlantının işlenmesini gösterir.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
handleDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleDynamicLink(intent)
}
private fun handleDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener { data ->
val deepLink = data?.link ?: return@addOnSuccessListener
val promoId = deepLink
.getQueryParameter("promoId") ?: ""
if (promoId.isNotEmpty()) {
navigateToPromoScreen(promoId)
}
}
.addOnFailureListener { e ->
Log.e("DL", "Bağlantı işleme hatası", e)
}
}
}
Dynamic Links'i test etmek için Firebase Console kullanılır; burada bir test bağlantısı oluşturup messenger veya e-posta yoluyla bir cihaza gönderebilirsiniz. Firebase Dynamic Links Hata Ayıklayıcı https://your-app.page.link/?d=1 adresinde bulunur ve bağlantı davranışı hakkında ayrıntılı bilgi görüntüler. Deferred Deep Links'i test ederken, uygulamanın kaldırıldığından ve yükleme sonrası bağlantının iletilen parametrelerle doğru ekrana yönlendirdiğinden emin olmanız gerekir.
Sıkça Sorulan Sorular
Normal derin bağlantılar yalnızca uygulama yüklüyken çalışır ve yükleme sonrası bağlamı korumaz. Dynamic Links, Deferred Deep Linking'i destekler — kullanıcı uygulamayı yükler ve korunan bağlantı parametreleriyle hemen hedef ekrana gelir.
Bağlantı oluşturmak ve işlemek için sunucu gerekli değildir — tüm işlemler Firebase Console, REST API veya istemci tarafında Firebase SDK aracılığıyla gerçekleştirilir. Toplu bağlantı oluşturma için REST API önerilir, ancak konsol manuel oluşturma için uygundur.
Dynamic Links'in süresi dolmaz — manuel olarak silinmedikçe Firebase'de sonsuza kadar saklanırlar. UNIQUE sonekli kısa bağlantılar süresiz olarak var olur. Doğru atıf için her kampanya için benzersiz bağlantılar oluşturulması önerilir.
Dynamic Link işleme, tıklama aşamasında internet bağlantısı gerektirir çünkü Firebase sunucusu uygulama yükleme durumunu kontrol eder. Bağlantı işlendikten sonra, veriler intent veya Universal Link aracılığıyla uygulamaya iletilir ve çevrimdışıyken de kullanılabilir hale gelir.
Firebase Dynamic Links, Spark planında ücretsizdir. Blaze planında, ek ücret olmaksızın proje başına günde 50 bin tıklama sınırı vardır. Sınırın aşılması, ertesi güne kadar yeni bağlantı oluşturulmasını engeller.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun