Swift'de URLSession Network İşlemleri

Merhaba, ben Gökhan ve okumaya başladığın yazı benim mobiler.dev için ilk yazım olacak :) Üniversitesi son sınıf öğrencisiyim ve bir süredir Swift ile iOS development yapıyorum. Bugün sizlere URLSession ile nasıl kolayca network işlemleri yapabileceğinizi örnekler vererek anlatmaya çalışacağım. 




URLSession Nedir?


Bazen iOS geliştiriciler, network işlemleri için Alamofire ve URLSession arasında, seçim yapma konusunda kararsız kalabilirler. Eğer siz de bu karar konusunda zorluk yaşıyorsanız, bu konuda size yardımcı olacak Alamofire vs URLSession: a comparison for networking in Swift makalesini okumanızı tavsiye ediyorum. Ben herhangi bir üçüncü parti bağlılık olmasını istemediğim için network işlemleri URLSession kütüphanesini kullanarak yapacağım.

Randog Arayuz

Bu yazı sürecinde URLSession kullanarak yapılacak network işlemlerini örnekler vererek anlatmak için küçük bir uygulama yapacağız. Bu uygulama Dog API kullanarak, "Rastgele Fotograf" butonuna her tıklandığında ilgili bağlantı adresine network isteği atacak ve isteğimizin sonucunda Dog API'dan gelen rastgele bir kopek görselini ekranda görmemizi sağlayacak. Bu uygulamanın son halini RanDog github resposunda bulabilirsiniz.


Öncelikle URLSession türlerini biraz daha yakından tanıyarak başlayalım. URLSession kütüphanesinde network istekleri “task” olarak adlandırılıyor ve bunlar da aralarında yaptıkları isteklerin türüne göre üç ayrı method olarak karşımıza çıkıyor.


Network istek türleri


Bizim de RanDog uygulamasında kullanacağımız DataTask, atacağımız network isteklerininin cevabını “Data” türünde almamızı sağlıyor. Böylelikle alacağımız veriyi “decode” işleminden geçirerek istediğimiz veri türünde kullanmamıza olanak veriyor. 


DownloadTask ise bir veriyi sunucu tarafından sunulan doysa türü ile almamızı sağlıyor. Aynı zamanda DownloadTask, uygulamamız çalışmasa dahi arka planda veri alma işlemine devam edebilmemizi sağlıyor.


Bunların yanısıra sunucuya veri yükleme işlemlerini DataTask’e çok benzeyen UploadTask ile gerçekleştiriyoruz. UploadTask, sunucuya belirli bir dosya formatında veri göndermemize ve bu işlemi uygulama çalışmasa dahi arkaplanda yapabilmemize olanak veriyor.


Entegrasyon