Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

278
Views
Redirigir el enlace del sitio web existente a la aplicación expo reaccionar nativo

Tengo una aplicación que tiene una zona de pruebas de pago. Estoy usando "expo-linking" Linking.openURL(sandboxURL) para abrir el enlace de pago único en un navegador cada vez que el usuario quiere comprar el producto.

Si se cancela el pago, el sandbox redirige a "https://mywebsitedomain/pago/cancel" Si el pago se realiza correctamente, el sandbox redirige a "https://mywebsitedomain/pago/successful"

Lo que quiero lograr es que el navegador redirija a la página de cancelación de pago y pago exitoso de mi aplicación siempre que se activen los enlaces "https://mywebsitedomain/payment/cancel" y "https://mywebsitedomain/payment/successful" en el navegador.

¿Cómo puedo hacer eso? Recibí sugerencias como usar enlaces profundos. en tal caso, no necesariamente necesito crear ningún enlace, solo necesito que el enlace del sitio web existente sea redirigido a mi aplicación. En ese caso, ¿cuál sería la configuración ideal?

Gracias.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

En este caso, recomendaría usar WebView en lugar de vincular, porque vincular realmente no le brinda ningún tipo de control para el flujo después de que el usuario abre una URL en el navegador, DeepLinking teóricamente funcionaría, pero abriría la aplicación desde el inicio. pantalla y luego tendría que navegar al usuario manualmente a la pantalla que desea que sea, aunque no creo que esta sea la solución adecuada ... En su lugar, sugeriría abrir una URL en Webview e inyectar el código javascript personalizado. De esta manera, mantendría al usuario en su aplicación y mantendría el control del flujo. react-native-webview que es un módulo obsoleto y debe agregarse a través del administrador de paquetes, tiene onMessage y accesorios de JavaScript injectedJavaScript , y usarlos podría resolver este problema. Como ejemplo :

  1. Cree una pantalla separada que contenga solo una vista web, estirada a pantalla completa.

  2. Importe la pantalla en su stacknavigator con el nombre apropiado.

  3. Al navegar hacia él, pase accesorios de vista web como parámetros de navegación.

Después:

 const jsCode = ` document.addEventListener("click", () => { window.ReactNativeWebView.postMessage(JSON.stringify({type: "click", message : "goBack"})) })`; const onMsg = (event) => { const res = JSON.parse(event.nativeEvent.data); if (res.message === "goBack") { navigation.goBack(); } } <WebView source={{ uri: params.uri, html: params?.html }} androidHardwareAccelerationDisabled javaScriptEnabled injectedJavaScript={jsCode} javaScriptCanOpenWindowsAutomatically collapsable onMessage={onMsg} />

este es un código de ejemplo que cierra la vista web cada vez que el usuario hace clic en algo allí, en su lugar, puede verificar window.location.href , publicarlo como un mensaje en su aplicación y si es igual a https://mywebsitedomain/payment/cancel do algo que quieras hacer :)

ACTUALIZAR

como se menciona en los comentarios, para esta tarea concreta, webview ofrece onNavigationStateChange prop, que está destinado a determinar las actualizaciones de navegación en la vista web. Esta podría ser una mejor opción, ya que algunos de los sitios web podrían no permitirle inyectar código javascript personalizado. Pero, sin embargo, la inyección de JavaScript también es posible y también sería una de las soluciones aquí. Como es un poco difícil de explicar aquí, configuré una aplicación de ejemplo aquí, que utiliza los dos enfoques descritos anteriormente: https://github.com/RocKer004/webview-example-app

La aplicación abre los documentos de navegación nativos de React, si hace clic en React Native Express (primera opción), lo llevará de regreso y cerrará la vista web (esto se maneja con el accesorio onNavigationStateChange ), si hace clic en la última opción, la vista web también va a estar cerrado, pero esta vez esto se maneja mediante la inyección de javascript. De lo contrario, eres libre de navegar por la web.

Para obtener más información, consulte: https://github.com/react-native-webview/react-native-webview

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!