URL Scheme: nedir, nasıl çalışır ve geliştirmede kullanımı

Yazar: IT Sectr Yayınlanma: 2026-05-14 Okuma süresi: 8 dk

URL Scheme — mobil uygulamanın işletim sisteminde kaydettiği, myapp://path gibi bağlantılar üzerinden açılmak için kullanılan özel bir URI protokolüdür. RFC 3986'ya göre, URI şeması adresin sonraki tüm bileşenlerinin sözdizimini ve anlamını tanımlar. Böyle bir bağlantıya gidildiğinde, sistem benzersiz tanımlayıcısına göre kayıtlı uygulamayı tanımlar ve bağlantıdan çıkarılan parametrelerle uygulamayı başlatır. URL Scheme tabanlı Derin bağlantı, daha modern alternatiflerin ortaya çıkmasına rağmen mobil platformlarda uygulamalar arası navigasyonun temel mekanizması olarak kalmaktadır.

Önemli Noktalar

  • URL Scheme — bir uygulamanın diğer uygulamalardan veya tarayıcıdan açılmak için kaydettiği myapp://path gibi özel bir bağlantı protokolüdür.
  • Sözdizimi, RFC 3986 standardına göre şema, ana bilgisayar, yol ve sorgu parametrelerini içerir ve uygulamalar arasında esnek veri aktarımı sağlar.
  • iOS, navigasyon parametreleriyle gelen URL Scheme'leri işlemek için Info.plist'te CFBundleURLTypes'ı ve AppDelegate temsilcisini kullanır.
  • Android, derin bağlantıları hedef Activity'ye yönlendirmek için AndroidManifest.xml'de action, category ve data belirten Intent Filter kullanır.
  • Sınırlama — URL Scheme, uygulama yüklü değilken çalışmaz; bu, iOS'ta Universal Links ve Android'de App Links ile çözülür.

URL Scheme Nedir?

URL Scheme — bir uygulamanın özel bağlantılar üzerinden çağrı almak için işletim sistemine kaydettiği benzersiz bir protokol tanımlayıcısıdır. Kullanıcı myapp://profile/123 gibi bir bağlantıya tıkladığında, sistem myapp şemasını kaydeden uygulamayı tanımlar ve tam URI ile kontrolü ona devreder. Bu mekanizma, uygulamaların sunucu altyapısı gerektirmeden veri alışverişi yapmasına ve birbirlerini açmasına olanak tanır.

URL Scheme kavramı doğrudan web standartları RFC 3986'dan alınmıştır; burada URI şeması, herhangi bir evrensel kaynak tanımlayıcısının ilk bileşenidir. Mobil geliştirmede bu fikir, uygulamalar arası iletişim için uyarlanmıştır; burada bir HTTP sunucusu yerine uygulamanın kendisi bağlantı işleyicisi olarak görev yapar.

Bilinen URL Scheme Örnekleri

Birçok popüler uygulama, üçüncü taraf hizmetlerle entegrasyon için kendi URL Scheme'lerini kaydeder. Örneğin, Spotify spotify:// şemasını kullanır, Telegram tg:// kullanır ve Instagram instagram:// kullanır. Geliştiriciler ayrıca dahili navigasyon ve uçtan uca ekran testleri için sık sık appname:// şeması oluşturur.

URL Scheme'ler, uygulamanın belirli bir bölümüne anında navigasyon gerektiren push bildirimlerinde, e-posta bültenlerinde ve QR kodlarında hala yaygın olarak kullanılmaktadır. Ancak iOS 9 ve Android 6'dan itibaren, basit şemaları kademeli olarak tamamlayan ve değiştiren alternatif mekanizmalar ortaya çıkmıştır.

URL Scheme Sözdizimi: Şema, Ana Bilgisayar ve Yol

Özel bir URI'nin yapısı genel RFC 3986 belirtimine uyar ve birkaç bileşenden oluşur. Şema önce belirtilir ve adresin geri kalanından iki nokta üst üste ile ayrılır. Şemadan sonra ana bilgisayar, bağlantı noktası, yol, sorgu parametreleri ve parça gelebilir ve bunların her biri isteğe bağlıdır.

Tam sözdizimi scheme://host/path?key=value#fragment şeklindedir. Şema tek zorunlu öğedir; geri kalanı belirli uygulamanın ihtiyaçlarına göre belirlenir. Şemadan sonraki çift eğik çizgi tarihsel olarak HTTP'den alınmıştır ve belirtime göre kesinlikle zorunlu değildir, ancak evrensel olarak bir kural olarak kullanılır.

URI Bileşenleri

URI yapısının görsel bir temsili için bir bileşen tablosu kullanılır. Her öğenin kendi amacı ve zorunluluk düzeyi vardır.

BileşenÖrnekZorunlu
SchememyappEvet
HostprofileHayır
Path/user/42Hayır
Query?id=42&tab=mainHayır
Fragment#section2Hayır

Geliştiriciler URI yapısını keyfi olarak seçebilir, bu esneklik sağlar ancak uygulamanın farklı sürümleri arasında uyumluluk sorunları yaratır. URL Scheme biçiminin uygulamanın genel API'sinin bir parçası olarak belgelenmesi ve değişikliklerde sürümlenmesi önerilir.

iOS'ta URL Scheme Nasıl Çalışır

iOS, projenin Info.plist dosyasında her URL Scheme'in açıkça kaydedilmesini gerektirir. Geliştirici, her öğesi bir tanımlayıcı (CFBundleURLName) ve desteklenen şemaların (CFBundleURLSchemes) bir listesini içeren bir CFBundleURLTypes dizisi ekler. Kayıttan sonra sistem, kayıtlı şemalardaki tüm gelen çağrıları otomatik olarak uygulamaya yönlendirir.

Gelen bir URL Scheme'in işlenmesi, uygulama temsilcisinde application(_:open:options:) yöntemi aracılığıyla gerçekleşir. Bu yöntem, navigasyon kararları almak için yol ve sorgu parametrelerinin çıkarıldığı bir URL nesnesi alır. İşleyici, işlemin başarısını belirten bir Bool değeri döndürmelidir.

AppDelegate'te İşleme

Aşağıda Swift dilinde bir URL Scheme işleyicisinin örnek bir uygulaması verilmiştir. Kod, URLComponents kullanarak gelen bir URI'den ana bilgisayar ve sorgu parametrelerinin çıkarılmasını göstermektedir.

swift
func application(
    _ app: UIApplication,
    open url: URL,
    options: [UIApplication.OpenURLOptionsKey: Any]
) -> Bool {
    let host = url.host
    let params = URLComponents(
        url: url,
        resolvingAgainstBaseURL: false
    )?.queryItems
    if host == "profile" {
        navigateToProfile(params)
    }
    return true
}

Yöntem, sorgu parametrelerinin güvenli bir şekilde ayrıştırılması için URLComponents kullanır. Bu yaklaşım, parametre değerlerindeki yüzde kodlamayı ve özel karakterlerin kod çözümünü otomatik olarak işlediği için manuel dize ayrıştırmasına tercih edilir.

Android'de URL Scheme Nasıl Çalışır

Android, URL Scheme tabanlı derin bağlantıları yönlendirmek için Intent Filter sistemini kullanır. Geliştirici, bağlantıyı işlemesi gereken Activity etiketi içinde AndroidManifest.xml'de bir filtre bildirir. Filtre, VIEW eylemini, BROWSABLE ve DEFAULT kategorilerini ve şemayı, ana bilgisayarı ve pathPrefix'i belirten bir data etiketi içerir.

Kullanıcı özel bir şemaya sahip bir bağlantıya tıkladığında, sistem yüklü tüm uygulamaların Intent Filter'ını kontrol eder. Birden fazla eşleşen uygulama bulunursa, kullanıcıya bir seçim iletişim kutusu sunulur. BROWSABLE kategorisi, bağlantının tarayıcıdan işlenmesine izin verir.

Intent Filter Yapılandırma

Bir Activity'de myapp şemasını işlemek için AndroidManifest.xml'de Intent Filter bildirimi örneği. Doğru derin bağlantı yönlendirmesi için action ve category kombinasyonu zorunludur.

xml
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category
            android:name="android.intent.category.DEFAULT" />
        <category
            android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="myapp"
            android:host="profile"
            android:pathPrefix="/user" />
    </intent-filter>
</activity>

Activity'de filtreyi yapılandırdıktan sonra, URI'yi almak için intent.getData() çağrılmalıdır. Intent ve verilerin null olup olmadığını kontrol etmek önemlidir, çünkü Activity gelen bir derin bağlantı olmadan başlatılabilir, örneğin başlatıcıdan standart başlatma sırasında.

URL Scheme ile Parametre Aktarımı

URL Scheme'de sorgu parametreleri, soru işaretinden sonra anahtar=değer biçiminde, ve işaretiyle ayrılarak iletilir. Bu biçim HTTP istekleriyle aynıdır ve platformun standart araçları tarafından kolayca işlenir. İzin verilen URI karakter kümesinde olmayan tüm karakterler için yüzde kodlaması kullanılarak parametreler kodlanmalıdır.

Parametreli tam bağlantı örneği: myapp://profile?userId=42&source=email&ref=abc123. URL çıkarıldıktan sonra, uygulama tüm sorgu öğelerini sırayla ayrıştırır ve değerlerine göre hedef ekrana navigasyon kararı alır.

URI Uzunluk Sınırı

Karmaşık veriler aktarılırken URI uzunluk sınırını dikkate almak önemlidir. iOS'ta maksimum URL Scheme uzunluğu 2 KB ile sınırlıdır, bundan sonra sistem bağlantıyı keser. Android'de sınır yaklaşık 8 KB'dir, ancak kesin değer işletim sistemi sürümüne ve cihaz üreticisine bağlıdır. Büyük miktarda veri için, URL Scheme aracılığıyla yalnızca bir oturum tanımlayıcısı iletilmesi ve kalan verilerin sunucudan yüklenmesi önerilir.

URL Scheme'in Sınırlamaları ve Alternatifleri

URL Scheme'in ana dezavantajı, uygulama cihazda yüklü değilse bir bağlantıyı işleyememesidir. Tarayıcı bir hata gösterir ve kullanıcı navigasyon bağlamını kaybeder. Bu sorunu çözmek için Apple iOS 9'da Universal Links'i ve Google Android 6'da App Links'i tanıttı. Her iki mekanizma da uygulamayla ilişkili bir web alanı aracılığıyla kaydedilir.

Universal Links ve App Links normal HTTPS bağlantıları gibi çalışır, ancak uygulama yüklü olduğunda seçim iletişim kutusu olmadan uygulamayı açar. Uygulama yüklü değilse, bağlantı aynı alandaki bir web sayfasını açarak kullanıcı deneyimini korur. Bu, onları üretim ortamları için tercih edilen alternatif haline getirir.

Geri Dönüş Mekanizmaları

iOS ve Android'de URL Scheme için yerleşik bir geri dönüş mekanizması yoktur. Geliştiriciler ara sunucu çözümleri kullanır: bağlantı, JavaScript aracılığıyla uygulamanın yüklü olup olmadığını kontrol eden ve şemaya veya uygulama mağazasına yönlendiren bir web sayfasına gider. Firebase Dynamic Links ve Branch.io, özel bir sunucu hattı geliştirmeye gerek kalmadan yükleme durumunu otomatik olarak belirleyen ve kullanıcıyı yönlendiren ertelenmiş derin bağlantı desteğiyle bu soruna hazır çözümler sunar.

iOS 15+ ve Android 12+ üzerinde URL Scheme kullanırken, gizlilik kurallarının sıkılaştırıldığı ek karmaşıklık ortaya çıkar. Safari, önceden onay almadan kayıtlı olmayan bir şemayı açma girişimlerini engeller ve Android 12, PackageManager aracılığıyla yüklü uygulamaların görünürlüğünü kısıtlar. Bu değişiklikler, uygulamalar arası iletişim için URL Scheme kullanımını önceki platform sürümlerine göre daha az güvenilir hale getirir.

Sıkça Sorulan Sorular

URL Scheme, Universal Links'ten nasıl farklıdır?

URL Scheme şifrelemesiz özel bir protokol kullanırken, Universal Links alan doğrulaması ile HTTPS üzerinden çalışır. Universal Links, uygulama seçim iletişim kutusunu tetiklemez ve uygulama cihazda yüklü olmasa bile doğru şekilde işlenir.

URL Scheme Kiril karakterleri içerebilir mi?

Evet, ancak ASCII olmayan tüm karakterler RFC 3986'ya göre yüzde kodlaması kullanılarak kodlanmalıdır. Eski işletim sistemi sürümleri ve tarayıcılarla uyumluluğu sağlamak için URL Scheme'de Kiril kullanmaktan kaçınılması önerilir.

Bir uygulama kaç tane URL Scheme kaydedebilir?

Ne iOS'ta ne de Android'de şema sayısında bir sınır yoktur. Pratikte, uygulamalar bir ila beş şema kullanır. Örneğin, Telegram tg://, t.me/, telegram:// ve telegram.me:// şemalarını kaydeder.

Bir cihazın URL Scheme'imi destekleyip desteklemediğini nasıl kontrol ederim?

iOS'ta canOpenURL(_:) yöntemi kullanılır, şema kayıtlıysa true döndürür. Android'de kontrol PackageManager.queryIntentActivities() aracılığıyla yapılır. Her iki platform da yapılandırmada şemanın önceden belirtilmesini gerektirir.

URL Scheme aracılığıyla şifreler iletilebilir mi?

Hayır, URL Scheme verileri şifrelemez. Aynı şemayı kaydeden herhangi bir uygulama bağlantıyı ele geçirebilir. Güvenlik için, HTTPS ile Universal Links veya protokol düzeyinde uçtan uca şifreleme kullanın.

Özet

  • URL Scheme — RFC 3986 standardına göre mobil platformlarda uygulamalar arası etkileşim için özel bir URI protokolü.
  • Kayıt şema için iOS'ta Info.plist'te ve Android'de Intent Filter mekanizması aracılığıyla AndroidManifest.xml'de yapılır.
  • İşleme gelen bağlantının iOS'ta uygulama temsilcisi aracılığıyla, Android'de — hedef Activity'de intent.getData() aracılığıyla yapılır.
  • Parametreler yüzde kodlamalı sorgu dizesi aracılığıyla iletilir ve iOS'ta 2 KB'a kadar uzunluk sınırı vardır.
  • Sınırlama — URL Scheme, uygulama yüklü değilken çalışmaz; uygun geri dönüş için Universal Links veya App Links gerekir.
  • Alternatifler — Universal Links (iOS), App Links (Android) ve ticari platformlar Firebase Dynamic Links ve Branch.io.
  • Güvenlik — URL Scheme verileri şifrelemez, bu nedenle gizli bilgilerin iletilmesi için uygun değildir.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun