如何将值传递给正在加载反应本机应用程序的 Web 视图
Posted
技术标签:
【中文标题】如何将值传递给正在加载反应本机应用程序的 Web 视图【英文标题】:how to pass values to a web view which is loading a react native app 【发布时间】:2020-11-15 19:55:26 【问题描述】:我是反应原生的新手,对 ios 使用 swift 语言非常熟悉。我的要求是在 iOS 现有应用程序中会有一个 Web 视图正在加载反应原生应用程序,这里我想使用 iOS 应用程序的一些值在本机反应。
例如,在 iOS 应用程序中会有一个授权码,我想在加载到 UIWebview 中的反应原生应用程序中使用此授权码。
override func viewDidLoad()
super.viewDidLoad()
loadReactNativeApp()
func loadReactNativeApp()
let link = "https://staging.abcdefg.com:1442/appname_web/"
let finalUrl:URL!
finalUrl = URL(string: link)
let urlRequest = URLRequest.init(url: finalUrl!)
webview.load(urlRequest)
我不知道我们如何将值传递给本机应用程序。任何人都可以帮助我解决我的问题。谢谢
【问题讨论】:
【参考方案1】:您必须使用来自WebView
的injectedjavascript
属性。
例如:
首先声明一个jsCode
变量:
const amount = 2
const jscode = `
if (document.getElementById('txtAmount') == null)
// field not existing, deal with the error
else
document.getElementById('txtAmount').value = '$amount';
`
请注意“`”字符。用于将变量放入字符串中。
然后像这样使用它:
<WebViewBridge
injectedJavaScript=jsCode
【讨论】:
实际上 WebViews 将在 iOS 本机应用程序中。我们正在向该 WebViews 传递一个暂存 url 以及一些值,如 auth token。以上是关于如何将值传递给正在加载反应本机应用程序的 Web 视图的主要内容,如果未能解决你的问题,请参考以下文章