Tarayıcıdan Android uygulamasına geçişler nasıl yapılandırılır (Deep Links ve App Links)
Kısa cevap: Activity'ye https host'u ve android:autoVerify="true" ile bir intent filtresi ekleyin, assetlinks.json dosyasını web sitenizde /.well-known/ konumuna yerleştirin, kodda intent'i işleyin ve adb ile tarayıcı aracılığıyla test edin.
Yapılandırma adımları (hızlı)
- AndroidManifest.xml dosyasında activity için https-data ve android:autoVerify="true" içeren bir intent filtresi ekleyin.
- Web sitenizde packageName ve SHA256 sertifikasını belirten /.well-known/assetlinks.json dosyasını yerleştirin.
- Activity'de intent.getData() işleyin ve parametreleri çıkarın (id, path vb.).
- APK/AAB derleyip yükleyin — autoVerify doğrulaması kurulum sırasında (ve Play Store'da) gerçekleştirilir.
- Gerçek cihazlarda ve emülatörde test edin; yeniden üretmek için adb kullanın.
Manifest'teki intent filtresi örneği
<activity android:name=".MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- HTTPS-app link: kesin yol için pathPrefix daha iyidir -->
<data android:scheme="https" android:host="example.com" android:pathPrefix="/product" />
</intent-filter>
</activity>
Chrome ve diğer tarayıcılarda geçişlerin çalışması için custom şemalar yerine https kullanın — custom şemalar giderek daha fazla engelleniyor.
Kodda bağlantıyı işleme (Kotlin)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val data: Uri? = intent?.data
data?.let {
if (it.path?.startsWith("/product") == true) {
val productId = it.lastPathSegment
openProduct(productId)
}
}
}
Digital Asset Links — ne ve nereye yüklenecek
JSON oluşturun ve şu adrese yerleştirin: https://example.com/.well-known/assetlinks.json
Örnek:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourpackage",
"sha256_cert_fingerprints": [
"14:6D:E9:..."
]
}
}]
SHA256 parmak izini şu komutla alın:
keytool -list -v -keystore your-keystore.jks | grep SHA256
Test etme
- adb (emülatör/cihaz):
adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/123" com.yourpackage - Tarayıcıda: Uygulamada aç bağlantısını yerleştirin ve cihazda açın.
- Hata ayıklama sırasında tarayıcı önbelleğini temizleyin: adb shell pm clear com.android.chrome
Yaklaşımların karşılaştırılması
| Parametre | Custom URI (myapp://) | Android App Links (https) |
|---|---|---|
| Chrome'dan çalışır | Sıkça engellenir | Evet (autoVerify ve assetlinks.json ile) |
| Kurulum kolaylığı | Geliştirme için basit | assetlinks ve sertifika gerektirir |
| Uygulama yokken davranış | Hata gösterir/hiçbir şey yapmaz | Web sayfası açılır |
Deep linking sorunlarının %40'ı şema yazım hatalarından veya intent filtresi çakışmalarından kaynaklanır. Kesin pathPrefix/pathPattern belirtin ve assetlinks.json ile eşleşmeyi kontrol edin.
Yaygın hatalar
- Intent filtresinde yanlış yol (pathPrefix="/product" kullanın).
- assetlinks.json içinde packageName veya SHA256 uyuşmazlığı.
- android:autoVerify eksikliği veya sunucuda unutulmuş .well-known yolu.
- Birden fazla intent filtresi çakışması: pathPattern'i netleştirin veya priority ekleyin.
SSS
- autoVerify her zaman kullanılmalı mı?
Önerilir: autoVerify, bağlantıların uygulama içinde sorulmadan açılma olasılığını artırır. - Sadece custom şema (myapp://) bırakılabilir mi?
Dahili testler için mümkündür, ancak üretimde tarayıcı uyumluluğu için https kullanın. - assetlinks.json'un Google tarafından görülebildiğini nasıl kontrol ederim?
Erişilebilirliği URL üzerinden kontrol edin ve JSON'un doğru olduğundan emin olun; Play Store'dan kurulum sırasında sistem uygunluğu doğrular.
Bu adımları izleyerek, tarayıcıdan uygulamaya güvenilir geçişler elde edersiniz ve hedef içeriğe geçişlerdeki reddedilmeleri azaltırsınız.