Deep Link Handler

Nesta seção, você encontra a descrição da classe DeepLinkHandler e detalhes dos métodos que ele implementa.

Introdução

O DeepLinkHandler é uma interface que define como configurar a navegação entre uma tela Server-Driven e uma tela nativa.

Exemplo

Criando um DeepLinkHandler

Para realizar essa configuração, você deve criar uma classe que implemente a interface DeepLinkHandler e que faça a anotação com @BeagleComponent, conforme listado abaixo:

@BeagleComponent
class AppDeepLinkHandler : DeepLinkHandler {
    override fun getDeepLinkIntent(
        rootView: RootView,
        path: String,
        data: Map<String, String>?,
        shouldResetApplication: Boolean
    ) = Intent(path)
}

No método getDeepLinkIntent, você consegue configurar a navegação de telas de fluxos server driven ui para suas telas nativas, fazendo com que e o beagle reconheça a sua regra.

AtributoTipoDefinição
rootViewRootViewRootView tem a referência da activity ou fragment
pathStringParâmetro de rota que pode ser definido via Navigate.OpenNativeRoute(route: “navigate.myview”)
dataMap<String, String>?Mapa de parâmetros que pode ser definido via OpenNativeRoute(route = “navigate.myview” , data = mapOf(“param1” to “paramValue”))
shouldResetApplicationBooleanAbre uma tela com a rota informada a partir de um novo fluxo e limpa a pilha de telas de todo o aplicativo.

Feito isso, é necessário modificar o arquivo de manifesto do Android:

  1. Passo 1: Você deve adicionar um intent-filter na Activity para a qual deseja navegar.
  2. Passo 2: Você deve adicionar uma Action que identificará essa Activity. O nome que usamos aqui foi "navigate.myview".
  3. Passo 3: Adicione uma tag category e a nomeie como "android.intent.category.DEFAULT", assim como no exemplo abaixo.
//AndroidManifest
<activity android:name=".activities.DeepLinkActivity">
    <intent-filter>
        <action android:name="navigate.myview"/>
        <category android:name="android.intent.category.DEFAULT"/>

    </intent-filter>
</activity>

Agora você só precisa chamar a Action Navigate com o método OpenNativeRoute como o exemplo abaixo:

//Widget used to navigate to a native screen
Button(
    text = "Click to navigate!",
    onPress = listOf(
        Navigate.OpenNativeRoute("navigate.myview")
    )
)

Última modificação 11/02/2021: create content (#298) (43225e15)