Я занимаюсь разработкой гибридного приложения, которое использует WKWebview и React js (хуки). Мне нужно отправить идентификатор пользователя в Интернет с Ios. (Javascript -> IOS). Я пытаюсь сделать это, используя метод оценки JavaScript ().
, метод будет работать, если я поставлю моя функция в теге index. html, она не будет работать, если я добавлю ее в компонент. будет возвращена ошибка
Необязательно (Ошибка домена = Код WKErrorDomain = 4 "JavaScript произошла ошибка" UserInfo = {WKJavaScriptExceptionLineNumber = 0, WKJavaScriptExceptionMessage = TypeError: undefined не является функцией, WKJavaScriptExceptionColumnNumber = 0 , NSLocalizedDescription = JavaScript произошла ошибка})
На моей IOS стороне didFini sh навигация (WKWebviewController)
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
//success
let myJsFuncName1 = "getUserIdFromNativeOnIndexHtml('jack123')"
self.webview.evaluateJavaScript(myJsFuncName1) { (result, error) in
if let result = result{ print(result) }else{
print("error2",error)
} }
//fail
let myJsFuncName2 = "getUserIdFromNativeOnTheComponentJS('clever123')"
self.webview.evaluateJavaScript(myJsFuncName2) { (result, error) in
if let result = result{ print(result) }else{
print("error3",error)
} }
}
Javascript
в индексе. html
///this will work
<script type="text/JavaScript" charset="UTF-8">
function getUserIdFromNativeOnIndexHtml(id) {
alert('user is ' + id + '!!');
}
</script>
myCouponList. js
function MyCouponList(props) {
const classes = useStyles(props);
function getUserIdFromNativeOnTheComponentJS(id) {
alert('user is ' + id + '!!');
}
return (
<>
<header className={classes.header}>
<div className={classes.header__header_column}>
<button
type="button"
className={classes.header_backButton}
onClick={() => window.webkit.messageHandlers.goBackButton.postMessage('goBackButton')}
>
<img src="/assets/images/banto/backButton.png" alt="backButton" />
</button>{' '}
</div>{' '}
<div className={classes.header__header_column}>
<h1 className={classes.header__title}> 쿠폰 </h1>{' '}
</div>{' '}
<div className={classes.header__header_column}>
<span className={classes.header__icon}>
<i className="fas fa-search"> </i>{' '}
</span>
<span className={classes.header__icon}>
<i className="fas fa-cog"> </i>{' '}
</span>{' '}
</div>{' '}
</header>{' '}
{}....
Я хочу сохранить идентификатор пользователя в редукторе для выполнения вызова API.