jak utworzyć linki z mojej witryny, aby przekierowały do ​​mojej aplikacji, jeśli jest zainstalowana

Dec 24 2020

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

SamChen Dec 25 2020 at 02:55

Aby wprowadzić specyfikację Activitylub nazwę Fragmentaplikacji 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 AndroidManifestpliku:

<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

Amy Jan 06 2021 at 07:01

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)

AlphaOne Dec 24 2020 at 10:43

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