jak utworzyć linki z mojej witryny, aby przekierowały do mojej aplikacji, jeśli jest zainstalowana
Co chciałbym osiągnąć
Gdy użytkownik kliknie jakikolwiek link z mojej witryny, chciałbym, aby skierował do użytkownika łącze w mojej aplikacji (jeśli jest zainstalowana). Jeśli nie jest zainstalowany, skieruj użytkownika do łącza w przeglądarce.
Przykład:
Użytkownik otrzymuje wiadomość e-mail zawierającą łącze o nazwie: www.myapp.com/someplaceinmyapp. Jeśli jest zainstalowana, przechodzi do tej strony w mojej aplikacji. Jeśli nie, przejdź do tej strony w przeglądarce.
Pamiętaj, że będzie to dotyczyło wszystkich stron w mojej aplikacji. Dotyczy to każdego linku z mojej strony internetowej.
Moje pytania
Czy jest na to jakaś konkretna nazwa? Wiem o precyzyjnych linkach i linkach do aplikacji, ale nie wiem, który z nich jest dla mnie.
Czy to w ogóle możliwe? Nie jestem nawet pewien, czy w tej chwili jest to możliwe.
Czy kod do tego będzie znajdował się na stronie internetowej czy w aplikacji? np .: Javascript lub Kotlin lub coś w pliku manifestu.
Jak mam to zrobic? To jest prawdopodobnie to, czego najbardziej potrzebuję.
Uwagi
Na mojej stronie jest coś, co wyświetla wyskakujące okienko (tylko w przeglądarce) z napisem „Użyj aplikacji”. Jeśli nie jest zainstalowany, przechodzi do sklepu Play. Jeśli jest zainstalowany, przechodzi do strony głównej mojej witryny w mojej aplikacji. Stąd dowiedziałem się, jak to zrobić, używając odpowiedzi z największą liczbą głosów (nie zaakceptowanej), więc w moim manifeście mam:
<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>
Jeśli masz coś, co chciałbyś dodać do moich pytań, z przyjemnością to dodam.
Odpowiedzi
Aby wprowadzić specyfikację Activity
lub nazwę Fragment
aplikacji z adresu URL, zalecamy użycie głębokich linków z komponentu nawigacji.
1. Dodaj głęboki link adresu URL w pliku zasobów nawigacji (z panelu Atrybuty):
<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. Dodaj atrybut nawigacji w AndroidManifest
pliku:
<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. Użyj łącza w przeglądarce internetowej lub w wiadomości tekstowej: „www.example.com/roomTest/-1”
- Aby przekazać wiele argumentów, po prostu połącz je za pomocą „&”, na przykład: „www.example.com/roomText/-1&true” (ponownie sformatuj „&” w formacie xml zgodnie z monitem).
Pomocne wideo: https://www.youtube.com/watch?v=hEJ78_KLcfA
Pomocna lektura: https://developer.android.com/guide/navigation/navigation-deep-link
Zachowanie stosu wstecznego z Deep Link: https://stackoverflow.com/a/50359375/3466808
Okazało się, że sposobem na to jest użycie asystenta App Links, który można znaleźć w android studio w menu Narzędzia -> Asystent linków aplikacji. Oto, co powinieneś zobaczyć z boku po otwarciu:

Krok 1
Kliknij „Otwórz edytor mapowania adresów URL”, a następnie dodaj mapowanie adresu URL (kliknij „+”). Na hoście umieść link do swojej strony internetowej, np:https://www.example.com. W polu Ścieżka w polu wyboru wybierz tylko „ścieżkę” i nie umieszczaj niczego w polu tekstowym.

Krok 2
Przycisk Wybierz aktywność nie działa dla Kotlin, więc oto kod, który musisz wprowadzić ręcznie.
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")
}
}
i w dodaniu onCreate handleIntent(intent)
Krok 3
Kliknij „Otwórz generator plików łączy zasobów cyfrowych”. Większość informacji będzie już wypełniona, więc możesz przejść do „Generuj plik łączy do zasobów cyfrowych”. Utwórz folder o nazwie „. Dobrze znany” w swojej witrynie, a następnie umieść w nim plik o nazwie „assetlinks.json”, wklej tam podgląd. Więc kiedy idziesz dohttps://www.yourwebsite.com/.well-known/assetlinks.jsonpowinieneś być w stanie zobaczyć plik z linkami do zasobów cyfrowych. Możesz również zobaczyć inne witryny internetowe Plik z linkami do zasobów cyfrowych. Podobnie jak w Google,https://www.google.com/.well-known/assetlinks.json.

Następnie kliknij przycisk „Połącz i zweryfikuj”. Jeśli wszystko pójdzie dobrze, pod przyciskiem powinien pojawić się komunikat:

Krok 4
Czas na testy! Śmiało i kliknij „Testuj linki do aplikacji” i wpisz adres URL ze swojej witryny. Jeśli wszystko pójdzie dobrze, nie powinieneś widzieć dialogu ujednoznaczniającego.
Lubię też przeprowadzać dalsze testy, wysyłając do siebie wiadomość e-mail zawierającą łącze.
Uwagi
Z Asystenta łączy aplikacji możesz korzystać tylko wtedy, gdy Twoja witryna korzysta z protokołu HTTPS zamiast http.
Dodałem android:launchMode="singleTask"
do mojego tagu aktywności w manifeście, co oznacza, że jeśli klikniesz link ze swojej witryny w e-mailu, otworzy się on w nowym oknie.
Mają tutaj dokument na ten temat , który zawiera wideo (pamiętaj, że używają java)
Użyj linków do aplikacji na Androida w swojej aplikacji. Jeśli zaimplementowano poprawnie, użytkownik zostanie przeniesiony bezpośrednio do określonego miejsca docelowego w aplikacji.
Więcej informacji na ten temat w tych dokumentach:
Zweryfikuj łącza aplikacji na Androida
Utwórz niejawny precyzyjny link