Integrar con React Native CLI
En el desarrollo de aplicaciones mĂłviles con React Native, a menudo surge la necesidad de mostrar contenido web dentro de la aplicaciĂłn. Para lograr esto, existen varias opciones, entre las cuales se destacan el uso de Custom Tabs (para Android) y Safari View Controller (para iOS). Estas tecnologĂas permiten abrir pĂĄginas web en un navegador nativo integrado en la aplicaciĂłn, brindando una experiencia de navegaciĂłn mĂĄs fluida y coherente para los usuarios.
En este paso vamos a instalar y configurar las dependencias necesarias para implementar Custom Tabs en tu proyecto desarrollado en React Native.
Uso de InAppBrowser
Client-Side
Con React Native CLI, te sugerimos usar React-Native-InAppBrowser, una dependencia altamente flexible que brinda una soluciĂłn integral para integrar un navegador web dentro de tu aplicaciĂłn de React Native. Al considerar el uso de React-Native-InAppBrowser-Reborn se tuvieron en cuenta los siguientes aspectos:
- Es una dependencia que permite brindar una experiencia de navegaciĂłn web integrada y fluida dentro de la aplicaciĂłn.
- Cuenta con una gran variedad de funciones personalizables para adaptarse a las necesidades especĂficas de la aplicaciĂłn.
- Mantiene a los usuarios dentro del contexto de la aplicaciĂłn aumentando la retenciĂłn y la coherencia de la experiencia.
Para instalarla, ejecuta el siguiente comando en tu terminal.
npm install react-native-inappbrowser-reborn --save
yarn add react-native-inappbrowser-reborn
Android support
Si utilizas Android Support, tu archivo android/build.gradle deberĂa tener las propiedades que describimos a continuaciĂłn. En caso de faltar alguna, agrĂ©gala. Las versiones pueden ser iguales o superiores.
plain
buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
// Only using Android Support libraries
supportLibVersion = "28.0.0"
}
AndroidX
Si utilizas AndroidX, tu archivo deberĂa tener estas propiedades. En caso de faltar alguna, agrĂ©gala. Las versiones pueden ser iguales o 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
}
ImplementaciĂłn de React-Native-Inappbrowser
Client-Side
Para implementar la dependencia React-Native-Inappbrowser, sigue el ejemplo que mostramos a continuaciĂłn.
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;
CĂłmo volver a tu App
Client-Side
Los Deep Links, tambiĂ©n conocidos como enlaces profundos, son una forma poderosa de permitir la navegaciĂłn directa a pantallas o secciones especĂficas de una aplicaciĂłn mĂłvil.
Crear un Deep Link
Desde nuestro checkout es posible configurar Deep Links para volver a tu aplicaciĂłn, ya sea haciendo click en un link de âVolverâ, o de forma automĂĄtica al terminar todo un flujo de pago exitoso, para luego ser redirigido a tu App.
Para esto debemos agregar en la creaciĂłn de la preferencia de pago las propiedades back_urls
y auto_return
segĂșn corresponda.
Para conocer mĂĄs, puedes acceder a la documentaciĂłn de URLs de retorno.
ConfiguraciĂłn de la aplicaciĂłn para la gestiĂłn del Deep Link
Client-Side
Para poder recibir y gestionar el Deep Link es necesario configurar en el proyecto de React Native el scheme y path que componen los Deep Links que recibiste para redireccionar a alguna parte de tu aplicaciĂłn. Para ello, agrega el deep link en el archivo android /app/src/main/AndroidManifest.xml entre las etiquetas "activity".
En el ejemplo que te mostramos a continuaciĂłn, configurarĂĄs un Deep Link de la 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>
La propiedad pathPrefix
es opcional y puede ser agregada para dirigir una vista especĂfica de la aplicaciĂłn.
RecepciĂłn y gestiĂłn del Deep Link
Client-Side
Por Ășltimo, veremos cĂłmo podemos configurar nuestra aplicaciĂłn de React Native para recibir y gestionar los Deep Links. Esto se abordarĂĄ usando la dependencia react-native-inappbrowser.
En el caso de Android, el cierre del custom tab se hace de manera automĂĄtica al momento de redireccionar a un Deep Link vĂĄlido. En que caso que el link no sea vĂĄlido, no se ejecutarĂĄ ninguna acciĂłn de redireccionamiento desde el custom tab.