como fazer links do meu site para direcionar ao meu aplicativo, se instalado

Dec 24 2020

O que eu gostaria de alcançar

Quando um usuário clica em qualquer link do meu site, gostaria que direcionasse o link específico do usuário no meu aplicativo (se estiver instalado). Se não estiver instalado, direcione o usuário para o link no navegador.

Exemplo:

O usuário recebe um e-mail com um link chamado: www.myapp.com/someplaceinmyapp Ele vai para essa página no meu aplicativo se estiver instalado. Caso contrário, vá para essa página no navegador.

Lembre-se de que será para todas as páginas do meu aplicativo. Portanto, isso se aplica a qualquer link da minha página da web.

Minhas perguntas

Existe um nome específico para isso? Eu sei sobre links diretos e links de aplicativos, mas não tenho certeza de qual é para mim. 

Isso é mesmo possível? Eu nem tenho certeza se isso é possível no momento. 

O código para isso estará na web ou no aplicativo? por exemplo: Javascript ou Kotlin ou algo no arquivo de manifesto.

Como eu faço isso? Provavelmente é o que mais preciso.

Notas

Tenho algo na minha página da web que mostra um pop-up (apenas no navegador) que diz "Use o aplicativo". Se não for instalado, vai para a Play Store. Se instalado, vai para a página inicial do meu site no meu aplicativo. Descobri como fazer isso daqui usando a resposta com mais votos (não a aceita), então em meu manifesto tenho:

        <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>

Se você tiver algo que gostaria de acrescentar às minhas perguntas, ficaria feliz em adicioná-lo.

Respostas

SamChen Dec 25 2020 at 02:55

Para inserir o específico Activityou Fragmentdo seu aplicativo a partir de um url, é recomendado o uso de Deep Links do Navigation Component.

1. Adicione um link profundo de URL no arquivo de recursos de navegação (no painel Atributos):

<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. Adicione o atributo de navegação no AndroidManifestarquivo:

<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. Use o link no navegador da web ou mensagem de texto: "www.example.com/roomTest/-1"

  • Para passar vários argumentos, basta conectá-los por "&" como: "www.example.com/roomText/-1&true" (reformatar "&" em xml conforme solicitado).

  • Vídeo útil: https://www.youtube.com/watch?v=hEJ78_KLcfA

  • Leitura útil: https://developer.android.com/guide/navigation/navigation-deep-link

  • Comportamento da pilha de retorno do Deep Link: https://stackoverflow.com/a/50359375/3466808

Amy Jan 06 2021 at 07:01

Descobri que a maneira de fazer isso era usando o assistente de links de aplicativos, que você pode encontrar no android studio em Ferramentas -> assistente de links de aplicativos. Isso é o que você deve ver na lateral depois de abri-lo:

Passo 1

Clique em "Abrir editor de mapeamento de URL" e, em seguida, adicione um mapeamento de URL (clique no botão "+"). No host, coloque o link do seu site, por exemplo:https://www.example.com. Para Caminho, na caixa de seleção, selecione apenas "caminho" e não coloque nada na caixa de tipo.

Passo 2

O botão Selecionar atividade não funciona para Kotlin, então aqui está o código que você precisa inserir manualmente.

    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")
    }
}

e em seu onCreate adicionar handleIntent(intent)

etapa 3

Clique em "Abrir gerador de arquivos de links de ativos digitais". A maior parte das informações já estará preenchida, então você pode clicar em "Gerar Arquivo de Links de Ativos Digitais". Faça uma pasta chamada ".well-known" no seu site e coloque um arquivo chamado "assetlinks.json", cole a visualização lá. Então, quando você vai parahttps://www.yourwebsite.com/.well-known/assetlinks.jsonvocê deve conseguir ver o arquivo de links de ativos digitais. Você também pode ver outros sites Arquivo de links de ativos digitais. Como para o google,https://www.google.com/.well-known/assetlinks.json.

Em seguida, clique no botão "Vincular e verificar". Se tudo correr bem, você deverá ver isso abaixo do botão:

Passo 4

É hora de testar! Vá em frente e clique em "Testar links de aplicativos" e insira uma URL do seu site. Se tudo correr bem, você não deverá ver um diálogo de desambiguação.

Também gosto de fazer mais testes enviando um e-mail para mim mesmo com o link.

Notas

Você só pode usar o App Links Assistant se o seu site estiver usando https em vez de http.

Eu adicionei android:launchMode="singleTask"minha tag de atividade no manifesto, isso significa que se você clicar em um link do seu site em um e-mail, ele será aberto em uma nova janela.

Eles têm um doc sobre este aqui , que inclui um vídeo (Tenha em mente que eles estão usando java)

AlphaOne Dec 24 2020 at 10:43

Use links de aplicativos Android em seu aplicativo. Se implementado corretamente, o usuário será movido diretamente para o destino especificado no aplicativo.

Mais informações sobre isso nestes documentos:

Verificar Android App Links

Crie um link direto implícito