iOS Universal Link Entegrasyonu

Merhabalar, bu mobi'de sizlere Universal Link'in ne olduğundan, nasıl entegre edileceğinden ve çalışma mantığından bahsedeceğim.


İlk olarak iOS Universal Link nedir kısa bir giriş yapalım. Universal Link, domainimize ait bir linke tıklanıldığında, ilgili linkin uygulamanızı açmasını sağlayan linking yöntemidir. Eğer uygulamanız cihazda yüklü değil ise link safaride açılır.


Özetle Universal Link ile hem app to app adresleme yapabilirsiniz hem de mobil browserda açılan websitelerinden uygulamanıza web to app adresleme yapabilirsiniz. (Uygulamanızın app den ya da browserdan açılması).


Kullanıcı cihazında uygulama yüklü değil ise hazırlamış olduğunuz web sitesini açarak kullanıcıyı uygulamanızı indirmeye de yönlendirebilirsiniz.


Ya da ilgili domain linki web sitesinde bir content sayfası açıyor ise, aynı linki universal link tanımlayıp mobil uygulamanızda da ilgili content sayfası açılabilir. Ancak bu durum pek tercih edilmiyor. Çünkü kullanıcı uygulamayı indirdiği senaryoda hiç bir zaman websitesini browserdan açamaz uygulamanıza yönlenebilir (link için default açılış şekli app seçiliyse).


Bunun yerine web sitesinde kullanılmayan bir kök domain belirlemek daha doğrudur. Bu url'e geçilecek parametrelerle mobil de açılacak sayfaları custom şekilde yönetebilirsiniz.


IOS 9 ve sonrasında Universal Link'i kullanabilirsiniz.


Universal Link kurulumu


Universal Link'i entegre edebilmeniz için ücretli bir Apple Developer hesabınızın olması gerekmektedir. Kurulumu 4 adımda ele alacağız.


1. Uygulamaya konfigurasyonu


Uygulamanıza eklemek için proje target'ınızı seçip Signing&Capabilities kısmından + Capability ' den Associated Domains'i seçiniz.



Signing&Capabilities bölümünde alt kısma Associated Domains kısmının eklendiğini göreceksiniz. Buradan + ' ya tıklayarak yeni associated domain oluşturuyoruz. Aşağıdaki görselde görüldüğü gibi applinks prefix'i ile birlikte kendi domain'inizi eklemeniz gerekmektedir.


                "applinks:yourdomain.com"

Buraya kadar olan kısım ile ilk adımı tamamlamış bulunmaktayız. Artık uygulamanız yüklendiğinde işletim sistemi domain url'inizi biliyor olacak.



2. Domain altına app-site-association dosyası ekleme


Bu adımda domain altına app-site-association dosyasını ekleyeceğiz. Bunun için öncelikle apple-app-site-association dosyası oluşturmamız gerekmektedir. Bu dosya IOS 8'den itibaren web credentials ve Handoff için kullanılan dosya ile aynıdır. Bu dosya JSON formatındadır ancak .json uzantısı içermez.


apple-app-site-association dosyasını oluşturmak için aşağıdaki adımları takip edebilirsiniz.


  • Terminali açın

  • Uygulama dizininizin dışında olduğu sürece istediğiniz bir yere "touch apple-app-site-association" komutu ile dosyayı oluşturun.



  • Ben dosyayı düzenlemek için Visual Studio Code'da açtım fakat istediğiniz şekilde açabilirsiniz.



  • Dosyayı açtıktan sonra aşağıdaki içeriği ekleyin ve kaydedin.


{
  "applinks": {
    "apps": [],
    "details": [
    {
      "appID": "LZD85Q5WB3.com.mobilerdev.universalLink",
      "paths": ["/deneme/*"]
    }
    ]
  }
}

Bu adımlar ile association dosyasını oluşturmuş olduk. Şimdi yukarıdaki eklediğimiz içeriği biraz inceleyelim.


  • Applinks etiketi ile kök domaine ilişkilendirilecek uygulamalar belirlenir.

  • Apps: Boş bir array olarak bırakılabilir.

  • Details: Domaininiz tarafından desteklenen her uygulamanın appID ve url bilgisini içermelidir.

  • AppID: Apple developer account 'da gördüğünüz Team ID ve uygulamanızın Bundle ID birleşiminden oluşur.

  • Paths: Bu alan ile domain 'e ait hangi path 'ler ile uygulamanızın açılacağı belirlenir.


Eğer domaininizin tüm path 'lerinden uygulamanızın açılmasını istiyorsanız ["*"] şeklinde tanımlayabilirsiniz. Spesifik bir path ile açılmasını istiyorsanız ["/subPathName"] şeklinde tanımlayabilirsiniz. Bu şekilde "yourdomain.com/subPathName" içeren linkler ile uygulamanızı tetikleyebilirsiniz.


apple-app-site-association dosyasını oluşturduğumuza ve anladığımıza göre bu dosyayı web sunucunuza yüklemeniz gerekmektedir. Dosyayı yükledikten sonra "yourdomain.com/apple-app-site-association" bağlantısı ile dosyamızı browser ile açıp kontrol edebilirsiniz. Dosyanın içeriğinin browser'da düzgün şekilde görüntülenebilmesi gerekiyor.



3. Uygulama entegrasyonu


Kullanıcı uygulamayı kurduktan sonra hazırlamış olduğunuz universal link'e bir şekilde tıklarsa uygulamanızın açılmayacağını görürsünüz. Bunun nedeni ios işletim sisteminin henüz uygulamanız ile universal link'i ilişkilendirmemiş olmasıdır.


Peki işletim sistemi ilgili linke tıklandığında sizin uygulamanızı açacağını nasıl bilecek ? Bunun için yüklenen uygulamanın bir kere manuel şekilde kullanıcı tarafından açılması gerekiyor. İlk uygulama açılışında işletim sistemi association-domains url'lerini öğreniyor.


Ardından kullanıcı bir şekilde url'e tıkladığında, işletim sistemi bu url'in herhangi bir uygulamanın universal linki olup olmadığını kontrol ediyor elindeki listeyle. Eğer bu url'i kullanan bir uygulama yüklüyse, ilgili apple-app-site-association dosyasına gidip appID değeriyle yüklü uygulamanın appID değerini karşılaştırıyor. Bu değerler eşitse uygulama açılıyor.


Bu eskiden kullanılan external url yöntemine göre ek bir güvenlik sağlıyor. Universal link'in en büyük avantajlarından biri bu.


Uygulama link ile açıldığında AppDelegate'in UIApplicationDelegate protokolünün aşağıdaki contunie userActivity metodu tetiklenir.


 func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool 

4. Universal Link'in parametreli açılması


Kullanıcı Universal bir linke tıkladığında işletim sistemi uygulamanızı başlatır ve ona bir userActivity nesnesi gönderir.


Öncelikle userActivity'nin beklenen tipte olup olmadığı kontrol edilir. Components üzerinden URL bileşenleri elde edilir. Artık bileşenler de elinizde olduğuna göre spesifik bir parametreye ulaşıp, spesifik bir yönlendirme yapabilir veya farklı bir aksiyon aldırabilirsiniz.



Mesela yukarıda örnekteki gibi 'albumname' parametresi elde ettikten sonra o parametreye ait detayları içeren bir detay sayfasına yönlendirme yapılabilir. Url'iniz ile aşağıdaki şekilde parametre geçebilirsiniz.


yourdomain.com/subPathName?albumname=XXX

ya da

yourdomain.com?albumname=XXX


Github: https://github.com/mineOz/UniversalLink


Kaynaklar:


#iOS #UniversalLink #deeplink

0 yorum

Komünite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_düzenlendi_düzenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
imageedit_2_9667998092.png
JetBrains Hakkında Detaylı Bilgi Alın

© 2020 by mobiler.dev

Kurumsal Yazar Hesapları

adesso.png
mobilerdevLogo.jpg
Yazarlık Başvurusu Hakkında Bilgi Alın, Başvuru Yapın.
Topluluk Yazarlarını Tanıyın