Integrar com React Native CLI
Durante o desenvolvimento de aplicaçÔes mĂłveis com React Native, Ă© necessĂĄrio exibir conteĂșdo web dentro de um aplicativo. Para conseguir isso, existem vĂĄrias opçÔes, entre as quais se destacam o uso de Custom Tabs (para Android) e Safari View Controller (para iOS). Essas tecnologias permitem abrir pĂĄginas da web em um navegador nativo integrado ao aplicativo, proporcionando uma experiĂȘncia de navegação mais fluida e consistente para os usuĂĄrios.
A seguir, selecione o sistema operacional para o qual vocĂȘ deseja integrar e siga o passo a passo indicado.
Nesta etapa iremos instalar e configurar as dependĂȘncias necessĂĄrias para implementar Custom Tabs em seu projeto desenvolvido em React Native.
Uso do InAppBrowser
Com o React Native CLI, recomendamos o uso do React-Native-InAppBrowser, uma dependĂȘncia altamente flexĂvel que oferece uma solução abrangente para integrar um navegador web dentro da sua aplicação React Native. Ao considerar o uso do React-Native-InAppBrowser-Reborn, os seguintes aspectos foram levados em consideração:
- Ă uma dependĂȘncia que permite fornecer uma experiĂȘncia de navegação web integrada e fluida dentro da aplicação.
- Possui uma ampla variedade de funçÔes personalizĂĄveis para se adaptar Ă s necessidades especĂficas da aplicação.
- MantĂ©m os usuĂĄrios dentro do contexto da aplicação, aumentando a retenção e a coerĂȘncia da experiĂȘncia.
Para instalĂĄ-la, execute o seguinte comando no seu terminal.
npm install react-native-inappbrowser-reborn --save
yarn add react-native-inappbrowser-reborn
Android support
Se vocĂȘ estiver usando o Android Support, seu arquivo android/build.gradle deve conter as propriedades que descrevemos abaixo. Caso alguma esteja faltando, adicione-a. As versĂ”es podem ser iguais ou superiores.
plain
buildscript { ext { buildToolsVersion = "28.0.3" minSdkVersion = 16 compileSdkVersion = 28 targetSdkVersion = 28 // Only using Android Support libraries supportLibVersion = "28.0.0" }
AndroidX
Se vocĂȘ estiver usando o Android Support, seu arquivo deverĂĄ ter essas propriedades. Caso alguma esteja faltando, adicione-a. As versĂ”es podem ser iguais ou superiores.
plain
buildscript { ext { buildToolsVersion = "30.0.2" minSdkVersion = 21 compileSdkVersion = 30 targetSdkVersion = 30 ndkVersion = "21.4.7075529" // Remove 'supportLibVersion' property and put specific versions for AndroidX libraries androidXAnnotation = "1.2.0" androidXBrowser = "1.3.0" // Put here other AndroidX dependencies }
Implementação do React-Native-Inappbrowser
Para implementar a dependĂȘncia React-Native-Inappbrowser, siga o exemplo que mostramos abaixo.
JavaScript
import { Button, Linking } from 'react-native'; import InAppBrowser from 'react-native-inappbrowser-reborn'; const ButtonCustomTabs = () => { const openUrl = async (url) => { if (await InAppBrowser.isAvailable()) { InAppBrowser.open(url, { // iOS Properties dismissButtonStyle: 'cancel', preferredBarTintColor: '#453AA4', preferredControlTintColor: 'white', readerMode: false, animated: true, modalEnabled: true, // Android Properties showTitle: true, toolbarColor: '#6200EE', secondaryToolbarColor: 'black', enableUrlBarHiding: true, enableDefaultShare: true, forceCloseOnRedirection: false, // Animation animations: { startEnter: 'slide_in_right', startExit: 'slide_out_left', endEnter: 'slide_in_left', endExit: 'slide_out_right', }, }); } else { Linking.openURL(url); } }; return ( < Button title = "Press Me" onPress = { () => openUrl('YOUR-URL-PREFERENCE') } /> ); }; export default ButtonCustomTabs;
Como retornar para sua app
Deep Links, tambĂ©m conhecidos como links diretos, sĂŁo uma forma poderosa de permitir a navegação direta para telas ou seçÔes especĂficas de uma aplicação mĂłvel.
Criar um Deep Link
A partir do nosso checkout, Ă© possĂvel configurar Deep Links para retornar ao sua aplicação, seja clicando em um link "Voltar" ou automaticamente apĂłs concluir um fluxo de pagamento bem-sucedido, redirecionando-o de volta ao sua aplicação.
Para isso, devemos adicionar as propriedades back_urls e auto_return ao criar a preferĂȘncia de pagamento, conforme necessĂĄrio.
Para saber mais, vocĂȘ pode acessar a documentação sobre URLs de retorno.
Configuração da aplicação para gerenciar o Deep Link
Para poder receber e gerenciar o Deep Link, Ă© necessĂĄrio configurar no projeto do React Native o esquema (scheme) e o caminho (path) que compĂ”em os Deep Links que vocĂȘ recebeu para redirecionar para alguma parte da sua aplicação. Para fazer isso, adicione o Deep Link no arquivo Android /app/src/main/AndroidManifest.xml entre as tags "activity".
No exemplo a seguir, vocĂȘ configurarĂĄ um Deep Link da forma myapp://checkout/congrats.
AndroidManifest.xml
<activity ....> .... <intent-filter data-generated="true"> <action android:name="android.intent.action.VIEW"/> <data android:scheme="myapp" android:host="checkout" android:pathPrefix="/congrats"/> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> .... </activity>
A propriedade pathPrefix Ă© opcional e pode ser adicionada para direcionar a uma visualização especĂfica da aplicação.
Recepção e gerenciamento de Deep Link
Por fim, veremos como configurar a aplicação React Native para receber e gerenciar os Deep Links. Isso serĂĄ abordado usando a dependĂȘncia react-native-inappbrowser.
No caso do Android, o fechamento do custom tab é feito automaticamente ao redirecionar para um Deep Link vålido. No caso em que o link não seja vålido, nenhuma ação de redirecionamento serå executada a partir do custom tab.