Deep Linking (Derin Bağlantı) Nedir?

Arama motorlarının bir web sayfasına ulaşması ve ilgili arama motoru sorgularında sunabilmesi için erişimler en temel anlamda URL’ler aracılığıyla gerçekleştirilir.

AA

Web sayfalarında anlamlı URL’ler pek çok içerik yönetim sistemi tarafından geçerli bir şekilde sağlanabilmektedir. Ancak, söz konusu web uygulamaları (web app) veya mobile app olduğunda işlemler değişkenlik gösterebilmekte. Özellikle mobil cihazların günlük alışkanlıkların önemli bir parçası haline geldiği günümüzde pek çok servise mobil öncelikli (mobile-first) olarak erişilebildiğini düşünürsek hem arama motorları hem de kullanıcı deneyimi açısından uygulama erişimlerinin daha planlı bir şekilde organize edilmesi gerekecektir. Bu organizasyonun en temelinde de deep linkin (derin bağlantı) yer almaktadır. Ancak öncesinde App Indexing kavramına da kısaca değinmekte fayda var.

App Indexing

Bildiğimiz üzere mobil uygulamalar web sayfalarına göre daha farklı bir işleyişe sahiptirler ve içeriklere dışarıdan kolaylıkla ulaşmak mümkün olmamaktadır. Bu hem kullanıcılar hem de arama motorları tarafından sınırlandırıcı bir durumdur. Bu vesile ile deep linking ve app indexing gibi çözümler kullanıma sunulmuştur. App indexing, uygulama içeriğinin Google tarafından index’lenip arama sonuçlarında yer bulmasını sağlayan bir sistem. Kullanıcı ilgili aramayı yaptıktan sonra uygulama içeriği Google arama sonuçlarında yer bulmuşsa ve kullanıcı bu bağlantıyı tıklamışsa uygulama arama yapılan cihazda aranır. Uygulama yüklü ise uygulamanın kendisi cevap verecek ve ilgili içerik / screen görüntülenecektir. Şayet, uygulama yüklü değilse kullanıcı uygulamaya ait Google Play Store veya App Store’daki uygulama sayfasına yönlendirecektir. Bu sayede, mobil uygulama içeriği doğru bir şekilde dizine eklendiyse mobil uygulama indirme ve ilgili içeriğin görüntülenme oranında artış elde edilebilir. Gelelim bu bağlantı biçimiyle (deep linkin) ilgili detaylara.

Deep Linking (Derin Bağlantı)

Deep linking, kullanıcının hedeflenen içeriğe doğrudan yönlendirilmesi olarak ifade edilebilir. Bu işlem için genel olarak URL’lerden faydalanırız. Ancak, dikkat edilmesi gereken konu ilgili URL’in doğrudan belirtilen içeriği hedef alması gerekliliğidir. Örneğin, alanadi.com şeklindeki bir URL tanımı deep link olarak ifade edilemez. Başarılı bir deep link alanadi.com/directory/page-path gibi hedeflenen içeriğe ait parametreleri barındırıyor olmalıdır. Bu örnekler elbette web sayfaları için geçerli. Söz konusu mobil ve/veya mobil uygulamalar olduğunda takip edilmesi gereken adımlar farklılık göstermektedir.

Web Sayfası ve Uygulamalarında Deep Linking (Web Deep Linking)

Giriş paragrafında da belirttiğim üzere, bir alan adı altındaki bir sayfayı spesifik detaylarla kolaylıkla işaretleyebilmekte ve hem arama motorları için erişilebilir hem de kullanıcılar tarafından paylaşılabilir hale getirebilmekteyiz. Bunun için internet tarayıcısının adres barındaki URL bizim için yeterli olacaktır. Web uygulamalarında da eğer içerikler URL eşleştirme / yönlendirme aracılığıyla görüntüleniyorsa web sayfalarına benzer şekilde erişilebilirler. Ancak, mobil uygulamalar web sayfalarından farklı bir işleyiş biçimine sahiptirler.

Mobil Uygulamalarda Derin Bağlantı (Mobile Deep Linking)

Mobil uygulamalarda deep linking, uygulamayı başlatmak yerine mobil uygulama içerisinde yer alan bir screen’i (içerikler, işlemler vb.) işaret eden bir URI (Uniform Resource Identifier) ile ifade edilebilir. Mobil cihaz platformuna bağlı olarak, uygulamayı tetiklemek için gereken URI farklılık gösterebilir. Eğer bir uygulama içerisindeki bir içeriği bir başka kullanıcıyla paylaşmak isterseniz ihtiyacınız olan ilgili içeriğe ait bir derin bağlantı olacaktır. Aksi durumda, kullanıcı ilgili uygulamayı uygulama marketinde aratmalı, bulup indirmeli ve ilgili içeriğe uygulama içerisinden ulaşmaya çalışmalıdır. Elbette bu kullanıcı deneyimi açısından oldukça sorunlu bir yaklaşım olacaktır. Mobil uygulamalar (mobile app) aracılığıyla ele alacağımız derin bağlantıları özelliklerine göre 3 başlık altında değerlendirebiliriz.

Standart / Geleneksel Derin Bağlantılar (Standard / Traditional Deep Linking)

Standart derin bağlantılarda (standard/traditional deep linking), myapp://path/to/content?query_string (Örn. Twitterapp://page) şeklinde uygulamaya ait URI Schemes kullanılır. Bu bağlantı türünde ilgili uygulamanın URI’i görüntüleyecek mobil cihazda yüklü olması gerekmektedir. Çünkü, bir kullanıcı ilgili bağlantıyı tıkladığında, cihaz uygulama içeriğini URL şeması tarafından sağlanan adreste arayacaktır. Uygulama cihazda bulunamazsa veya uygulama yüklenmezse, telefon ilgili içeriği bulamaz ve hata döndürür.

Gecikmeli Derin Bağlantılar (Deferred Deep Linking)

Gecikmeli derin bağlantılar (deferred deep linking), web bağlantılarıyla benzer özelliklere sahiptir. Ancak, uygulamanın bağlantıyı görüntülemek isteyen cihazda yüklü olup olmamasına göre işlem gerçekleştirirler. İlgili uygulama mobil cihazda yüklü ise doğrudan içerik görüntülenecektir. Aksi durumda ise, uygulamanın yüklenebilmesi için uygulama marketindeki (Google Play Store veya App Store) ilgili sayfa görüntülenir ve uygulamanın yüklenmesinin ardından doğrudan içerik kullanıcıya sunulur. Şayet uygulama indirilmezse herhangi bir sonuç görüntülenmez.

Bağlamsal Derin Bağlantılar (Contextual Deep Linking)

Bağlamsal derin bağlantılar (contextual deep linking), standart ve gecikmeli derin bağlantılar tarafından sağlanan özelliklere ek daha pek çok tanımlayıcı (kaynak, oluşturan vb.) ve özelleştirilebilir (mesajlar, etkinlikler vb.) özellik sunar. Son olarak bir de App Streaming‘e değinmekte fayda var.

App Streaming

App Indexing sonucunda veya doğrudan bir deep linking paylaşımında ilgili bağlantının mobil cihazda uygulama üzerinden paylaşıldığını belirtmiştim. Ancak, kullanıcılar her zaman uygulama yüklemeyi tercih etmeyebiliyorlar. Bu tür durumlara karşın farklı çözümler değerlendirilebilmekte. Bunlar App Streaming ve Progressive Web Apps. App Streaming, deep link üzerinden ulaşılan mobil uygulama içeriğinin uygulamanın yüklenmesine gerek olmadan görüntülenmesini sağlayan bir sistem. Bu işlem için kullanıcının arama sonudunda yer alan Try Now (Şimdi Dene) seçeneği tıklaması yeterli. Ardından, ilgili içerik sınırlı olarak kullanıcıya sunulmakta ve kullanıcı isterse uygulamayı indirebilmekte. Progressive Web Apps ile ilgili daha önce geniş bir açıklama yazısı yayınladığım için ayrıca detaylarına girmeyeceğim. Ancak, bir özet geçmek gerekirse, browser yetenekleri kullanılarak bir web uygulamasının mobil veya desktop uygulama yetenekleri sunabilmesi diyebiliriz. Dolayısıyla, PWA sayesinde, bir bağlantı tıklandığında mobilde de masaüstünde de aynı kullanıcı deneyimini ziyaretçilerinize sunabilirsiniz.

Uygulamayı Google Dizinine Kaydedilmesi

Yukarıda çeşitli teknik terimleri ve bu terimlerin işlevsel karşılıkları açıklamaya çalıştım. Peki, uygulama sürecinde bu bilgilerden nasıl faydalanabilir ve mobil uygulamamızın Google tarafından index’lenmesini sağlayabiliriz? Öncelikle belirtmekte fayda var. Şu anda bahsedeceğim işlemler Google Search Console ile ilişkili adımlar barındırmakta ve bu adımlar maalesef güncel olarak iOS App’ler için geçerli değil. iOS için CocoaPods1 üzerinden işlemlerin gerçekleştirilmesi gerekmekte. İlk adımımız uygulamanın deep linking özelliğinin aktif hale getirilmesi. Ardından, uygulamayı Google Search Console’a ekleyebilir ve oluşturduğumuz sayfaları test edebiliriz. Bu aşamada uygulamayı bir web sayfası ile ilişkilendirmemiz gerekiyor. Uygulamanın ve web sayfasının tıpkı normal bir web sayfası yönetiminde olduğu gibi hangi sayfalarının/screen’lerin index’leneceğine karar verebilmekteyiz.

Android

URI scheme bir internet tarayıcısıyla ilişkili olarak geleneksel http:// bağlantı yapısını kullanmakta. Bu özelleştirilmiş bağlantı, uygulamanın başlatılabilmesi için bir JavaScript yönlendirme işlemini barındırmakta ve bu sayede tarayıcı ilgili uygulamanın çalışmasını sağlamakta. Fakat, uygulamanın yüklü olmadığı durumlarda ise yine ilgili JavaScript snippet kullanıcıyı App Store veya Play Store’a yönlendirmekte. URI scheme yapısı Android’de birincil yaklaşım olsa da Apple 2015 yılında duyurduğu Universal Links ile birlikte bu yaklaşımı iOS işletim sistemli cihazlarda engellemeye başlamıştır.

iOS

iOS 9 itibariyle Apple Universal Links olarak nitelendirdiği bağlantı yapısını çözüm olarak sunmakta. Bu sayede bir web sayfasını ve bir mobil uygulama içerisindeki içeriği işaret eden web bağlantılarını http://… işaret edebilmekteyiz. Bir Universal Link tıklandığında iOS ilgili bir mobil uygulamanın cihazda yüklü olup olmadığını kontrol eder ve eğer yüklü değilse web URL’ini Safari üzerinden App Store açılacak şekilde açar. Bu işlemlerle (Public content indexing, Personal content indexing ve Log user actions) ilgili olarak Firebase App Indexing2 sayfasından teknik açıklamalara ulaşılabilir. Son olarak, Android ve iOS dışında Facebook App Links için de bir kaç açıklama yapmakta fayda var.

Facebook App Links

Facebook 2014 yılında URI sheme derin bağlantılarının sınırlandırmalarını açık bir standart olarak 2 ana bileşen üzerinden çözüme kavuşturdu.

Meta etiketleri ile (content metadata3) web sayfası üzerinden karşılık gelen uygulama içi hedefin ve uygulama yüklü değilse gerçekleştirilecek davranışın belirtilmesi,

<html>
    <head>
        <meta property="al:ios:url" content="applinks://docs" />
        <meta property="al:ios:app_store_id" content="12345" />
        <meta property="al:ios:app_name" content="App Links" />
        <meta property="al:android:url" content="applinks://docs" />
        <meta property="al:android:app_name" content="App Links" />
        <meta property="al:android:package" content="org.applinks" />
        <meta property="al:web:url" content="http://applinks.org/documentation" />
    </head>
    <body>
        Hello, world!
    </body>
</html>

Yönlendirme motoru ile uygulama içinde bağlantıların işlenmesi. Bu motor önce uygulama bağlantıları için hedef URL’i kontrol eder ve ardından ilgili uygulamayı başlatır ya da belirtilen bir geridönüş davranışını (fallback behavior) yürütür.

İleri Okumalar