Deep Link: nedir, bağlantı türleri ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-05-14 Okuma süresi: 9 dk

Deep Link (derin bağlantı), kullanıcıyı ana ekranı atlayarak bir mobil uygulama içindeki belirli bir ekrana veya içeriğe yönlendiren bir URL'dir. Bir web sitesine yönelik normal bir bağlantının aksine, deep link uygulamayı etkinleştirir ve hedef içeriği hemen açar. Android Developers'a göre, doğru yapılandırılmış deep link'ler, içeriğe ulaşmak için gereken adım sayısını azaltarak hedef eyleme dönüşümü %30–50 oranında artırır.

Kilit noktalar

  • Deep Link — ana sayfayı değil, uygulamanın belirli bir ekranını açan URL
  • URI şeması (myapp://profile/123) — deep link'in klasik yöntemi, her iki platformda da çalışır
  • Deferred Deep Link — uygulama yüklendikten sonra tetiklenen ve bağlamı ileten bağlantı
  • Universal Link (iOS) ve App Link (Android) — alan doğrulaması ile deep link'lerin evrimi
  • Bağlamsal Deep Link — ek parametreler iletir: promosyon kodu, yönlendiren, trafik kaynağı

Deep Link (derin bağlantı), tıklandığında bir web sayfasını değil, bir mobil uygulama içindeki belirli bir ekranı açan URI'dir. Teknoloji, mobil platformların temel bir sorununu çözer: tarayıcı doğrudan bir uygulama ekranını açamaz ve deep link, web ile yerel kod arasında bir köprü oluşturur. Deep link olmadan, kullanıcı her zaman ana ekrana gelir ve istenen içeriğe manuel olarak gitmek zorunda kalır.

Bir deep link'in mimarisi iki bölümden oluşur: şema (scheme) hangi uygulamanın bağlantıyı işleyeceğini belirler ve yol (path) uygulama içindeki belirli bir kaynağı (ürün, makale, kullanıcı profili veya ayarlar bölümü) işaret eder. Sorgu parametreleri (?source=push&campaign=summer), analiz, kişiselleştirme ve kampanya atıfı için ek bağlam iletir.

Deep link ile normal bağlantı arasında ayrım yapmak önemlidir. Normal bir bağlantı (https://example.com/product/42) tarayıcıda açılır ve bir sayfanın web sürümüne gider. Bir deep link (myapp://product/42), uygulama yüklüyse aynı içeriğe sahip yerel ekranı açar, ancak uygulama yüklü değilse bir hata gösterir. Universal Link (iOS) ve App Link (Android), kesintisiz geri dönüş (fallback) sorununu çözmek için özel olarak oluşturulmuştur.

Farklı görevler farklı türde deep link'ler gerektirir. Bazı bağlantılar yalnızca yüklü uygulamayla çalışır, bazıları kurulumu bekleyebilir ve bazıları analitik bağlam iletir. Tür seçimi, kullanım senaryosuna bağlıdır: reklam kampanyası, push bildirimi, içerik paylaşımı veya e-posta bülteni.

Standart Deep Link

Standart Deep Link, yalnızca uygulama cihazda zaten yüklüyse tetiklenen temel türdür. Kullanıcı myapp://product/42 bağlantısına tıklar, sistem kayıtlı şemayı algılar ve uygulamayı istenen ekranda açar. Uygulama yüklü değilse, tarayıcı “Sayfa bulunamadı” hatası gösterir veya hiçbir şey yapmaz. Bu tür, zaten yüklü bir uygulama içindeki dahili gezinme için uygundur.

Standart bir deep link kurulumu basittir: manifest'te (Android) veya Info.plist'te (iOS) URI şemasını kaydetmek yeterlidir. Sunucu doğrulaması veya SSL sertifikaları gerekmez. Ancak geri dönüşün olmaması nedeniyle, bu tür pazarlama kampanyaları için güncelliğini yitirmiş olarak kabul edilir — uygulaması olmayan kullanıcılardan trafik kaybı %60'a kadar çıkabilir.

Deferred Deep Link (Ertelenmiş Derin Bağlantı)

Deferred Deep Link, normal deep link'lerin ana sorununu çözer: uygulama yüklü olmasa bile çalışır. Kullanıcı bir bağlantıya tıklar → bir sayfa görür (açılış sayfası veya App Store/Google Play) → uygulamayı yükler → ilk başlatmada, uygulama orijinal bağlantının bağlamını alır ve istenen ekranı açar. Teknoloji, bağlamı ilk başlatmaya kadar sunucuda depolayan bir aracı SDK (AppsFlyer, Branch, Adjust) gerektirir.

Branch, ertelenmiş deep link'ler için en popüler platformlardan biridir. Tüm platformlarda çalışan tek bir bağlantı sağlar: kullanıcının işletim sistemini algılar, uygulama mağazasına yönlendirir ve kurulumdan sonra bağlamı (promosyon kodu, ürün kimliği, kampanya kaynağı) iletir. Branch'e (2024) göre, ertelenmiş deep link'ler reklam kampanyası dönüşümünü %40–70 oranında artırır.

Contextual Deep Link (Bağlamsal Derin Bağlantı)

Contextual Deep Link, bağlam parametreleriyle (trafik kaynağı, kampanya, promosyon kodu, yönlendiren, iş ortağı kimliği) tamamlanmış normal veya ertelenmiş bir deep link'tir. Parametreler URL'de iletilir ve kişiselleştirme için uygulama tarafından işlenir: hoş geldin bonusu gösterme, indirimli ürün açma, kurulum analizlerini kaydetme.

UTM etiketleri (utm_source, utm_medium, utm_campaign), bağlam iletmenin standart bir yoludur. Mobilde, bağlamsal deep link'ler atıf için kritik öneme sahiptir: bunlar olmadan, uygulama sahibi kullanıcıyı hangi kanalın getirdiğini (organik trafik, Facebook reklamları, e-posta bülteni veya QR kodu) bilemez. Kaliteli atıf, bir MMP (Mobile Measurement Partner) ile entegrasyon gerektirir.

Deep Link TürüKurulum gerektirirKurulumu beklerBağlam
StandartEvetHayırSadece URL'de
ErtelenmişHayırEvetSunucu depolama
BağlamsalHerhangiHerhangiUTM + parametreler

iOS, deep link'leri iki mekanizma aracılığıyla destekler: eski Custom URL Scheme ve modern Universal Link (iOS 9+). Custom URL Scheme, Info.plist'te özel bir şema kaydederek çalışır. Uygulama myapp:// kaydeder ve iOS böyle bir bağlantıya tıklandığında uygulamayı açar. Sorun: şema hiçbir uygulama tarafından kaydedilmemişse, tarayıcı bir hata gösterir.

iOS'ta deep link işleme, AppDelegate yöntemi application(_:open:options:) veya SceneDelegate scene(_:openURLContexts:) aracılığıyla gerçekleşir. Geliştirici URL'yi çıkarır, yolu ve parametreleri ayrıştırır ve ardından uygun ekrana gider. SwiftUI kullanılıyorsa, işleme OpenURLAction veya onChange(of: openURL) aracılığıyla yapılır. Uygulama durumunu (başlatılmamış, arka planda veya aktif) doğru şekilde işlemek önemlidir.

iOS'ta güvenlik katıdır: herhangi bir uygulama, aynı şemayı kaydederek Custom URL Scheme'yi ele geçirebilir. Bu potansiyel bir güvenlik açığıdır (URL şeması ele geçirme). Bu nedenle Apple, Universal Link'i daha güvenli bir alternatif olarak önerir: yalnızca doğrulanmış alan sahibi, bağlantıları uygulamayla ilişkilendirebilir. Universal Link hakkında daha fazla bilgi için Universal Link makalesine bakın.

Android, deep link'leri AndroidManifest.xml'deki Intent Filter'lar aracılığıyla uygular. Uygulama, belirli bir şemayı (myapp://) veya belirli ana bilgisayarları ve yolları işleyen bir Activity tanımlar. Kullanıcı bir deep link'e tıkladığında, Android eşleşen Intent Filter'a sahip bir Activity arar ve açar. Birden fazla eşleşen Activity varsa, sistem bir uygulama seçimi iletişim kutusu gösterir.

xml
// AndroidManifest.xml - Deep Link için Intent Filter
<activity
    android:name=".ui.ProductActivity"
    android:exported="true">
    <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="myapp"
            android:host="product"
            android:pathPrefix="/" />
    </intent-filter>
</activity>

Android'de deep link işleme, Activity.onCreate() veya onNewIntent() yönteminde yapılır. Geliştirici Intent'i alır, URI'yi çıkarır ve gezinmeyi başlatır. Jetpack Navigation için Navigation Deep Link bileşeni, gezinme grafiğinde deep link'leri bildirimsel olarak tanımlamaya olanak tanır. Android App Link (Android 6.0+), Digital Asset Links aracılığıyla doğrulama içeren ve uygulama seçimi iletişim kutusunu ortadan kaldıran deep link'lerin evrimidir.

Android 12+ değişikliklerini dikkate almak önemlidir: API 31'den itibaren sistem, deep link'leri işleyen Activity'ler için exported=true'un açıkça bildirilmesini gerektirir ve Intent Filter'ın doğruluğunu kontrol eder. Google Play Store, yayınlama sırasında App Link doğrulamasını kontrol eder. Doğrulama olmadan, deep link'ler web sitesinde olmayan sayfalara yönlendiriyorsa Google güncellemeyi reddedebilir.

Deep link kurulumu, her iki platform için ortak olan birkaç aşamayı içerir. İlk adım, şemayı ve URL yapısını tanımlamaktır. Universal Link ve App Link ile uyumluluk için özel şema yerine https şemasının kullanılması önerilir. URL yapısı, web sitesi yapısını yansıtmalıdır: /product/42, /profile/john, /settings/notifications. Bu, bakımı ve arama motorları tarafından içerik indekslemeyi basitleştirir.

İkinci aşama, uygulama kodunda deep link'leri işlemektir. Android için nav_graph'da bildirimsel deep link'lerle Jetpack Navigation önerilir. iOS için — OpenURLAction işleme ile SwiftUI NavigationStack önerilir. Üç uygulama durumunu işlemek önemlidir: soğuk başlatma (uygulama başlatılmamış), sıcak başlatma (arka planda) ve aktif (ekranda). Her durum farklı gezinme mantığı gerektirir.

  • Şemayı ve URL yapısını tanımlayın (myapp:// veya https://your.domain/)
  • Şemayı kaydedin manifest'te (Android) veya Info.plist'te (iOS)
  • İşlemeyi uygulayın Activity veya AppDelegate/SwiftUI'da
  • Geri dönüş ayarlayın uygulamanın yüklü olmaması durumu için
  • Üç durumu da test edin: soğuk başlatma, sıcak başlatma, aktif

Deep link testi ayrı bir görevdir. Android Studio, Intent Filter'ları kontrol etmek için App Links Assistant aracını sağlar. iOS'ta test, başlatma şeması argümanları aracılığıyla bir URL ileterek Xcode üzerinden yapılır. CI kontrolü (otomatik deep link gezinmesi ve beklenen ekranın açıldığının doğrulanması) ayarlanması önerilir. Ertelenmiş deep link'ler için test, “kurulum → ilk başlatma → bağlam”ın tam döngüsünü içerir. Test olmadan, uygulama gezinmesi güncellendiğinde deep link'ler sıklıkla bozulur.

Sıkça Sorulan Sorular

Deep link normal bağlantıdan nasıl farklıdır?

Normal bağlantı (https://site.com/page) tarayıcıda açılır. Deep link (myapp://page veya doğrulamalı https://site.com/page) bir mobil uygulama içindeki ekranı açar. Deep link ayrıca bağlam da iletebilir: promosyon kodu, trafik kaynağı, yönlendiren kimliği.

URI şeması nedir ve neden gereklidir?

URI şeması, hangi uygulamanın bağlantıyı işleyeceğini belirleyen bir URL ön ekidir (örnek: myapp://, vk://, tg://). Sistem, yönlendirme için şemayı kullanır: bu şemayı kaydeden uygulamayı bulur ve işleme için URL'yi ona iletir.

Ertelenmiş deep link nasıl çalışır?

Kullanıcı bağlantıya tıklar → hizmet (Branch, AppsFlyer) bağlamı hatırlar → App Store/Google Play'e yönlendirir → kurulum ve ilk başlatmadan sonra SDK, kaydedilmiş bağlamı uygulamaya iletir → uygulama, kullanıcı zaten uygulamayı yüklemiş gibi istenen ekranı açar.

Uygulama yüklü olmadan deep link kullanılabilir mi?

Normal deep link — hayır. Ertelenmiş deep link — evet, uygulama mağazasına yönlendiren ve bağlamı kaydeden bir ara sayfa aracılığıyla. Universal Link ve App Link, uygulama yüklü değilse geri dönüş olarak web sitesini açar.

Gerçek cihazlarda deep link'ler nasıl test edilir?

Android'de adb kullanın: adb shell am start -W -a android.intent.action.VIEW -d “myapp://product/42”. iOS'ta — xcrun simctl openurl booted “myapp://product/42”. Her iki platform için Firebase Dynamic Links ve Branch test konsolları mevcuttur.

Özet

  • Deep Link — ana sayfayı veya web sitesini değil, uygulamanın belirli bir ekranını açan URL
  • Üç tür — Standart (yalnızca yüklü uygulamayla), Ertelenmiş (kurulum bekleme ile), Bağlamsal (UTM parametreleriyle)
  • Custom URL Scheme (myapp://) — basit yöntem, ancak uygulama yoksa geri dönüş yok
  • Universal Link ve App Link — alan doğrulaması ve tarayıcı geri dönüşü ile deep link'lerin evrimi
  • iOS deep link'leri AppDelegate/SceneDelegate aracılığıyla, Android — Intent Filter aracılığıyla işler
  • Ertelenmiş Deep Link, kurulumdan önce bağlamı depolamak için aracı SDK (Branch, AppsFlyer) gerektirir
  • Üç durumun (soğuk, sıcak, aktif) testi deep link kurulumunun zorunlu bir aşamasıdır

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.

Projeyi tartış

Ayrıca okuyun