Передать данные из webview в приложение?

Для передачи данных из компонента WebView в React Native приложение, следует использовать механизм коммуникации между JavaScript кодом веб-страницы, загруженной в WebView, и кодом React Native приложения.

Есть несколько способов реализации этой коммуникации:

1. События (Events):
Данный подход базируется на использовании событийной модели. В веб-странице, загруженной в WebView, можно создать пользовательское событие с помощью JavaScript кода:

document.dispatchEvent(new CustomEvent('dataEvent', { detail: { data: myData } }))

Затем, в React Native коде, можно подписаться на это событие и получить переданные данные:

import { WebView } from 'react-native-webview';

<WebView
  onMessage={(event) => {
    const data = event.nativeEvent.data;
    // обработка полученных данных
  }}
/>

2. postMessage:
Используя метод postMessage, можно отправить данные из веб-страницы в React Native приложение:
В веб-странице можно отправить сообщение с данными:

window.postMessage(JSON.stringify({ data: myData }));

В React Native коде, можно добавить слушатель события onMessage и получить отправленные данные:

import { WebView } from 'react-native-webview';

<WebView
  onMessage={(event) => {
    const data = JSON.parse(event.nativeEvent.data);
    // обработка полученных данных
  }}
/>

3. Использование JavaScript Injection:
Если вы контролируете содержимое веб-страницы, загружаемой в WebView, вы также можете использовать JavaScript инъекцию для вызова функций в React Native коде. В этом случае, вы можете внедрить JavaScript код, который вызывает функцию в React Native коде и передает ей данные:
В веб-странице можно вызвать функцию реализованную в React Native коде:

window.ReactNativeWebView.postMessage(JSON.stringify({ data: myData }));

В React Native коде, можно добавить слушатель события поступающих сообщений:

import { WebView } from 'react-native-webview';

<WebView
  onMessage={(event) => {
    const data = JSON.parse(event.nativeEvent.data);
    // обработка полученных данных
  }}
  // внедрение скрипта
  injectedJavaScript={`
    window.ReactNativeWebView.postMessage(JSON.stringify({ data: myData }));
  `}
/>

Важно помнить о безопасности при использовании WebView. Необходимо быть осторожными и не доверять ненадежным источникам данных. Важно проверять и фильтровать полученные данные, чтобы избежать возможности инъекции вредоносного кода в React Native приложение.