如何将值传递给正在加载反应本机应用程序的 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】:

您必须使用来自WebViewinjectedjavascript 属性。

例如: 首先声明一个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 视图的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iOS 传递信息以在启动时做出本机反应?

将值从 iOS 本机代码传递给 cordova

如何将值从 NSTabViewController 传递给子视图?

将本机传递参数反应给其他组件

如何将值从主屏幕小部件传递给应用程序?

如何从 Java Activity 传递数据以响应本机?