yüklüyse uygulamama yönlendirmek için web sitemden nasıl bağlantılar oluşturulur
Ne elde etmek isterdim
Bir kullanıcı web sitemdeki herhangi bir bağlantıyı tıkladığında, uygulamamdaki kullanıcıya özel bağlantıyı yönlendirmesini istiyorum (yüklüyse). Yüklü değilse, kullanıcıyı tarayıcıya bağlanmaya yönlendirin.
Misal:
Kullanıcı, içinde www.myapp.com/someplaceinmyapp adlı bir bağlantı içeren bir e-posta alır. Yüklüyse uygulamamdaki o sayfaya gider. Değilse, tarayıcıda o sayfaya gidin.
Bunun uygulamamdaki tüm sayfalar için olacağını unutmayın. Bu, web sayfamdaki herhangi bir bağlantı için geçerlidir.
Sorularım
Bunun belirli bir adı var mı? Derin bağlantı ve uygulama bağlantılarını biliyorum, ancak hangisinin benim için olduğundan emin değilim.
Bu mümkün mü? Şu anda mümkün olup olmadığından bile emin değilim.
Bunun kodu web sayfasında mı yoksa uygulamada mı olacak? örneğin: Javascript veya Kotlin veya manifest dosyasındaki bir şey.
Bunu nasıl yaparım? Muhtemelen en çok ihtiyacım olan şey bu.
Notlar
Web sayfamda "Uygulamayı kullan" yazan bir açılır pencere (yalnızca tarayıcıda) gösteren bir şey var. Yüklenmemişse oyun mağazasına gider. Yüklenirse, uygulamamdaki web sitemin ana sayfasına gider. En çok oyu alan cevabı (kabul edileni değil) kullanarak buradan nasıl yapacağımı buldum , bu yüzden manifestimde:
<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="http"
android:host="www.myapp.com"
android:pathPrefix="/install.html" />
</intent-filter>
Sorularıma eklemek istediğiniz herhangi bir şey varsa, memnuniyetle eklerim.
Yanıtlar
Specifc girmek için Activity
veya Fragment
kullanarak, bir url uygulamanızın Derin Bağlantılar Navigasyon Bileşeni dan önerilir.
1. Gezinme kaynak dosyasına bir URL Derin Bağlantısı ekleyin (Nitelikler panelinden):
<fragment
android:id="@+id/studentEditorFragment"
android:name="com.example.roomtest.studentEditor.StudentEditorFragment"
android:label="StudentEditorFragment"
tools:layout="@layout/fragment_student_editor">
<argument
android:name="studentId"
app:argType="long" />
<deepLink
android:id="@+id/deepLink"
app:uri="www.example.com/roomTest/{studentId}" /> //here, company domain name followed by application path or argument
</fragment>
2. AndroidManifest
Dosyaya Gezinme özelliğini ekleyin :
<activity android:name=".MainActivity"> //【inside the "<activity>" tag】
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<nav-graph android:value="@navigation/navigation" /> //here
</activity>
3. Bağlantıyı web tarayıcısında veya kısa mesajda kullanın: "www.example.com/roomTest/-1"
- Birden çok bağımsız değişkeni iletmek için, bunları "&" şeklinde bağlayın: "www.example.com/roomText/-1&true" (istendiği gibi xml'de "&" yeniden biçimlendirin).
Yararlı video: https://www.youtube.com/watch?v=hEJ78_KLcfA
Faydalı okuma: https://developer.android.com/guide/navigation/navigation-deep-link
Deep Link'ten geri yığın davranışı: https://stackoverflow.com/a/50359375/3466808
Bunu yapmanın yolunun, android stüdyosunda Araçlar -> Uygulama Bağlantıları asistanı altında bulabileceğiniz Uygulama Bağlantıları yardımcısını kullanmak olduğunu buldum. Açtığınızda yan tarafta görmeniz gereken şey bu:

Aşama 1
"URL Eşleme Düzenleyicisini Aç" ı tıklayın, ardından bir URL eşlemesi ekleyin ("+" işaretini tıklayın). Ana bilgisayarda, web sitenizin bağlantısını koyun, örneğin:https://www.example.com. Yol için, seçim kutusunda sadece "yol" u seçin ve yazım kutusuna hiçbir şey koymayın.

Adım 2
Aktivite Seç düğmesi Kotlin için çalışmaz, bu yüzden manuel olarak girmeniz gereken kod burada.
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleIntent(intent)
}
private fun handleIntent(intent: Intent) {
val wbWebView = findViewById<View>(R.id.your_webview) as WebView
val appLinkAction = intent.action
val appLinkData = intent.data
if (Intent.ACTION_VIEW == appLinkAction && appLinkData != null) {
wbWebView.loadUrl(appLinkData.toString())
} else {
// default link that it goes to when opening app
wbWebView.loadUrl("https://www.example.com")
}
}
ve onCreate eklentinizde handleIntent(intent)
Aşama 3
"Dijital Varlık Bağlantıları Dosya Oluşturucusunu Aç" ı tıklayın. Bilgilerin çoğu halihazırda doldurulmuş olacaktır, bu nedenle "Dijital Varlık Bağlantıları Dosyası Oluştur" seçeneğine tıklayabilirsiniz. Web sitenizde ".well-known" adlı bir klasör oluşturun ve oraya "assetlinks.json" adlı bir dosya koyun, önizlemeyi buraya yapıştırın. Öyleyse gittiğinizdehttps://www.yourwebsite.com/.well-known/assetlinks.jsonDijital varlık bağlantıları dosyasını görebilmeniz gerekir. Ayrıca diğer web sitelerinin Dijital varlık bağlantıları dosyasını da görebilirsiniz. Google için olduğu gibi,https://www.google.com/.well-known/assetlinks.json.

Ardından, "Bağla ve Doğrula" düğmesini tıklamaya devam edin. Her şey yolunda giderse, düğmenin altında şunu görmelisiniz:

4. adım
Test zamanı! Devam edin ve "Uygulama bağlantılarını test et" i tıklayın ve web sitenizden bir URL girin. Her şey yolunda giderse, bir netleştirme diyaloğu görmemelisiniz.
Ayrıca kendime içinde bağlantı bulunan bir e-posta göndererek daha fazla test yapmayı seviyorum.
Notlar
Uygulama Bağlantıları Asistanını yalnızca web siteniz http yerine https kullanıyorsa kullanabilirsiniz.
android:launchMode="singleTask"
Manifest'teki etkinlik etiketime ekledim , bu, web sitenizden bir e-postadaki bir bağlantıya tıklarsanız yeni bir pencerede açılacağı anlamına gelir.
Burada bununla ilgili bir video içeren bir dokümanları var (Java kullandıklarını unutmayın)
Uygulamanızda Android Uygulama bağlantılarını kullanın. Doğru şekilde uygulanırsa, kullanıcı doğrudan uygulamada belirtilen hedefe taşınacaktır.
Bu belgelerde bununla ilgili daha fazla bilgi:
Android Uygulama Bağlantılarını Doğrulayın
Örtülü bir derin bağlantı oluşturun