Inicio
DocumentaciĆ³n
Recursos
Partners
Comunidad

Recursos

Revisa las actualizaciones de nuestras soluciones y operatividad del sistema o pide soporte tƩcnico.

Partners

Conoce nuestro programa para agencias o desarrolladores que ofrecen servicios de integraciĆ³n y vendedores que quieren contratarlos.

Comunidad

Recibe las Ćŗltimas novedades, pide ayuda a otros integradores y comparte tus conocimientos.

Integrar con React Native Expo Go - iOS - Mercado Pago Developers

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.

Importante
Antes de comenzar a integrar Checkout Pro para Mobile, deberĆ”s contar con una preferencia creada en tu backend. Si aĆŗn no lo has hecho, ve a CreaciĆ³n de preferencia.

En este paso vamos a instalar y configurar las dependencias necesarias para implementar Safari View Controller en tu proyecto desarrollado en React Native.

Uso de Expo-Web-Browser

Client-Side

Esta dependencia provee el acceso al navegador, en este caso Safari View Controller para iOS. 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('https://url-to-open.com')
		}
		/> <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.

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.

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, verifica que tu archivo app.json contenga el nombre del scheme:

app.json

"expo": {
	"scheme": "myapp"
}

Al ejecutar npx expo prebuild su archivo ios/appname/Info.plist deberĆ­a contener algo similar al siguiente cĆ³digo.

info.plist

<key>CFBundleURLTypes</key>
    <array>
        <dict> <key>CFBundleURLSchemes
            </key>
            <array>
                <string>myapp</string>
                <string>com.test.TestExpoBrowser</string>
            </array>
        </dict> 
    </array>

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 iOS es necesario cerrar la Safari View Controller de manera manual. Para esto, deberĆ”s escuchar el evento de cuando cambia la url desde el componente que abre la ventana o el punto de entrada de la aplicaciĆ³n, y luego llamar el mĆ©todo para cerrar la Safari View Controller.

Uso de Expo-Web-Browser

Sigue el ejemplo a continuaciĆ³n para cerrar manualmente Safari View Controller usando Expo-Web-Browser.

JavaScript

import {
	StatusBar
} from "expo-status-bar";
import {
	StyleSheet,
	Button,
	View,
	Linking,
	Platform
} from "react-native";
import {
	openBrowserAsync
} from "expo-web-browser";
import * as WebBrowser from "expo-web-browser";
import {
	useEffect
} from "react";
export default function App() {
	useEffect(() => {
		Linking.addEventListener("url", (event) => {
			const {
				url
			} = event;
			if (url !== null && url.includes("myapp://")) {
				Platform.OS === "ios" && WebBrowser.dismissBrowser();
			}
		});
	}, []);
	const url = "https://url-to-open.com";
	return ( <
		View style = {
			styles.container
		} >
		<
		Button title = "Open Browser"
		onPress = {
			() => openBrowserAsync(url)
		}
		/> <
		StatusBar style = "auto" / > < /View>
	);
}
const styles = StyleSheet.create({
	container: {
		flex: 1,
		backgroundColor: "#fff",
		alignItems: "center",
		justifyContent: "center",
	},
});