Ücretsiz araç
AASA ve assetlinks.json oluşturucu
iOS Universal Links için apple-app-site-association, Android App Links için assetlinks.json dosyasını oluşturun. Uygulama bilgilerinizi girin, ardından yüklemeye hazır dosyayı kopyalayın ya da indirin.
- Ücretsiz, hesap gerekmez
- Tarayıcınızda çalışır
- Apple’ın güncel components biçimi
Dosyalarınız hazır mı? Doğrulayıcıyla kontrol edin
Uygulamalar
Bu alan adındaki linkleri açması gereken her uygulamayı ekleyin. Her biri appIDs içinde bir kayıt olur.
- Uygulama 1
10 karakter; Apple Developer hesabınızda Membership details altında.
Xcode’da uygulama target’ınızdan, örneğin com.example.app.
Uygulamayı açan yollar
Kurallar yukarıdan aşağıya kontrol edilir ve ilk eşleşen kazanır; bu yüzden hariç tutma kurallarını geniş kuralların üstüne koyun. * herhangi sayıda karakterle, ? tam bir karakterle eşleşir.
- Kural 1
& ile birleştirilmiş ad=değer çiftleri
Diğer servisler
Dosyanız
apple-app-site-association
Örnek. Bilgilerinizi girdiğinizde değişir.
{
"applinks": {
"details": [
{
"appIDs": [
"ABCDE12345.com.example.app"
],
"components": [
{
"/": "/*"
}
]
}
]
}
}Tarayıcınızda oluşturulur. Hiçbir yere gönderilmez.
Nerede yayınlanmalı
- Dosyayı
.jsonuzantısı olmadanhttps://alan-adiniz/.well-known/apple-app-site-associationadresine yükleyin. - Geçerli bir sertifikayla HTTPS üzerinden, yönlendirme olmadan doğrudan 200 ile sunun.
Content-Type: application/jsonbaşlığını gönderin.- Linklerinizdeki her host’ta tekrarlayın:
example.comvewww.example.comiçin ayrı dosya ve ayrıapplinks:kaydı gerekir. - Apple CDN’i yeni dosyayı 24 saat içinde alır. Bu sürede
?mode=developerile test edin.
Dosyaları kendiniz barındırmak istemiyor musunuz? Akıllı linkler ücretsizdir; Enterprise planda Appy iki dosyayı da uygulamanızın link alan adında sunar.
Ücretsiz link oluşturunNasıl birleşir
İki dosya, karşılıklı bir doğrulama
Universal Links ve App Links, uygulamanızı yalnızca iki taraf birbirine kefil olduğunda açar. Uygulama alan adını, alan adındaki dosya da uygulamayı belirtir. İki yarıdan biri eksikse link bunun yerine web sitenizi açar.
iOS uygulaması
Associated Domains entitlement’ı
applinks:example.comAlan adınız
example.com/.well-known/
apple-app-site-association
App ID’yi listeler: Team ID ve bundle ID
ABCDE12345.com.example.appassetlinks.json
Paket adını ve SHA-256 parmak izini listeler
com.example.app · 14:6D:E9:…
Android uygulaması
autoVerify içeren intent filter
android:autoVerify="true"android:host="example.com"İki yarı eşleşiyor: link uygulamayı açar
Bir şey eksik: link web sitenizi açar
Alan alan
Dosyalardaki her anahtar ne anlama gelir
İki dosya da düz JSON’dır. Oluşturucunun yazdığı anahtarlar ve bilmeye değer isteğe bağlı olanlar aşağıda.
apple-app-site-association
applinks- Universal Links servisi. Hangi URL’nin hangi uygulamayı açacağına dair her şey bunun içinde durur.
details- Her biri bir uygulama grubunu bir URL kuralları grubuyla eşleştiren kayıtlar dizisi. Farklı uygulamalar farklı yolları işliyorsa birden fazla kayıt kullanın.
appIDs<Team ID>.<bundle ID>biçimindeki app ID’ler, örneğinABCDE12345.com.example.app. Her uygulamanın Associated Domains entitlement’ında da bu alan adı yer almalıdır.components- Sırayla kontrol edilen URL kuralları. İlk eşleşen kural uygulamanın açılıp açılmayacağına karar verir.
/- URL yolu için bir desen, örneğin
/products/*. Yazmazsanız her yol eşleşir. ?- Eşleşmesi gereken sorgu parametreleri, sözlük olarak.
{"ref": "?*"}boş olmayan birrefparametresi ister. ##işaretinden sonraki fragment için bir desen.exclude- Eşleşen URL’leri web sitesinde tutmak için
trueyapın. Bu kuralları daha geniş kuralların üstüne koyun. comment- Dosyayı okuyan insanlar için bir not. iOS bunu yok sayar.
webcredentials- İsteğe bağlı. Bu web sitesi için kaydedilmiş parolaları otomatik doldurmayla kullanabilecek uygulamaları listeler.
appclips- İsteğe bağlı. Bu alan adının açabileceği App Clip’leri listeler.
* herhangi sayıda karakterle, ? tam bir karakterle, ?* en az bir karakterle eşleşir. "caseSensitive": false eklemediğiniz sürece eşleşme büyük/küçük harfe duyarlıdır.
assetlinks.json
[ ]- Dosya, tek bir ifade (statement) içerse bile ifadelerden oluşan bir JSON dizisidir.
relationdelegate_permission/common.handle_all_urlsuygulamanın bu sitenin linklerini açmasına izin verir.delegate_permission/common.get_login_credsgiriş bilgilerinin paylaşımını ekler.target- İfadenin ilgili olduğu uygulama.
namespace- Android uygulaması için her zaman
android_app. package_name- Uygulamanın applicationId değeri, örneğin
com.example.app. sha256_cert_fingerprints- Uygulamayı imzalayan sertifikaların SHA-256 parmak izleri; iki nokta üst üsteyle ayrılmış büyük harfli çiftler halinde. Kullanıcıların yüklediği build’leri imzalayan her anahtarı listeleyin.
relation_extensions- İsteğe bağlı, Android 15 ve sonrası. İçindeki
dynamic_app_link_components, Apple’ın components yapısına benzer yol kuralları ekler. Eski sürümler bunu yok sayar.
Eski paths biçimi
iOS 13’ten önce her kayıtta tek bir appID, hariç tutmaların başına NOT eklenen bir paths dizisi vardı ve dosyada boş bir apps dizisi gerekiyordu. iOS 13 ve sonrası appIDs ile components anahtarlarını okur. Oluşturucu yalnızca yeni biçimi yazar. Hâlâ iOS 12 destekliyorsanız eski anahtarları aynı kayda ekleyin.
{
"applinks": {
"apps": [],
"details": [{
"appID": "ABCDE12345.com.example.app",
"paths": ["NOT /help/website/*", "/buy/*"]
}]
}
}{
"applinks": {
"details": [{
"appIDs": ["ABCDE12345.com.example.app"],
"components": [
{"/": "/help/website/*", "exclude": true},
{"/": "/buy/*"}
]
}]
}
}Sık yapılan hatalar
Doğru görünen bir dosya neden yine de çalışmaz
JSON geçerli olabilir, linkler yine de web sitesini açabilir. Başka bir şeye bakmadan önce bu yedi noktayı kontrol edin.
- 01iOS
Yanlış Team ID ön eki
Dosya yükleniyor ama iOS uygulamayı hiç açmıyor.
Çözüm
Sürümü imzalayan hesabın Membership details altındaki Team ID’sini kullanın. Sayısal App Store ID’sini, bir Key ID’yi ya da uygulama sizin hesabınızdan yayınlanıyorsa ajansın ekibini değil.
iOS ve Android için kapsamlı Universal Links rehberi - 02Android
Play App Signing anahtarı yerine yükleme anahtarı
Kendi build’leriniz uygulamayı açıyor, Google Play’den yüklenen sürüm tarayıcıyı açıyor.
Çözüm
Google, dağıttığı uygulamaları uygulama imzalama anahtarıyla imzalar. O anahtarın SHA-256 değerini Play Console’da App integrity bölümünden kopyalayın; yükleme anahtarını yalnızca onunla imzalanmış build’ler paylaşıyorsanız listede tutun.
Android App Links Doğrulanmıyor: adb ile Beş Dakikalık Teşhis - 03iOS + Android
Dosya bir yönlendirmenin arkasında
Adres tarayıcıda sorunsuz açılıyor ama doğrulama başarısız oluyor.
Çözüm
Apple ve Android tam adreste doğrudan 200 bekler.
Universal Links Safari açıyor mu? AASA, App Links, redirect ve header sorunlarını düzeltin/.well-known/yolunu çıplak alan adından www’ye, www’den çıplak alan adına ve dile göre yapılan yönlendirmelerin dışında tutun. - 04iOS + Android
Yanlış içerik tipi ya da JSON yerine HTML
Dosya orada ama platform onu yok sayıyor.
Çözüm
İki dosyayı da
Universal Links Safari açıyor mu? AASA, App Links, redirect ve header sorunlarını düzeltinapplication/jsonolarak sunun. Sunucular uzantısız AASA dosyasını çoğu zamanapplication/octet-streamolarak gönderir; bazı barındırma hizmetleri de giriş sayfası ya da bot kontrolü döndürür. - 05iOS + Android
www host’unu unutmak
example.com linkleri uygulamayı, www.example.com linkleri web sitesini açıyor.
Çözüm
Her host ayrı kontrol edilir. Dosyayı ikisine de yükleyin, ikisini de Associated Domains’e ekleyin ve Android intent filter’larınızda ikisini de tanımlayın.
iOS ve Android için kapsamlı Universal Links rehberi - 06iOS
Her şeyi yakalayan kuralın altında kalan bir hariç tutma
Web sitesinde kalmasını istediğiniz sayfalar uygulamayı açıyor.
Çözüm
İlk eşleşen kural kazanır.
excludekurallarını/*kuralının üstüne taşıyın; oluşturucudaki Appy örneği de böyle yapar. - 07iOS
.json uzantısı ya da yanlış klasör
iOS’un istediği adreste hiçbir şey bulunmuyor.
Çözüm
Dosyanın adı uzantısız
apple-app-site-associationolmalı ve/.well-known/içinde durmalı. Yukarıdaki indirme düğmesi bu adı zaten kullanır.
Barındırmayla uğraşmayın
İki dosyayı da Appy sizin için sunsun
Enterprise planda uygulamanız kendi link alan adını alır; Appy, apple-app-site-association ve assetlinks.json dosyalarını kaydettiğiniz Team ID, bundle ID, paket adı ve parmak izlerinden oluşturup bu alan adında barındırır. Akıllı linklerin kendisi ücretsizdir, deep link ise Pro planla gelir.
- Ücretsiz plan
- Kredi kartı gerekmez
- Her planda sınırsız tıklama
- İptal etseniz de linkler çalışır
Sık sorulan sorular
apple-app-site-association dosyası nedir?
Alan adınızda duran ve iOS’a hangi uygulamaların hangi URL’lerinizi Universal Link olarak açabileceğini söyleyen bir JSON dosyasıdır. https://alanadiniz/.well-known/apple-app-site-association adresinde, uzantısız durur; app ID’leri (Team ID ile bundle ID) ve her birinin işlediği URL kurallarını listeler.
assetlinks.json nedir?
Google’ın Digital Asset Links yapısına dayanan Android karşılığıdır. https://alanadiniz/.well-known/assetlinks.json adresinde durur; linklerinizi açmasına izin verilen uygulamanın paket adını ve imzalama sertifikası parmak izlerini belirtir. Android bu dosyayı uygulama yüklendiğinde kontrol eder ve linklerinizi ancak o zaman doğrulanmış App Links olarak kabul eder.
Oluşturulan dosyaları nereye yüklemeliyim?
Linklerde kullandığınız her host’un kökündeki /.well-known/ klasörüne. İki dosya da HTTPS üzerinden, yönlendirme olmadan doğrudan 200 ile ve application/json içerik tipiyle yüklenmelidir. AASA dosyasının uzantısı olmadığı için statik barındırma hizmetlerinde çoğu zaman bir header kuralı gerekir.
Team ID ve bundle ID’mi nerede bulurum?
Team ID, Apple Developer hesabınızda Membership details altındadır. Bundle ID, Xcode’da uygulama target’ınızın General sekmesindedir. İkisi birlikte ABCDE12345.com.example.app gibi bir app ID oluşturur.
assetlinks.json için SHA-256 parmak izini nasıl alırım?
Uygulamanızı Google Play imzalıyorsa Play Console’u açın, App integrity bölümüne gidin ve uygulama imzalama anahtarı sertifikasının SHA-256 değerini kopyalayın. Kendi tuttuğunuz anahtarlar için keytool -list -v -keystore my-release-key.keystore ya da ./gradlew signingReport çalıştırın. Oluşturucu değeri iki nokta üst üsteyle ya da onsuz kabul eder.
AASA dosyasında paths mi, components mi kullanmalıyım?
components kullanın. Apple onu iOS 13 ile getirdi; sorgu parametrelerini, fragment’leri, hariç tutmaları ve açıklamaları destekler. Eski paths dizisi yalnızca hâlâ iOS 12 ya da öncesini destekliyorsanız gerekir; bu durumda ikisini aynı kayda koyun.
Tek dosya birden fazla uygulamayı kapsayabilir mi?
Evet. AASA dosyasında her app ID’yi appIDs içinde listeleyin ya da uygulamalar farklı yolları işliyorsa ayrı details kayıtları ekleyin. assetlinks.json’da her paket için diziye bir ifade ekleyin. Oluşturucu birden fazla iOS uygulamasını destekler; ikinci bir Android paketi için ifadeyi kopyalayıp paket adını ve parmak izlerini değiştirin.
Değişikliklerin cihazlara ulaşması ne kadar sürer?
Apple’a göre CDN’i AASA dosyanızı 24 saat içinde ister, cihazlar da yüklemeden sonra yaklaşık haftada bir güncellemeleri kontrol eder. Android doğrulamayı uygulama yüklendiğinde yapar; test cihazında adb shell pm verify-app-links --re-verify com.example.app kontrolü yeniden çalıştırır.
AASA dosyasını imzalamam gerekir mi?
Hayır. Dosyayı TLS sertifikanızla imzalamak yalnızca iOS 8’de gerekiyordu. iOS 9’dan bu yana Apple’ın beklediği, HTTPS üzerinden sunulan düz bir JSON dosyasıdır.
Girdiğim bilgiler Appy’ye gönderiliyor mu?
Hayır. Dosyalar tarayıcınızda çalışan kodla oluşturulur; yazdığınız hiçbir şey yüklenmez ya da saklanmaz. Doğrulayıcı farklı çalışır: çalıştırdığınızda dosyaları alan adınızdan çeker.
Sonraki adımlar
Sonucu kontrol edin, okumaya devam edin
- Ücretsiz araçUniversal Link DoğrulayıcıDosyalar yayına girince onları alan adınızda, Apple CDN’inde ve Google’ın Digital Asset Links API’si üzerinden kontrol edin.
- RehberiOS ve Android için kapsamlı Universal Links rehberiUniversal links, deep links ve app links için kurulum, doğrulama, sorun giderme ve en iyi uygulamaları kapsayan eksiksiz rehber.
- RehberUniversal Links Safari açıyor mu? AASA, App Links, redirect ve header sorunlarını düzeltinUygulama yerine tarayıcı açan universal links ve app links için uygulanabilir sorun giderme akışı.
- RehberAndroid App Links Doğrulanmıyor: adb ile Beş Dakikalık TeşhisAndroid 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.
- RehberDeep Linking ve Universal Links: kapsamlı karşılaştırmaDeep links ile universal links arasındaki farkları, hangi durumda hangisinin daha doğru olduğunu ve güvenilir yönlendirme akışlarını öğrenin.