Genel Bakış
Deep linking, bir kullanıcı bir bağlantıya dokunduğunda — e-posta, SMS, web sitesi, push bildirimi veya uygulama içi mesajdan — uygulamanızdaki belirli bir ekrana yönlendirir. Uygulama yüklü değilse, işletim sistemi kullanıcıları uygulama mağazasına veya yedek bir web sayfasına yönlendirebilir. Bu kılavuz şunları kapsar:- Deep link türleri ve her birinin ne zaman kullanılacağı
- Android ve iOS için platform kurulumu
- OneSignal SDK ile uygulamanızda deep link’lerin işlenmesi
- Push, e-posta ve uygulama içi mesajlar için kanala özgü davranış
Genel URL ve bağlantı yapılandırması (Launch URL’ler, UTM parametreleri, dinamik URL’ler, bağlantı takibi) için bkz. URL’ler, bağlantılar ve deep link’ler.
Ön Koşullar
Deep link’leri kurmadan önce şunlara ihtiyacınız vardır:- Yapılandırılmış bir uygulamayla birlikte bir OneSignal hesabı
- Mobil uygulamanızda yüklü OneSignal SDK
- Universal Links veya App Links için HTTPS üzerinden barındırılan, kontrolünüzdeki bir alan adı
- Uygulamanızın kaynak koduna ve derleme yapılandırmasına erişim (iOS için Xcode, Android için Android Studio)
Deep link türleri
Üç yaygın deep linking mekanizması vardır. Her biri, uygulamanın yüklü olup olmadığına bağlı olarak farklı davranış gösterir.| Tür | Platform | Format | Uygulama yüklü değilse |
|---|---|---|---|
| Universal Links | iOS 9+ | https://yourdomain.com/path | URL’yi Safari’de açar |
| App Links | Android 6.0+ | https://yourdomain.com/path | URL’yi tarayıcıda açar |
| Özel URI şemaları | iOS ve Android | myapp://path | Sessizce başarısız olur veya hata gösterir |
https:// URL’leri kullanır, kanallar arası (push, e-posta, SMS) çalışır ve uygulama yüklü olmadığında yedek davranış sağlar. Özel URI şemaları (myapp://) kurulumu daha basittir, ancak yedek davranış sağlamaz ve tüm bağlamlarda çalışmayabilir (örneğin, e-posta istemcileri).
Android kurulumu (App Links)
Gerekli yapılandırmayı oluşturmak için Android Studio’nun App Links Assistant’ını kullanın.Intent filtrelerini yapılandırma
Deep link’i işleyecek Activity’ye bir intent filtresi ekleyin:Gelen intent’i işleme
Digital Asset Links dosyasını barındırma
assetlinks.json dosyasını Android Studio’nun App Links Assistant’ını kullanarak oluşturun ve şu adreste barındırın:
iOS kurulumu (Universal Links)
Apple Universal Links, kullanıcı eşleşen birhttps:// URL’sine dokunduğunda uygulamanızı açar. Uygulamanın yüklü olduğunun garantili olduğu daha basit kullanım durumları için bunun yerine URL Schemes kullanabilirsiniz.
Associated Domains’i etkinleştirme
- Xcode’da hedefi seçin → Signing & Capabilities → Associated Domains ekleyin
- Alan adınızı ekleyin:
applinks:yourdomain.com
Uygulamanızda Universal Link’i işleme
Apple App Site Association dosyasını barındırma
Birapple-app-site-association (AASA) dosyası oluşturun ve şu adreste barındırın:
TEAMID yerine Apple Team ID’nizi, com.example.app yerine bundle identifier’ınızı yazın:
iOS Launch URL davranışı
OneSignal’ın iOS SDK’sı, Launch URL’yi (url özelliği) işlemek için openURL kullanır. Bu, bağlantının önce tarayıcıda açılmasına, ardından uygulamaya geri yönlendirilmesine neden olur — bu kullanıcı deneyimi açısından kötü olabilir.
Bunu önlemek için şu yaklaşımlardan birini kullanın:
- API yükünde
urlyerinedatakullanın ve deep link’i Push Bildirimi Tıklama Dinleyicisi’nde işleyin Info.plist’eOneSignal_suppress_launch_urls’i Boolean olarakYESdeğeriyle ekleyerek Launch URL’leri bastırın, ardından tüm gezinmeyi tıklama dinleyicisinde işleyin
Deep link’leri OneSignal SDK ile işleme
OneSignal mesajlarından deep link’leri işlemenin en güvenilir yolu, işletim sistemi düzeyinde bağlantı çözümüne güvenmek yerine SDK’nın tıklama dinleyicilerini kullanmaktır. Bu, uygulamanızdaki gezinme üzerinde tam kontrol sağlar.Push bildirimi tıklama dinleyicisi
Bildirim tıklamalarını yakalamak ve kullanıcıyı deep link URL’si veya ek verilere göre yönlendirmek içinaddClickListener kullanın:
addClickListener() Push.
Uygulama içi mesaj tıklama dinleyicisi
Uygulama içi mesaj butonlarından ve eylemlerinden deep link’leri işlemek için uygulama içi mesaj tıklama dinleyicisini kullanın:addClickListener() In-App.
Push bildirimleri
Deep link’i iki yoldan biriyle ekleyin:| Yöntem | API özelliği | Davranış |
|---|---|---|
| Launch URL | url (veya yalnızca mobil için app_url) | İşletim sistemi URL’yi doğrudan açar. iOS’ta, bastırılmadığı sürece önce tarayıcıyı açar. |
| Ek Veri (önerilen) | data | URL tıklama dinleyicinize iletilir. Gezinmeyi tamamen siz kontrol edersiniz. |
Platform davranışı
- Android: App Links aracılığıyla eşleşen Activity’yi doğrudan açar
- iOS: Safari’yi açar, ardından uygulamayı açar (Launch URL’leri bastırıp tıklama dinleyicisinde gezinmeyi işlemediğiniz sürece)
url, web_url ve app_url hedefleme hakkında ayrıntılar için bkz. URL’ler, bağlantılar ve deep link’ler.
E-postalar
Varsayılan olarak, OneSignal tıklama takibi için e-posta bağlantılarını yeniden yazar. Bu, URL’yi değiştirir ve işletim sistemi artık alan adını uygulamanızın İlişkili Alan Adı ile eşleşen bir alan olarak tanımadığından deep linking’i bozar.E-postada deep link’leri etkinleştirme
Deep link’leri korumak için şu yöntemlerden birini kullanarak tıklama takibini devre dışı bırakın:- Dashboard: E-posta editöründe Track link clicks seçeneğinin işaretini kaldırın
- API:
disable_email_click_tracking: trueayarlayın - Bağlantı başına: Diğerleri için etkin tutarken tek tek bağlantılarda takibi devre dışı bırakmak için
{{ 'https://yourdomain.com/path' | do_not_track_link }}Liquid filtresini kullanın

E-posta deep link davranışı
| Senaryo | Sonuç |
|---|---|
| iOS + Safari + Universal Link + Takip devre dışı | Uygulamayı doğrudan açar |
| iOS + Safari + Universal Link + Takip etkin | Safari’yi açar, uygulamayı açmayı sorar |
| iOS + Safari olmayan posta istemcisi + Universal Link | Uygulama yüklü değilse App Store’u açar |
| Android + App Link + Takip devre dışı | Uygulamayı doğrudan açar |
| Android + App Link + Takip etkin | Önce tarayıcıyı, sonra uygulamayı açar |
Uygulama içi mesajlar
Uygulama içi mesajlardaki deep link’ler tıklama dinleyicisi desenini kullanır. Mesaj editöründe özel bir eylem tanımlayıcısı belirler, ardından uygulama kodunuzda işlersiniz.Sürükle ve bırak editörü
- Bir buton veya tıklanabilir öğe ekleyin
- Tıklama eylemini Custom Action ID olarak ayarlayın
- Deep link URI’nizi Action Name olarak girin (örneğin,
https://yourdomain.com/promoveyamyapp://promo)
HTML editörü
Özel HTML’den deep link’leri tetiklemek için Uygulama İçi JS Kütüphanesi’ndekiopenUrl yöntemini kullanın.
Tıklamayı işleme
Eylemi yakalamak ve kullanıcıyı uygulamanızda yönlendirmek için uygulama içi mesaj tıklama dinleyicisini kullanın.Deep link’leri test etme
Android
Bildirim göndermeden App Links’i test etmek içinadb kullanın:
assetlinks.json dosyanızın erişilebilir olduğunu doğrulayın:
iOS
AASA dosyanızı doğrulamak için Apple’ın İlişkili Alan Adları doğrulama aracını kullanın. Universal Link’leri aşağıdaki adımlarla da test edebilirsiniz:- Bağlantıyı Notes uygulamasına yapıştırın
- “Uygulamada Aç” seçeneğinin göründüğünü onaylamak için bağlantıya uzun basın
- Uygulamanızın açıldığını doğrulamak için bağlantıya dokunun
Universal Links, doğrudan Safari adres çubuğuna yazıldığında çalışmaz — başka bir uygulamadan (Notes, Mail, Messages vb.) dokunulması gerekir.
OneSignal test mesajları
- OneSignal dashboard’dan Launch URL olarak veya Ek Veri içinde bir deep link URL’si ile test push’u gönderin
- Bildirimin uygulamanızdaki doğru ekranı açtığını doğrulayın
- URL veya verinin alındığını onaylamak için tıklama dinleyici günlüklerinizi kontrol edin
Sorun Giderme
iOS deep link’i uygulama yerine Safari’yi açıyor
Bu en yaygın sorundur. Olası nedenler:- AASA dosyası doğru barındırılmamış —
https://yourdomain.com/.well-known/apple-app-site-associationadresindeContent-Type: application/jsonile ve yönlendirme olmadan erişilebilir olduğunu doğrulayın - Associated Domains yapılandırılmamış — Xcode → Signing & Capabilities → Associated Domains’in
applinks:yourdomain.comiçerip içermediğini kontrol edin - Launch URL davranışı — OneSignal’ın iOS SDK’sı
urlözelliği içinopenURLkullanır, bu da tarayıcı öncelikli davranışı tetikler. Bunun yerinedata+ tıklama dinleyicisi kullanın veya Launch URL’leri bastırın - Safari’de test etme — Universal Links, Safari adres çubuğundan etkinleşmez. Notes, Mail veya başka bir uygulamadan test edin.
Android deep link’i tarayıcıyı açıyor
autoVerifyeksik — Intent filtrenizinandroid:autoVerify="true"içerdiğinden emin olunassetlinks.jsonbulunamıyor — Dosyanınhttps://yourdomain.com/.well-known/assetlinks.jsonadresinde olduğunu ve HTTP 200 döndürdüğünü doğrulayın- SHA256 parmak izi uyuşmazlığı —
assetlinks.jsoniçindeki parmak izi, uygulamanızın imzalama sertifikasıyla eşleşmelidir. Hata ayıklama ve sürüm derlemeleri farklı sertifikalar kullanır.
Deep link push’ta çalışıyor ama e-postada çalışmıyor
E-posta tıklama takibi URL’leri yeniden yazar ve alan adı doğrulamasını bozar. Deep link içeren e-postalar için tıklama takibini devre dışı bırakın.Deep link alındı ama uygulama yönlendirmiyor
- Tıklama dinleyicinizin uygulama yaşam döngüsünün başında kayıtlı olduğunu doğrulayın (örneğin,
Application.onCreate()veyaAppDelegate.didFinishLaunchingWithOptionsiçinde) - URL veya eylem kimliğinin yönlendirme mantığınızın beklediğiyle eşleştiğini kontrol edin
- iOS’ta, Launch URL’leri bastırmadan
url’ye güvenmediğinizi onaylayın — tarayıcı, dinleyiciniz tetiklenmeden önce bağlantıyı tüketebilir
SSS
Uygulama yüklü değilse ne olur?
Universal Links (iOS) ile URL, normal bir web sayfası olarak Safari’de açılır. App Links (Android) ile URL, varsayılan tarayıcıda açılır. Her iki durumda da, web sayfanızı uygun uygulama mağazasına yönlendirecek şekilde yapılandırabilirsiniz. Özel URI şemaları (myapp://), uygulama yüklü değilse sessizce başarısız olur veya hata gösterir.
Deep linking için Launch URL mi yoksa Ek Veri mi kullanmalıyım?
Ek Veri (data), tıklama dinleyicisi aracılığıyla gezinme üzerinde tam kontrol sağladığı için mobil deep link’ler için önerilir. Launch URL (url) daha basittir ancak iOS’ta sınırlamaları vardır (tarayıcı yönlendirmesi) ve özel yönlendirme mantığına izin vermez.
Deep link’leri kullanıcı verileriyle kişiselleştirebilir miyim?
Evet. Deep link URL’lerinize kullanıcı özellikleri, etiketler veya özel veriler eklemek için Liquid söz dizimiyle Dinamik URL’leri kullanın. Örneğin:https://yourdomain.com/profile/{{subscription.external_id}}.
Özel URI şemalarıyla deep link kullanabilir miyim?
Evet. Özel şemanızı (örneğin,myapp://screen) Launch URL veya Ek Veri değeri olarak ayarlayın. Özel şemalar push ve uygulama içi mesajlar için iyi çalışır ancak e-posta istemcilerinde çalışmayabilir. Ayrıca uygulama yüklü değilse yedek davranış sağlamaz.
Deep link’ler OneSignal Journeys ile çalışır mı?
Evet. Bir Journey’de bir mesaj adımı yapılandırırken, Launch URL’yi veya Ek Veriyi deep link’inize ayarlayın. Davranış, bağımsız bir push veya uygulama içi mesajla aynıdır.URL'ler, bağlantılar ve deep link'ler
Launch URL’ler, UTM parametreleri, dinamik URL’ler ve bağlantı takibi yapılandırması.
Mobil SDK referansı
Tıklama dinleyicileri ve bildirim olay işleme için tam API referansı.
Uygulama İçi Tıklama Eylemleri
Uygulama içi mesaj butonları ve öğeleri için tıklama eylemlerini yapılandırın.
Mobil push kurulumu
Android ve iOS için platforma özgü push bildirimi kurulumu.