Appy
← Bloga dön
Sorun Giderme

Universal Link ve App Link Hata Kodları: Ne Anlama Geliyorlar?

SWCERR00101, SWCERR00301, legacy_failure, 1026: her Universal Link ve Android App Link hatasının gerçekte ne anlama geldiği, nerede karşınıza çıktığı ve uygulamanın yeniden açılmasını sağlayan çözüm. Ya da Appy’nin ücretsiz doğrulayıcısı sorunu saniyeler içinde sizin yerinize bulsun.

9 Ekim 2026•9 dk okuma

Önce gerçekten bozuk olduğundan emin olun

“Universal Links çalışmıyor” şikâyetlerinin çoğu, aslında tam da Apple’ın tasarladığı gibi davranan linkler. Apple’ın TN3155 teknik notu, uygulamanın kapalı kalması gereken durumları sıralıyor: Safari’nin adres çubuğuna yazılan ya da yapıştırılan bir URL doğrudan navigasyon sayılır, bu yüzden tarayıcıda kalır. Bulunduğunuz sayfayla aynı alan adına giden bir link de tarayıcıda kalır. Başka uygulamaların içindekiler dahil üçüncü taraf tarayıcılar ise bir linki uygulamanıza devredip devretmeyeceğine kendisi karar verir.

Bu yüzden tek bir dosyaya dokunmadan önce dürüst bir test yapın. Linki iPhone’daki Notlar’a yapıştırın ve üzerine uzun basın. Yapılandırma doğruysa menü, linki tarayıcının yanı sıra uygulamanızda açmayı da önerir. Kullanıcının orada yaptığı seçim o alan adı için varsayılan olur; dün çalışan bir linkin bugün Safari’yi açmasının sessiz nedenlerinden biri de bu.

Notlar’da uygulama seçeneği çıkmıyorsa ilişkilendirmede bir sorun var demektir; ne olduğunu da hata kodu söyler.

Kestirme yol: Appy’nin ücretsiz doğrulayıcısı

Terminali açmadan önce alan adınızı Appy’nin Universal Link doğrulayıcısına yapıştırın. Doğrulayıcı apple-app-site-association dosyanızı kendi sunucunuzdan ve Apple’ın CDN’inden ayrı ayrı çeker; Apple’daki dosyanın sizinkiyle aynı olup olmadığını anında görürsünüz. Android’in assetlinks.json dosyanızdan ne okuduğunu da Google’ın Digital Asset Links API’sine sorar. Ücretsiz, kayıt gerektirmez ve geliştiricilerinize gönderebileceğiniz tek bir sonuç sayfası verir.

Sorun dosyaların kendisindeyse Appy’nin AASA ve assetlinks.json oluşturucusu ikisini de Team ID, bundle ID ve SHA-256 parmak izinizden hazırlar. Rehberin geri kalanı her hatayı tek tek açıklıyor; doğrulayıcı bir hata işaretlediğinde neyi düzelteceğinizi tam olarak bilirsiniz.

Apple’ın CDN’inde ne olduğuna bakın

iOS 14’ten beri telefonlar apple-app-site-association dosyanızı hiçbir zaman sizin sunucunuzdan indirmiyor. Dosyayı Apple’ın CDN’inden alıyorlar, CDN de onu sizden çekiyor. Yani ilk soru “dosyam doğru mu?” değil, “Apple’da ne var?” olmalı.

Apple’ın CDN’inin alan adınız için tuttuğu dosya

curl -sD - "https://app-site-association.cdn-apple.com/a/v1/links.example.com" -o /dev/null

Hata veren bir alan adı böyle yanıt verir

HTTP/1.1 404 Not Found
Apple-Failure-Reason: SWCERR00101 Bad HTTP Response: 404 Not Found
Cache-Control: max-age=3600,public

Kendi sunucunuz, CDN’in gördüğü hâliyle

curl -v -A "AASA-Bot/1.0" https://links.example.com/.well-known/apple-app-site-association
CDN’i Ekim 2026’da sorguladığımızda çalışan bir dosya max-age=21600 (6 saat), hata ise max-age=3600 (1 saat) ile döndü. Bu önbelleği kendiniz temizlemenin bir yolu yok.

SWCERR kodları ve çözümleri

Apple bu kodların bir listesini yayımlamıyor. Aşağıdakiler, Apple’ın CDN’inin Apple-Failure-Reason başlığında döndürdüğü mesajlar; her biri Apple Developer Forums başlıklarında ya da CDN’e kendi yaptığımız isteklerde doğrulandı.

01

SWCERR00101 · Bad HTTP Response: 404 Not Found

CDN dosyanızı istedi ve 200 dışında bir yanıt aldı. Çoğu zaman dosya kök alan adında durur ama entitlement bir alt alan adını gösterir, ya da tam tersi. applinks: içindeki her host’un https://<host>/.well-known/apple-app-site-association adresinde kendi dosyası olmalı. Burada 502 görüyorsanız Apple sorduğunda origin sunucunuz kapalıydı.

02

SWCERR00201 · Insecure (non-https) redirects forbidden

Dosyanın URL’i bir http:// adresine yönlendiriyor. Dosyayı her alan adında doğrudan HTTPS üzerinden sunun. Apple’ın dokümanları hiç yönlendirme olmamasını söylüyor; testlerimizde CDN https’ten https’e bir yönlendirmeyi takip etti, ama http’ye düşen bir yönlendirme her seferinde başarısız oldu.

03

SWCERR00202 · Connections to private/reserved IP addresses are not allowed

Host adı özel ya da ayrılmış bir adrese çözümleniyor, bu yüzden Apple bağlanmıyor. Yalnızca bir VPN içinde var olan staging alan adlarında sık görülür. Bunlar için developer mode kullanın (aşağıda anlatıyoruz), production için de herkese açık bir host.

04

SWCERR00301 · Timeout

Apple’ın dosyayı indiren servisi bekledi ama hiçbir başlık gelmedi. Bilinmeyen istemcilerin önüne doğrulama adımı koyan güvenlik duvarları, coğrafi engelleme ve bot korumaları en yaygın nedenler. Apple, dosyanın her IP’den erişilebilir olması gerektiğini söylüyor ve IP aralıklarını yayımlamıyor; bu yüzden bu yolu herkese açın.

05

SWCERR00302 · Network error (temporary)

Geçici bir hata, çoğunlukla DNS kaynaklı. DNS’iniz sağlıklıysa genellikle bir sonraki indirmede düzelir; hata durumunda bu bir saat içinde olur.

06

SWCERR00303 · TLS error

Sertifikanın süresi dolmuş, başka bir host için verilmiş ya da kendinden imzalı; ya da TLS el sıkışması başarısız olmuş. Apple, tam host adını kapsayan ve herkesçe güvenilen bir sertifika istiyor. example.com için alınmış bir sertifika, açıkça belirtmedikçe links.example.com’u kapsamaz.

07

SWCERR00305 · Network error

CDN bağlandı ama aktarım yarıda kaldı: EOF, connection refused ya da sunucu göndermediği bir sıkıştırmayı bildirdiğinde gzip: invalid header. O yol için WAF ve sıkıştırma ayarlarını kontrol edin.

08

SWCERR00401 · Bad JSON content

CDN’e JSON olmayan bir şey geldi; genellikle bir HTML doğrulama sayfası ya da giriş sayfası. Ayrıntıdaki “invalid character ‘<’” bunu ele veriyor. Bir Apple mühendisinin forumlardaki çözümü: sunucu, AASA-Bot/* dahil her user agent’a dosyanın kendisini döndürsün.

Yolları swcutil ile kontrol edin

Dosya Apple’a ulaştıktan sonraki soru, linkinizin onunla eşleşip eşleşmediği. Mac’te swcutil, dosyanın yerel bir kopyasını gerçek bir URL’e karşı test eder; Apple mühendislerinin developer mode yerine önerdiği kontrol de bu.

İndirme testi

sudo swcutil dl -d links.example.com

Eşleşme testi

sudo swcutil verify -d links.example.com -j ./apple-app-site-association -u https://links.example.com/promo

Eşleşme böyle görünür

{ s = applinks, a = ABCD123.com.example.app, d = links.example.com }:
Pattern "https://links.example.com/promo" matched.
“blocked match”, yolun bilerek hariç tutulduğu ya da components tarafından kapsanmadığı anlamına gelir. Güncel appIDs + components biçimini eski appID + paths biçimiyle aynı dosyada karıştırmayın.

Telefonun kendisi ne düşünüyor?

Developer Mode açıkken Ayarlar › Geliştirici › Universal Links altında bir Diagnostics ekranı bulunur: tam bir URL yazdığınızda yüklü bir uygulamanın onu sahiplenip sahiplenmediğini söyler. Resmin tamamı için bir sysdiagnose alın ve swcutil_show.txt dosyasını açın. Uygulama ID’nizi aratın ve üç satırı okuyun.

Site/Fmwk Approval satırında approved yazmalı. Unspecified ya da denied, telefonun o uygulama ve alan adı için onaylanmış bir dosyayı hiç almadığı anlamına gelir: entitlement’ı, herkese açık erişimi ve Team ID önekini kontrol edin. User Approval, kişinin bu alan adı için tarayıcıyı seçip seçmediğini gösterir. Last Checked ve Next Check, Apple’ın dosyanızı en son ne zaman indirdiğini gösterir.

“Düzelttim ama hiçbir şey değişmedi” anlarının çoğunu bu son nokta açıklıyor. Uygulama yüklendikten sonra telefon dosyayı kabaca haftada bir kontrol eder. Bir düzeltmeyi hemen test etmek için uygulamayı yeniden yükleyin. Staging için applinks girdisine ?mode=developer ekleyin: CDN’i atlar, ama yalnızca geliştirme imzalı build’lerde ve bu modu açtığınız cihazlarda.

Akılda tutmaya değer rakamlar

Apple’ın CDN’inin testlerimizde sağlam bir dosyayı tuttuğu süre
6 sa

Apple’ın CDN’inin testlerimizde sağlam bir dosyayı tuttuğu süre

bir hatayı tuttuğu süre
1 sa

bir hatayı tuttuğu süre

bir iPhone’un yüklemeden sonra dosyayı yeniden kontrol etme sıklığı
~1 hafta

bir iPhone’un yüklemeden sonra dosyayı yeniden kontrol etme sıklığı

Android’de doğrulamaya bakmadan önce beklemeniz gereken en kısa süre
20 sn

Android’de doğrulamaya bakmadan önce beklemeniz gereken en kısa süre

Android App Links: pm get-app-links’in bildirdiği durumlar

Android’de arada bir CDN yok. Cihazdaki doğrulayıcı https://<host>/.well-known/assetlinks.json dosyasını kendisi indirir ve Android 12’den beri doğrulanmamış bir link artık seçim ekranı göstermez: doğrudan tarayıcıda açılır. Eksik bir parmak izinin tıpkı “link çalışıyor, sadece uygulamamda değil” gibi görünmesinin nedeni bu.

Android 12, birden fazla host’un nasıl değerlendirildiğini de değiştirdi. Artık her host ayrı ayrı doğrulanıyor; Android 11 ve öncesinde doğrulamayı geçemeyen tek bir host hepsini düşürür. Android 15’te ise assetlinks.json’daki bir değişikliğin tüm cihazlara ulaşması yedi güne kadar sürebilir.

Doğrulamayı bilgisayarınızdan yeniden çalıştırın

Sıfırla, doğrula, oku

adb shell pm set-app-links --package com.example.app 0 all
adb shell pm verify-app-links --re-verify com.example.app
adb shell pm get-app-links com.example.app

Tipik çıktı

example.com: verified
sub.example.com: legacy_failure
example.org: 1026
Yeni bir yüklemeden sonra sonucu okumadan önce en az 20 saniye bekleyin; doğrulama arka planda çalışır.

Her durum ne anlama geliyor?

01

verified

Alan adı doğrulamayı geçti. Linkler hâlâ tarayıcıyı açıyorsa intent filter’a bakın: android:autoVerify="true", BROWSABLE kategorisi ve hem http hem https şemaları.

02

none

Henüz bir kayıt yok. Birkaç dakika bekleyip verify-app-links’i yeniden çalıştırın.

03

legacy_failure

Eski doğrulayıcı alan adını reddetti ama nedenini söylemedi. İşe dosyanın kendisinden başlayın: HTTP 200, application/json, HTTPS, yönlendirme yok.

04

1024 ve üzeri (örneğin 1026)

Doğrulayıcıya özgü bir hata. Android’in dokümanları ağı ve barındırmayı işaret ediyor: yine aynı kurallar, yani 200, JSON, HTTPS ve yönlendirme yok.

05

approved / denied

Doğrulamayla değil, bir shell komutuyla zorla ayarlanmış. Herhangi bir sonuca güvenmeden önce set-app-links ile sıfırlayın.

06

migrated / restored / system_configured

Eski doğrulamadan aktarılmış, kullanıcı verileriyle geri yüklenmiş ya da cihaz yapılandırmasıyla ayarlanmış. Hata değiller, ama dosyanızın bugün çalıştığının kanıtı da değiller.

Bilgisayarınızda doğru, Play Store’da yanlış olan parmak izi

En yaygın Android hatasının barındırmayla hiçbir ilgisi yok. Play App Signing kullanıyorsanız Google uygulamanızı kendi uygulama imzalama anahtarıyla yeniden imzalar. Upload anahtarınızdan keytool ile aldığınız SHA-256, kullanıcıların telefonlarındaki değil; bu yüzden yerel build’iniz geçerken release build başarısız olur.

Parmak izini bunun yerine Play Console › Release › Setup › App signing ekranından kopyalayın. sha256_cert_fingerprints dizisi birden fazla değer alabilir; debug anahtarınızı da büyük harflerle orada tutun. Ve unutmayın: example.com’dan www.example.com’a ya da http’den https’e bir yönlendirme, Android’in linklerinizin hiçbirini doğrulamayacağı anlamına gelir.

Google’ın dosyanızdan ne okuduğunu görün

Digital Asset Links API

curl "https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://example.com&relation=delegate_permission/common.handle_all_urls"
Boş bir statements listesi, Google’ın dosyayı okuyamadığı anlamına gelir: 200 dışındaki her yanıt, bir yönlendirme ya da güvenilmeyen bir sertifika sonunda buraya çıkar.

Siz düzeltirken kampanyalarınız çalışmaya devam etsin

Bozuk ilişkilendirme dosyaları size yükleme kaybettirmemeli. Bir Appy linki her planda her telefonu doğru mağazaya gönderir, Huawei AppGallery dahil. Pro’da ise önce uygulamanızı dener; uygulaması zaten yüklü olan kişi doğrudan uygulamanıza gelir. AASA dosyası, SDK ya da yeni bir sürüm gerekmez. Universal Links yeniden çalıştığında aynı Appy linkini kullanmaya devam edin: basılı kodlar ve gönderiler değişmez.

appy.to/yourapp

siz hata ayıklarken de çalışır

  • iPhonePro’da uygulamanız, değilse App Store
  • AndroidPro’da uygulamanız, değilse Google Play
  • HuaweiAppGallery
  • BilgisayarWeb siteniz
Mağaza yönlendirmesi Free dahil her planda. Yüklü uygulamayı açmak Pro’da, ayda $9.99’dan başlayan fiyatla.

Bunları da okuyun

Hata kodlarıyla ilgili sorular

SWCERR kodlarını nerede görürüm?

https://app-site-association.cdn-apple.com/a/v1/alan-adiniz adresine istek attığınızda Apple-Failure-Reason başlığında, Mac’te swcutil dl çıktısında ve cihazda swcd günlüğünde.

Bunların hepsini tek seferde kontrol eden bir araç var mı?

Evet. Appy’nin Universal Link doğrulayıcısı ücretsiz ve kayıt gerektirmiyor. AASA dosyanızı sunucunuzda ve Apple’ın CDN’inde, assetlinks.json dosyanızı da Google’ın Digital Asset Links API’si üzerinden kontrol eder, ardından neyi düzeltmeniz gerektiğini söyler.

Apple’ın düzelttiğim AASA dosyasını almasını nasıl sağlarım?

Apple’ın CDN’ini temizleyemezsiniz. Önbelleğin süresi dolunca dosyayı yeniden çeker; testlerimizde hatalar için bu süre bir saatti. Ardından test telefonunuzda uygulamayı yeniden yükleyin; böylece haftalık kontrolü beklemek yerine yeni kopyayı indirir.

apple-app-site-association dosyasının boyut sınırı var mı?

Apple 2016’da 128 KB’lık bir sınır belgelemişti. Güncel dokümanlar bunu tekrarlamıyor, ama dosyayı küçük tutarsanız bu soru hiç gündeme gelmez.

Linki Safari’ye yazdığımda neden tarayıcıda açılıyor?

Bu beklenen bir davranış. Yazılan URL’ler ve aynı alan adı içindeki linkler tasarım gereği tarayıcıda kalır. Bunun yerine Notlar’dan ya da Mesajlar’dan test edin.

Android’de legacy_failure ne anlama geliyor?

Eski doğrulayıcı alan adını reddetti ve Android nedenini söylemiyor. assetlinks.json’un HTTPS üzerinden, yönlendirme olmadan, application/json olarak 200 döndürdüğünü ve Play App Signing parmak izini içerdiğini kontrol edin.

Bunların hepsinden kaçınabilir miyim?

Kısmen. Pro planda bir Appy linki önce uygulamanızın URL şemasını dener, olmazsa doğru mağazaya yönlendirir; bu yüzden kendi alan adınızda AASA dosyası olmadan da çalışır. Gerçek Universal Links için yine de yukarıdaki yapılandırma gerekir.

Diğer yazılar

Sorun Giderme
Aug 14, 2026
10 dk okuma

Android App Links Doğrulanmıyor: adb ile Beş Dakikalık Teşhis

Android 12’den beri, alan adı doğrulaması başarısız olan bir App Link uygulamanız yerine tarayıcıda açılıyor — sessizce ve her cihazda aynı şekilde değil. Nedeni hızla bulan adb kontrol listesi.

android app links
assetlinks.json
app links verification
adb
Yazıyı oku
Sorun Giderme
Mar 7, 2026
11 dk okuma

Universal Links Safari açıyor mu? AASA, App Links, redirect ve header sorunlarını düzeltin

Uygulama yerine tarayıcı açan universal links ve app links için uygulanabilir sorun giderme akışı.

universal links
app links
aasa
assetlinks
Yazıyı oku
Rehber
Oct 9, 2026
10 dk okuma

Uygulama İçi Tarayıcılar Deep Linkleri Nasıl Ele Alıyor: Instagram, TikTok, Facebook, Gmail, Telegram ve Diğerleri

Linkiniz Safari’den uygulamayı açıp Instagram’da neden ölü kalıyor? Her uygulamanın kullandığı tarayıcı türü, iOS ve Android kuralları ve Instagram’dan Telegram’a uygulama uygulama belgelenmiş davranışlar.

in-app browser
universal links
app links
instagram
Yazıyı oku

Başka konular için blogda gezin.

Bozuk linkler yüzünden dokunuş kaybetmeyin

Bozuk dosyayı ücretsiz doğrulayıcıyla bulun, bu arada tüm kampanyalarınızı bir Appy linkiyle çalışır tutun: her planda doğru mağaza, Pro’da uygulamanız.