Uygulama kabuğu ve gezinme
Derin Bağlantı
URL'lerden ve Bildirimlerden Belirli Sayfaları Açma
1Derin Bağlantı Nedir?#
Derin Bağlantı, harici kaynakların (tarayıcılar, SMS, e-postalar, sosyal medya, anlık bildirimler, QR kodları) uygulamanızı ana sayfa yerine doğrudan belirli bir sayfada açmasına olanak tanır.
Uygulamanız iki tür destekler ve bunlar eşit derecede kolay DEĞİLDİR:
- ⚡ Özel Şema (myapp://path) - hemen çalışır, kurulum gerektirmez. Anlık bildirimler ve QR kodları için en iyisidir.
- 🌐 https:// bağlantıları (https://mysite.com/page) - web sitenize YÜKLENMİŞ BİR dosya gerekir. Bu olmadan Android bağlantıyı tarayıcıda tutar ve uygulamanız hiç açılmaz. Derin bağlantıların 'çalışmamasının' en yaygın nedeni budur.
İkisi de aşağıda ele alınmıştır. Bugün çalışan bir şeye ihtiyacınız varsa özel şemayı kullanın.
2Özel Şema URL'leri Nasıl Çalışır#
Bir özel şema bağlantısına dokunulduğunda (örn. myapp://products/shoes), uygulama:
- Özel şema URL'sini alır
- Bunu otomatik olarak web sitesi URL'nizle eşler
- WebView'i doğru sayfada açar
✅ Şema, Uygulama Adınızdan türetilir (küçük harf, yalnızca harfler).
✅ Örnek eşleme:
myapp://products/shoes
→ https://mysite.com/products/shoes
Şemadan sonraki yol bölümleri korunur ve web sitenizin alan adına eklenir.
Custom scheme format:
<appname>://<path>
Examples:
myshop://cart
→ https://myshop.com/cart
puma://in/en/help
→ https://in.puma.com/in/en/help3https:// bağlantıları - web sitenize bir dosya konmalıdır#
İnsanların gözden kaçırdığı kısım burası, bu yüzden test etmeden önce okuyun.
AppMint alan adınızı uygulamaya otomatik olarak ekler. Ancak WEB SİTENİZ uygulamanın size ait olduğunu kanıtlayana kadar Android, uygulamanızı bir https:// bağlantısından AÇMAZ. Android 12 ve üzerinde, kanıtlanmamış bir bağlantı yalnızca tarayıcıyı açar - ne iletişim kutusu ne de seçenek. Bu yüzden bir bağlantı 'hiçbir şey yapmıyor' gibi görünebilir.
Kanıt küçük bir dosyadır. AppMint bunu sizin için zaten oluşturdu: derlemeden sonra İndirilenler'de assetlinks.json dosyasına bakın. Paket adınızı ve uygulamanızın imza parmak izini içerir.
Bunu web sitenize TAM OLARAK şu adrese yükleyin (klasör adı nokta ile başlar):
https://yoursite.com/.well-known/assetlinks.json
Rules — all four must be true:
1. Served over https (not http)
2. Content-Type: application/json
3. NO redirect (a redirect to www breaks it)
4. Reachable publicly — no login, no Cloudflare challenge
Check it from any computer:
curl -i https://yoursite.com/.well-known/assetlinks.json4Google Play'de mi yayınlıyorsunuz? Play'in parmak izini kullanın#
Google Play, uygulamanızı KENDİ anahtarıyla yeniden imzalar. Bu yüzden AppMint'in oluşturduğu assetlinks.json içindeki parmak izi - yani yerel anahtarınız - kullanıcıların Play'den gerçekte yüklediğiyle eşleşmez.
Play'de yayınlıyorsanız parmak izini değiştirin:
- Play Console → uygulamanız → Test ve yayın → Kurulum → Uygulama bütünlüğü
- 'App signing key certificate' altındaki SHA-256'yı kopyalayın
- Bu değeri assetlinks.json dosyasına koyun ve yeniden yükleyin
Aynı dosyada İKİ parmak izini de listeleyebilirsiniz - doğrudan paylaştığınız APK'lar için yerel olanı, Play yüklemeleri için de Play'inkini. Böylece ikisi de çalışır.
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourapp.name",
"sha256_cert_fingerprints": [
"AA:BB:...", // your local key (direct APK)
"11:22:..." // Play App Signing key
]
}
}]5Android'in kabul edip etmediğini kontrol edin#
Dosyayı yükledikten sonra uygulamayı YENİDEN YÜKLEYİN (Android yalnızca yükleme sırasında kontrol eder ve bu bir dakika sürebilir).
Aşağıdaki komut size gerçeği söyler. Alan adınızı 'verified' ile birlikte arayın. 'legacy_failure' yazıyorsa veya alan adı yoksa, dosya doğru okunmuyordur - geri dönüp dört kuralı kontrol edin.
# Does Android consider your domain verified?
adb shell pm get-app-links com.yourapp.name
# Force a re-check without reinstalling (Android 12+):
adb shell pm verify-app-links --re-verify com.yourapp.name
# Google's own checker (open in a browser):
https://digitalassetlinks.googleapis.com/v1/statements:list?
source.web.site=https://yoursite.com&
relation=delegate_permission/common.handle_all_urls6Genellikle neden başarısız olur#
Nedeni olma sıklığına göre sıralı:
- Dosya yüklenmemiş veya yanlış yolda. /.well-known/assetlinks.json olmalıdır - noktayla birlikte.
- www ve www'suz. Android, https://example.com ile https://www.example.com adreslerini FARKLI alan adları olarak görür. AppMint, Web Sitesi URL'nizdeki tam ana bilgisayar adını kaydeder. İkisini de kullanıyorsanız dosyayı ikisine de koyun ve hangi ana bilgisayarı girdiğinizi bize söyleyin.
- Bir yönlendirme. Birçok barındırıcı, kök alan adını www'ye yönlendirir. Dosya tarayıcıda yüklense bile bu doğrulamayı bozar.
- Play'de yayınlandı ama yerel parmak izi kullanılıyor - önceki adıma bakın.
- Yüklemeden sonra yeniden yüklenmedi. Android yükleme sırasında kontrol eder.
Özel şema bağlantıları (myapp://...) bunların HİÇBİRİNİ gerektirmez ve her zaman çalışır - bugün çalışan bir şey istiyorsanız anlık bildirimler ve QR kodları için bunları kullanın.
7ADB ile Derin Bağlantıları Test Etme#
Derin bağlantılarınızı USB hata ayıklama ile bağlı bir bilgisayardan test edin:
- Telefonunuzda USB Hata Ayıklamayı etkinleştirin
- USB ile bağlanın
- Aşağıdaki komutları çalıştırın.
⚠️ Önemli: Bir https bağlantısıyla 'am start', doğrulama BAŞARISIZ olsa bile uygulamanızı açabilir; çünkü bağlantıyı doğrudan Android'e verirsiniz. Gmail veya Chrome'da gerçek bir dokunuşun çalışacağını kanıtlamaz. Bunu yalnızca 'pm get-app-links' (önceki adım) söyler. am start'ı alan adı kurulumunuzu değil, SAYFA yönlendirmenizi kontrol etmek için kullanın.
# Test custom scheme:
adb shell am start -a android.intent.action.VIEW \
-d "myapp://some/page"
# Test website URL:
adb shell am start -a android.intent.action.VIEW \
-d "https://mysite.com/some/page"
# Verify which app handles it:
adb shell cmd package resolve-activity --brief \
-a android.intent.action.VIEW \
-d "myapp://some/page"8Anlık Bildirimlerde Derin Bağlantılar#
OneSignal ile anlık bildirim gönderirken, herhangi bir derin bağlantı URL'sini 'Launch URL' alanına yapıştırın. Uygulama açılır ve doğrudan o sayfaya gider.
İki URL türü de çalışır:
✅ https://mysite.com/flash-sale
✅ myapp://flash-sale
OneSignal Dashboard → New Push:
Launch URL: https://mysite.com/flash-sale
OR
Launch URL: myapp://flash-sale
Both will open the app on the sale page.9Önemli: Sıcak Başlatma Davranışı#
Derin bağlantı tetiklendiğinde uygulamanız zaten arka planda çalışıyorsa, Android bağlantıyı uygulamayı yeniden başlatmadan doğrudan iletir - buna 'sıcak başlatma' denir.
✅ Uygulamanız bunu otomatik olarak işler. WebView, uygulama zaten açıkken bile yeni sayfaya gider.
⚠️ Derin bağlantılar yalnızca ana sayfayı açıyorsa şunları kontrol edin:
- Yapılandırmadaki Web Sitesi URL'niz, derin bağlantıdaki alan adıyla eşleşiyor
- Özel şema URL'sindeki yol doğru
⚠️ https:// bağlantıları uygulamayı HİÇ açmıyorsa bu bir sıcak başlatma sorunu değildir - yukarıdaki assetlinks.json adımıdır. Özel şema bağlantıları çalışırken https bağlantılarının hiçbir şey yapmaması klasik işarettir.
Warm launch works automatically.
No extra setup needed.