Inicio
Documentação
Recursos
Parcerias
Comunidade

Parcerias

Conheça nosso programa para agĂȘncias ou desenvolvedores que oferecem serviços de integração e vendedores que desejam contratĂĄ-los.

Comunidade

Fique por dentro das Ășltimas novidades, peça ajuda a outros integradores e compartilhe seu conhecimento.

Integrar com React Native CLI - iOS - Mercado Pago Developers

Busca inteligente powered by OpenAI 

Integrar com React Native CLI

No desenvolvimento de aplicaçÔes mĂłveis, muitas vezes surge a necessidade de exibir conteĂșdo da web dentro da aplicação. Para isso, existem diversas opçÔes, entre as quais se destacam a utilização de Custom Tabs (para Android) e Safari View Controller (para iOS). Essas tecnologias permitem que pĂĄginas da web sejam abertas em um navegador nativo incorporado ĂĄ aplicação, proporcionando uma experiĂȘncia de navegação mais suave e consistente aos usuĂĄrios.

Importante
Antes de começar a integrar o Checkout Pro para Mobile, vocĂȘ precisarĂĄ ter uma preferĂȘncia criada em seu backend. Se ainda nĂŁo o fez, vĂĄ para Criação de preferĂȘncia.

Nesta etapa iremos instalar e configurar as dependĂȘncias necessĂĄrias para implementar o Safari View Controller em seu projeto desenvolvido em React Native.

Uso de InAppBrowser

Client-Side

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 oferecer uma experiĂȘncia de navegação web integrada e fluĂ­da 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

        

Em seguida, execute o seguinte comando para instalar a dependĂȘncia.

plain

cd ios && pod install && cd ..

Implementação do React-Native-Inappbrowser

Client-Side

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('https://url-to-open.com')
			}
			/> );
		};
		export default ButtonCustomTabs;

h2

Client-Side

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.

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.

Client-Side

Para receber e gerenciar o Deep Link, vocĂȘ deve configurar no seu projeto 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, no Xcode, vĂĄ para as informaçÔes do seu projeto e adicione um novo "URL Types".

xcode-paso1

Insira o identificador da sua aplicação e os Esquemas de URL do Deep Link.

xcode-paso2

Isso gerarĂĄ o seguinte cĂłdigo no arquivo ios/appname/Info.plist:

info.plist

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

Adicione o seguinte cĂłdigo ao arquivo ios/appname/AppDelegate.mm

AppDelegate.mm

// iOS 9.x or newer
#import < React / RCTLinkingManager.h >
	-(BOOL) application: (UIApplication * ) application
openURL: (NSURL * ) url options: (NSDictionary < UIApplicationOpenURLOptionsKey, id > * ) options {
	return [RCTLinkingManager application: application openURL: url options: options];
}

Client-Side

Por fim, veremos como podemos configurar nossa aplicação React Native para receber e gerenciar Deep Links. Isso serĂĄ resolvido usando a dependĂȘncia react-native-inappbrowser.

No caso do iOS Ă© necessĂĄrio fechar o Safari View Controller manualmente. Para fazer isso, vocĂȘ precisarĂĄ ouvir o evento de alteração de URL do componente que abre a janela ou o ponto de entrada da aplicação e, em seguida, chamar o mĂ©todo para fechar o Safari View Controller.

Uso do react-native-inappbrowser-reborn

Siga o exemplo abaixo para fechar o Safari View Controller manualmente usando react-native-inappbrowser-reborn.

JavaScript

import {
	useEffect
} from 'react';
import React from 'react';
import MainStack from './navigation/MainStack';
import {
	Linking
} from 'react-native';
import InAppBrowser from 'react-native-inappbrowser-reborn';
import * as RootNavigation from './RootNavigation';

function App(): JSX.Element {
	useEffect(() => {
		Linking.addEventListener('url', event => {
			const {
				url
			} = event;
			if (url !== null && url.includes('myapp://')) {
				InAppBrowser.close();
				RootNavigation.navigate('Congrats');
			}
		});
	}, []);
	return <MainStack / > ;
}
export default App;