Swift Deep Linking - URL Scheme

Swift Deep Linking


Deep Linking bu günlerde uygulamalarda çok önemli hale gelmektedir. Başka bir uygulamadan veya web sitesinden uygulamamıza deep link oluşturabiliriz. Kullanıcı telefonunda uygulamamız yüklü ise web'te tıkladığı linke deep link ekleyerek linke tıklama durumunda telefonda uygulamanın açılmasını sağlayabiliriz.


Özel URL Şema ile Deep Linking

URL şema, tanımladığınız bir protokol aracılığıyla diğer uygulamalarla iletişim kurmamıza olanak sağlar. Böyle bir düzeni uygulayan bir uygulamayla iletişim kurmak için uygun biçimlendirilmiş bir URL oluşturmamız ve sistemden açmasını istememiz gerekir.

Normal bir URL "https://" olarak başlar. Fakat biz kendi URL'imizi oluşturacağımız için "ack://" ile başlamasını istiyoruz.  Tabi ki bu URL'in benzersiz olması önemlidir.

Kendi özel URL şemasına sahip bir uygulama, kendisine iletilen URL’leri işleyebilmelidir. Tüm URL'ler, uygulamamız açılırken, uygulamamız çalışırken veya arka planda çalışırken app delegate'e iletilir. Gelen URL’leri ele almak için app delegate aşağıdaki yöntemleri kullanması gerekir.

Örnek:
https://atakancengizkurt.com/hakkimda

protokol: https  (şema adı)
host: atakancengizkurt.com  (ana bilgisayar adı)
path: /hakkimda  (iç yol)

Normal bir bağlantı ismi bu şekildedir fakat biz deeplink için kendi URL düzenimizi oluşturuyoruz. Sonuç olarak URL düzeni;

ack://atakancengizkurt.com/hakkimda

Şema ismimizi "ack" olarak belirledim.
Şimdi uygulamamız içinde tanımlamaları yapalım.


info.plist Dosyasının Düzenlenmesi

İlk adım olarak info.plist dosyamızı Source Code olarak açarak (info.plist sağ tıklanıp Open As -> Source Code) aşağıdaki özellikleri taglarıyla birlikte ekleyin.


ya da;

info.plist içine doğrudan ekleme yapabilirsiniz.



Burada eklediğimiz CFBundleURLName uygulamamızın benzersiz Bundle identifier'ıdır.


AppDelegate.swift Dosyasının Düzenlenmesi

Uygulamamızın özel URL şema tıklamalarını dinleyebilmesi için, AppDelegate.swift dosyanıza aşağıdaki işlevi eklemeniz gerekir. Bu işlev UIApplicationDelegate protokolünün bir parçasıdır.

Deep Linking olması için kullanıcı mobil tarayıcıda aşağıdaki linke tıklamalıdır ya da adres çubuğuna link adresini yazmış olmalıdır.

<a href= "ack://atakancengizkurt.com/hakkimda"> Uygulamaya geçmek için burayı tıklayın </a>



iOS 13 ve üzeri SceneDelegate.swift Dosyasının Düzenlenmesi


iOS 13 URLScheme




Deep Linking'i Test Etme

Deep link'in çalıştığından emin olmak için linkleri bir web sitesine yerleştirin veya Safari'de adres çubuğuna adresi yazın.

İlk önce uygulamayı Simulator'da ya da cihazda çalıştırın, uygulamamızda sadece ana ekranı göreceksiniz, artık uygulama başlatıldı ve URL'yi kullanmaya hazır.

Ardından, telefonun Home düğmesine veya Simülatör Hardware> Home seçeneğine basın . Sizi uygulamanın dışına çıkaracak. Safari’yi başlatın ve bu URL’yi girin:

ack://atakancengizkurt.com/hakkimda




Uygulamamızın Yüklü Olup Olmadığını Algılama

Aşağıda, kullanıcıda uygulamanızın yüklü olup olmadığını belirlemek için web sitenize ekleyebileceğiniz bir JavaScript bulunmaktadır. Aksi takdirde, uygulamanızı indirmek için kullanıcıyı App Store'a yönlendirebilirsiniz. Uygulama varsa, doğrudan uygulamanıza Deep Linking yapabilirsiniz.


<script type="text/javascript">
function startMyApp()
{
  document.location = 'ack://atakancengizkurt/hakkimda';
  setTimeout( function()
  {
      if( confirm( 'Uygulama yüklü değil, şimdi yüklemek ister misiniz?'))
      {
        document.location = 'https://itunes.apple.com/app/.....';
      }
  }, 300);
 }
</script>

<a href="#" onclick="startMyApp()">


Hiç yorum yok:

Yorum Gönder

Yorumunuz için teşekkür ederim.