Deep Links — Android (Ama baya deeep😁)

Gökmen Bayram
2 min readAug 20, 2021

Herkese merhaba,

Bir link‘e tıklarsınız ve karşınıza “Hacı bak bu gitmek istediğin link’in telefonunda App’i var onda açayım mı? Ne dersin?” sorusu çıkar ya işte basit olarak Deep Link’i böyle açıklayabiliriz.🙃

Siz bir bağlantıya tıkladığınızda veya programatik olarak bir web URI çağırdığınızda, Android işletim sistemi request başarılı olana kadar aşağıdaki üç eylemi sırayla dener:

1- ) Eğer belirlenmişse, URI’yi işleyebilen kullanıcının tercih ettiği uygulamayı açın. ( Daha önce tıkladığında URI şununla aç dediyseniz.)

2- ) URI’yi işleyebilecek tek mevcut uygulamayı açın. ( Tıkladığın URI telefonda app’i bulunmuyorsa.)

3- ) Kullanıcıya bir dialog’ta uygulama seçmesine izin verin. ( Browser’da mı ya da uygulama da mı açayım…)

Yukarıdaki üç denemeden sonra işletim sistemi kararını verip yoluna devam eder. Peki bunu Android uygulamalarımızın içine nasıl entegre ederiz? Haydi başlayalım.

  • AndroidManifest.xml

Deep Link için önce AndroidManifest.xml dosyasına birtakım eklemeler yapacağız.

İlgili Activity’nizin içinde bir <intent-filter> oluşturmalısınız.

ACTION_VIEW: Google Arama’dan erişebilmesi, DEFAULT: örtük amaçlara yanıt vermesi, BROWSABLE: bir web tarayıcısından erişebilmesi için bu alanları ekliyoruz.

<data> Yönlendirme yapmak istediğiniz sitenin bilgilerini burada giriyorsunuz. Yani kullanıcı https://www.example.com/search dediği an Android size bu linki App’te açayım mı hacı? diyecektir.

Farklı data’lar oluşturarak farklı URI’ler yakalayabilirsiniz. Bu sizin senaryonuza kalmış bir durum tabi. 😊

  • Peki geldiğimiz link’i app içerisinde nasıl yakalayacağız?

Deep Link oluşturduğunuz Activity içerisinde (yukarıda MainActivity olarak göstermiştik.) orada intent içerisinden alabilirsiniz. İlgili linkten query’i parse ederek gerekli search işlemini gerçekleştirebilirsiniz. :)

Yukarıdaki anlattıklarımın hepsini tamamladıktan sonra web sitesi ile uygulamamızı eşleştirmeliyiz. Bunun için Digital Asset Links JSON dosyasımızı aşağıdaki yere ekliyoruz.

https://domain.name/.well-known/assetlinks.json

Digital Asset Links JSON’ı aşağıdaki linkten oluşturabilirsiniz.(Ayrıca Android Studio içerisinde Tools -> App Links Assistant oluşturabilirsiniz.)

  • Bazı Deep Notlar

Uygulamanızda Single Activity kullanıyorsanız intent ile alakalı muhtemel hatalarla karşılaşabilirsiniz. (Mesela intent.data deyip data’yı almak istersin sürekli null gelir ve kısa bir hayatı sorgularsın.🥲) Böyle bir hatayla karşılaşırsanız aşağıda bırakacağım stackoverflow linklerini inceleyebilirsiniz.

Bir sonraki yazıda görüşmek üzere! :)

--

--