Integrar con React Native Expo Go
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 Expo-Web-Browser
Client-Side
Esta dependencia provee el acceso al navegador, en este caso Custom tabs para Android. TambiƩn realiza el manejo del redireccionamiento.
Para instalarla, ejecuta el siguiente comando en tu terminal
yarn
yarn add expo-web-browser
ImplementaciĆ³n de Expo-Web-Browser
Client-Side
Para implementar la dependencia Expo-Web-Browser, sigue el ejemplo que mostramos a continuaciĆ³n.
JavaScript
import {
StatusBar
} from "expo-status-bar";
import {
StyleSheet,
Button,
View
} from "react-native";
import {
openBrowserAsync
} from "expo-web-browser";
export default function ExpoWebBrowserExample(url) {
return ( <
View style = {
styles.container
} > < Button title = "Open Browser"
onPress = {
() => openBrowserAsync('YOUR-URL-PREFERENCE')
}
/> <StatusBar style="auto" / >
<
/View> );
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
});
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 nuestro proyecto de React Native el scheme y path que componen los Deep Links que recibimos para redireccionar a alguna parte de tu aplicaciĆ³n. Para ello, agrega la siguiente configuraciĆ³n a ru archivo app.json ubicado en la raĆz de tu archivo:
JavaScript
{
"expo": {
"android": { "intentFilters": [
{
"action": "VIEW", "data": [
{
"scheme": "myapp", "host": "checkout", "pathPrefix": "/congrats"
} ],
"category": ["BROWSABLE", "DEFAULT"]
} ]
} }
}
- En este ejemplo, el deep link que se espera para redireccionar a la app es myapp://checkout/congrats
- La propiedad
pathPrefix
es opcional
En caso que el proyecto todavĆa no tenga un prebuild, se puede testear el deep link usando expo go desde la terminal de la siguiente forma:
plain
// url local del dispositivo de test
npx uri-scheme open exp://192.168.0.7:19000/--/checkout/congrats --android
// Nota: No es requerido pasar el scheme en estas pruebas
En caso de correr un prebuild de la aplicaciĆ³n, deberĆ”s verificar que el deep link para Android se haya configurado en el archivo android/app/src/main/AndroidManifest.xml
. El deep link debe estar entre las etiquetas activity.
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>
RecepciĆ³n y gestiĆ³n del Deep Link
Client-Side
Por Ćŗltimo, deberĆ”s configurar tu 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.