Wie erstelle ich Links von meiner Website, um auf meine App zu verweisen, wenn sie installiert ist?
Was ich erreichen möchte
Wenn ein Benutzer auf einen Link auf meiner Website klickt, möchte ich, dass er den benutzerspezifischen Link in meiner App weiterleitet (sofern dieser installiert ist). Wenn es nicht installiert ist, weisen Sie den Benutzer an, im Browser zu verlinken.
Beispiel:
Der Benutzer erhält eine E-Mail mit einem Link namens: www.myapp.com/someplaceinmyapp. Diese Seite wird in meiner App aufgerufen, wenn sie installiert ist. Wenn nicht, gehen Sie im Browser zu dieser Seite.
Denken Sie daran, dass dies für alle Seiten in meiner App gilt. Dies gilt also für jeden Link von meiner Webseite.
Meine Fragen
Gibt es dafür einen bestimmten Namen? Ich kenne mich mit Deep Linking und App Links aus, bin mir aber nicht sicher, welches für mich ist.
Ist das überhaupt möglich? Ich bin mir nicht mal sicher, ob es im Moment möglich ist.
Wird der Code dafür im Webage oder in der App sein? Beispiel: Javascript oder Kotlin oder etwas in der Manifestdatei.
Wie mache ich das? Dies ist wahrscheinlich das, was ich am meisten brauche.
Anmerkungen
Ich habe etwas auf meiner Webseite, das ein Popup (nur im Browser) mit der Aufschrift "App verwenden" anzeigt. Wenn nicht installiert, geht es zum Play Store. Wenn installiert, geht es in meiner App auf die Homepage meiner Website. Ich habe von hier aus herausgefunden, wie es geht, indem ich die Antwort mit den meisten Stimmen (nicht der akzeptierten) verwendet habe. In meinem Manifest habe ich also:
<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>
Wenn Sie etwas haben, das Sie meinen Fragen hinzufügen möchten, würde ich es gerne hinzufügen.
Antworten
Für die Eingabe eines bestimmten Activity
oder Fragment
Ihrer App über eine URL wird die Verwendung von Deep Links aus der Navigationskomponente empfohlen.
1. Fügen Sie einen Url Deep Link in die Navigationsressourcendatei ein (im Attributfenster):
<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. Fügen Sie das Navigationsattribut in die AndroidManifest
Datei ein:
<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. Verwenden Sie den Link im Webbrowser oder in der Textnachricht: "www.example.com/roomTest/-1"
- Um mehrere Argumente zu übergeben, verbinden Sie sie einfach mit "&" wie: "www.example.com/roomText/-1&true" (formatieren Sie "&" in XML neu, wenn Sie dazu aufgefordert werden).
Hilfreiches Video: https://www.youtube.com/watch?v=hEJ78_KLcfA
Hilfreiche Lektüre: https://developer.android.com/guide/navigation/navigation-deep-link
Backstack-Verhalten von Deep Link: https://stackoverflow.com/a/50359375/3466808
Ich fand, dass der Weg, dies zu tun, die Verwendung des App Links-Assistenten war, den Sie in Android Studio unter Extras -> App Links-Assistent finden. Folgendes sollten Sie beim Öffnen auf der Seite sehen:

Schritt 1
Klicken Sie auf "URL-Zuordnungseditor öffnen" und fügen Sie dann eine URL-Zuordnung hinzu (klicken Sie auf das "+"). Fügen Sie im Host Ihren Website-Link ein, z. B.:https://www.example.com. Wählen Sie für Pfad im Auswahlfeld nur "Pfad" aus und geben Sie nichts in das Typfeld ein.

Schritt 2
Die Schaltfläche Aktivität auswählen funktioniert bei Kotlin nicht. Hier ist der Code, den Sie manuell eingeben müssen.
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")
}
}
und in Ihrem onCreate hinzufügen handleIntent(intent)
Schritt 3
Klicken Sie auf "Open Digital Asset Links File Generator". Die meisten Informationen sind bereits ausgefüllt, sodass Sie auf "Generate Digital Asset Links File" klicken können. Erstellen Sie auf Ihrer Website einen Ordner mit dem Namen ".well-bekannt", und fügen Sie dort eine Datei mit dem Namen "assetlinks.json" ein. Fügen Sie dort die Vorschau ein. Also, wenn du gehsthttps://www.yourwebsite.com/.well-known/assetlinks.jsonSie sollten in der Lage sein, die Digital Asset Links-Datei anzuzeigen. Sie können auch andere Websites anzeigen. Datei mit Links zu digitalen Assets. Wie für Google,https://www.google.com/.well-known/assetlinks.json.

Klicken Sie anschließend auf die Schaltfläche "Verknüpfen und überprüfen". Wenn alles in Ordnung ist, sollte dies unter der Schaltfläche angezeigt werden:

Schritt 4
Zeit zum Testen! Klicken Sie auf "App-Links testen" und geben Sie eine URL von Ihrer Website ein. Wenn alles gut geht, sollten Sie keinen Begriffsklärungsdialog sehen.
Ich mache auch gerne weitere Tests, indem ich mir eine E-Mail mit dem darin enthaltenen Link sende.
Anmerkungen
Sie können den App Links Assistant nur verwenden, wenn Ihre Website https anstelle von http verwendet.
Ich habe android:launchMode="singleTask"
meinem Aktivitäts-Tag im Manifest hinzugefügt. Dies bedeutet, dass wenn Sie in einer E-Mail auf einen Link von Ihrer Website klicken, dieser in einem neuen Fenster geöffnet wird.
Sie haben hier ein Dokument darüber , das ein Video enthält (denken Sie daran, dass sie Java verwenden)
Verwenden Sie Android App-Links in Ihrer App. Bei ordnungsgemäßer Implementierung wird der Benutzer direkt zum angegebenen Ziel in der App verschoben.
Weitere Informationen hierzu finden Sie in den folgenden Dokumenten:
Überprüfen Sie die Android App-Links
Erstellen Sie eine implizite Deep Link