Введение
Работа над этим обменом сообщениями между ReactNative и WebView и onMessage, по-видимому, не очень стабильна в IOS.
Однако на Android он работает просто отлично.
Я пробовал кучу разных пакетов, но в конечном итоге сделал это с нуля, и у меня даже не получается использовать самый простой вариант использования.
Задача
Что работает, а что нет?
- Android: отправка и получение работает нормально
- IOS: отправка в WebView работает, получение от не
Визуальные результаты
![enter image description here](https://i.stack.imgur.com/KDvPc.png)
Как видно на скриншотах на IOS, всякий раз, когда я пытаюсь отправить сообщение с содержимым веб-просмотра в RN, выдается странная ошибка, говорящая «Актив не найден» .
Код
App.js
...
handleButtonPressed = () => {
this.webview.postMessage("Hello from RN")
}
onMessage = (event) => {
alert(event.nativeEvent.data)
}
render () {
return (
<View style={styles.container}>
<View
style={styles.webView}
>
<WebView
ref={r => this.webview = r}
source={html}
onMessage={this.onMessage}
/>
</View>
<Button
onPress={this.handleButtonPressed}
title='Press me'
/>
</View>
)
}
...
javascript импортируемого html (не унифицированного)
Этот код скомпилирован с использованием webpack & babel, но это точно не вызывает проблемы.
const button = document.getElementById('send')
document.addEventListener('message', function(data) {
alert(data.data)
})
button.addEventListener('click', () => {
window.postMessage("Sending data from WebView", "*")
})
Ошибка с выставки
[21:19:09] Error: invalid asset file path: `${filePath}
[21:19:09] at Object.parse (/Users/jimvercoelen/Desktop/braintree-payment/node_modules/metro/src/node-haste/lib/AssetPaths.js:66:11)
[21:19:09] at /Users/jimvercoelen/Desktop/braintree-payment/node_modules/metro/src/Assets.js:312:34
[21:19:09] at Generator.next (<anonymous>)
[21:19:09] at step (/Users/jimvercoelen/Desktop/braintree-payment/node_modules/metro/src/Assets.js:326:347)
[21:19:09] at /Users/jimvercoelen/Desktop/braintree-payment/node_modules/metro/src/Assets.js:326:577
[21:19:09] at new Promise (<anonymous>)
[21:19:09] at /Users/jimvercoelen/Desktop/braintree-payment/node_modules/metro/src/Assets.js:326:258
[21:19:09] at getAsset (/Users/jimvercoelen/Desktop/braintree-payment/node_modules/metro/src/Assets.js:326:58)
[21:19:09] at /Users/jimvercoelen/Desktop/braintree-payment/node_modules/metro/src/Server.js:576:1722
[21:19:09] at Generator.next (<anonymous>)
Deps
Я потерял счет того, что я пробовал, а что нет, но сейчас я не знаю, что попробовать, потому что не могу найти никаких подобных проблем.
Любая помощь / вклад приветствуется.
Спасибо!