SFSafariViewController Kullanımı

Merhabalar Arkadaşlar, bugünkü yazımda sizlere iOS uygulamalarınızda kullanabileceğiniz Safari Servisin araçlarından biri olan SFSafariViewController nasıl kullanılır ondan bahsedeceğim. Hazırsanız vakit kaybetmeden yazımıza geçelim 🙂

iOS projelerinizde basit bir şekilde webten bir sayfa çağırmak için devasa kodlar yazmamıza gerek yok. Genel tabiriyle “WebView” kullanarak bir siteyi iPhone cihazlarımızda rahatlıkla gösterebiliriz.

iOS uygulamalar 3 farklı şekilde linkleri ekranda gösterebiliriz.

  • Direkt linke yönlendirilerek kullanmak
  • UIWebView kullanmak
  • SFSafariViewController kullanmak

MainStoryboard dosyasında tool kısmına web yazınca uygulamada kullanabileceğimiz iki seçenek çıkıyor. Web View eskiden aktif olarak kullanılıyordu daha sonra Apple onu deprecated olduğunu açıkladı. Aktif olarak WebKit View aracı kullanılıyor.

Bende daha önceden direkt linke yönlenerek ve WebKit View kullanarak uygulamamda bir linki açmıştım. Daha sonra SFSafariViewController yapısını duyunca denemek istedim. Hoşumada gitti. Sizlerede öneririm 🙂


SFSafariViewController Nedir?

  • iOS uygulamalarda uygulama içerisinde web görüntüleme işlemlerini güvenli ve hızlı bir şekilde gerçekleştirebileceğiniz bir sınıftır.
  • SFSafariViewControllerSafariServices framework’ünün bir sınıfıdır.
  • SFSafariViewController sınıfının diğer kullanımlara göre beli başlı avantajları bulunmaktadır. Bu yapı kullanıldığında uygulama içerisinden çıkmadan, herhangi bir yönlendirme işlemi olmadan kullanıcıya istenilen linkin içeriğini gösterebilirsiniz. Kullanıcılar bu tip olayları beğenmektedir. Uygulama içerisinden başka bir uygulamaya geçmek onları rahatsız etmektedir. Bu olayı onlara sezdirmeden gerçekleştirmek için SFSafariViewController çok güzel bir yapıdır.
  • SFSafariViewController sınıfını kullanırsanız adından da anlaşılacağı üzre Safari tarayıcısının özelliklerini kullanmanızı sağlar.

SFSafariViewController sınıfını tanıdıktan sonra öğrendiklerimizi haydi koda dökelim 🙂

import SafariServices

SafariServices framework’ünün bir sınıfını kullanacağımız için projemizde import ediyoruz.

func openBrowser(){
        if let url = URL(string: "https://www.apple.com/") {
            let config = SFSafariViewController.Configuration()
            config.entersReaderIfAvailable = false
            let vc = SFSafariViewController(url: url, configuration: config)
            present(vc, animated: true)
        }
    }

openBrowser() adında bir fonksiyon oluşturuyoruz. Fonksiyonun içerisinde gerekli işlemleri yapıyoruz. Gideceğimiz linkin urlini veriyoruz. SFSafariViewController sınıfını yapılandırıyoruz. entersReaderIfAvailable özelliğini false olarak ayarladık. Bu özelliği kısaca şu şekilde açıklayabiliriz: “Reader modu istenir ve linkte mevcutsa, belirtilen URL’i yükleyecek Safari ekranını açar ve Reader moduna girer.”Sonra uygulama ekranında göstermek için fonksiyona url ve config değerini verdik. Son olarak present diyerek işlemimizi tamamladık.

// viewDidLoad() fonksiyonundan sonra çalışan fonksiyon
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        openBrowser() // fonksiyonun çağırılması   
    }

Bu fonksiyonu viewDidAppear() fonksiyonunda çalıştıracağız. Onun için oraya yazıyoruz. viewDidAppear fonksiyonu, UIViewController gösterildikten sonra çağrılır. Detaylı bilgi için UIViewController Yaşam Döngüsü adlı blog yazısına aşağıdaki linkten erişebilirsiniz : 

UViewController Life Cycle

Kod tarafında işimiz bitti son olarak web işlemlerinde güvenliğin sağlanması için Apple bizlere Info.plist adlı dosyaya aşağıdaki kod satırını eklememiz gerekir. Yoksa ekranımız bomboş bir şekilde gelir. Sakın unutmayalım ekleyelim kod satırını 🙂

Gerekli tüm işlemleri yaptığımıza göre artık deneyimle zamanı 🙂


Sizlerde verdiğiniz linkleri ekranda görebiliyorsanız bu işlemi başarıyla tamamlamış oldunuz 🙂

Aşağıdaki linkten projenin tamamına erişebilirsiniz :

SFSafariViewController

Bir sonraki yazıda görüşürüz. Kendinize iyi davranın 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir