Uygulamada bağlantıları açma: Kısa eylem planı
Android'de bağlantıların açılmasını yapılandırmak için iki mekanizma kullanın: Dahili senaryolar için Özel URI Şeması (myapp://...) ve genel trafik için App Links (HTTPS + autoVerify). Aşağıda somut adımlar, manifest örnekleri, Intent işleme ve test yöntemleri yer almaktadır.
App Scheme (Özel URI): Hızlı örnek ve işleme
App Scheme, bağlantı gönderenini kontrol ettiğiniz durumlar (push bildirimleri, ürün içindeki e-postalar) için tasarlanmıştır. Manifest dosyasına Activity için bir intent-filter ekleyin:
<activity android:name=".ProfileActivity">
<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"/>
</intent-filter>
</activity>
Activity içinde verileri intent'ten alın:
val uri = intent?.data
if (uri != null && uri.scheme == "myapp") {
val userId = uri.getQueryParameter("user")
// Profil ekranına geçiş: userId ile verileri yükle
}
ADB ile test:
adb shell am start -W -a android.intent.action.VIEW -d "myapp://profile?user=123" com.yourpackage
Sadece scheme kullanmayın, host belirtmeden bırakmayın — Android 12'den itibaren bu güvenilir değildir ve çakışmalara yol açabilir. Her zaman host belirtin ve mümkünse path ekleyin.
App Links (HTTPS) ve autoVerify doğrulaması
App Links, https://example.com/... bağlantılarının doğrudan uygulamada açılmasını sağlar ve Android tarafından doğrulanır. Adımlar:
- Manifest dosyasına https ve android:autoVerify="true" içeren bir intent-filter ekleyin:
<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"/>
<data android:scheme="https" android:host="example.com" android:pathPrefix="/product/"/>
</intent-filter>
- Web sitesinin sunucusunda assetlinks.json dosyasını (.well-known kök dizininde) yerleştirin:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourpackage",
"sha256_cert_fingerprints": ["14:6D:CB:..."]
}
}]
Fingerprint'i keytool ile alın:
keytool -list -v -keystore your.keystore
- Yayınlama ve kurulumdan sonra, parmak izleri ve package eşleşiyorsa uygulama otomatik olarak ilişkilendirilecektir.
Test etme: Cihazdaki terminalde veya tarayıcıda bağlantıyı açın; ayrıca durumu Settings → Apps → Opening links üzerinden veya adb ile kontrol edin:
adb shell pm get-package-restrictions com.yourpackage
Pratik öneriler ve gelişmiş özellikler
- Bildirimler için Intent.ACTION_VIEW ve gerekli URI ile PendingIntent kullanın; Jetpack mimarisinde gezinme için NavDeepLinkBuilder uygulayın.
- Çoklu Activity/yönlendirme durumunda, önce Launcher Activity'de URI'yi ayrıştırın ve doğru geçiş için NavController/resolveActivity kullanın.
- İmzalama anahtarını değiştirdiğinizde (release/stage) sha256-fingerprint'i güncelleyin.
Her iki senaryoyu da test edin: Uygulama yüklüyse bağlantı uygulamayı açar, yüklü değilse tarayıcıya (fallback) düzgün şekilde yönlendirilir.
Sık yapılan hatalar
- Açılmıyor: intent-filter host/path açısından eşleşmiyor — tam değeri kontrol edin.
- AutoVerify çalışmadı: assetlinks.json eksik veya fingerprint yanlış.
- Birden fazla uygulama aynı bağlantıyı ele geçiriyor: Benzersiz host'lar kullanın veya pathPrefix'i netleştirin.
- Parametre beklentisi: Query parametrelerini her zaman doğrulayın ve fallback mantığı ekleyin.
SSS
-
Bağlantı uygulamaya ulaşmıyorsa hata ayıklama nasıl yapılır? Intent olayları için adb logcat'i kontrol edin, URI ile adb am start komutunu çalıştırın, host'un benzersiz olduğundan ve BROWSABLE kategorisinin bulunduğundan emin olun.
-
Her zaman autoVerify="true" ayarlamak gerekir mi? Genel bağlantılar (App Links) için önerilir. Dahili şemalar için false bırakın ve Özel URI kullanın.
-
Release sonrası imzalama anahtarı değişirse ne yapılmalı? assetlinks.json içindeki sha256'yı güncelleyin ve web sitesine dağıtın; kullanıcılar için ilişkinin güncellenmesi amacıyla yeniden kurulum gerekebilir.
-
Tarayıcıya fallback nasıl sağlanır? App Link ilişkilendirilmemişse sistem bağlantıyı tarayıcıda açar. Özel URI için gönderen tarafında kontrol uygulayın ve yedek seçenek olarak bir web sayfası bağlantısı ekleyin.
Yapılandırma genellikle 2–4 saat sürer: intent-filter ekleme, kodda intent işleme ve assetlinks.json kontrolü. Doğru yapılandırma ile kullanıcı yolu kısalır, etkileşim ve elde tutma oranları artar.