如何实现App调用JavaScript代码?

在移动应用开发中,有时需要从原生代码(如iOS或Android)调用JavaScript代码,这种交互通常用于混合应用开发,例如使用React Native、Flutter等框架时,下面以iOS和Android为例,详细描述如何实现这一过程。

iOS 调用 JavaScript

app 调用 js

使用 WKWebView

WKWebView 是 iOS 上一个强大的 Web 视图组件,它允许你在原生应用中嵌入网页内容,并且可以与 JavaScript 进行交互。

步骤:

1、创建 WKWebView:

   import WebKit
   class ViewController: UIViewController, WKScriptMessageHandler {
       var webView: WKWebView!
       override func loadView() {
           let webConfiguration = WKWebViewConfiguration()
           webView = WKWebView(frame: .zero, configuration: webConfiguration)
           webView.navigationDelegate = self
           view = webView
       }
       override func viewDidLoad() {
           super.viewDidLoad()
           let url = URL(string: "https://example.com")!
           webView.load(URLRequest(url: url))
           webView.configuration.userContentController.add(self, name: "nativeToJS")
       }
   }

2、实现 WKScriptMessageHandler:

   extension ViewController: WKScriptMessageHandler {
       func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
           // Handle the incoming message from JavaScript here
       }
   }

3、在 JavaScript 中调用原生代码:

   // In your HTML/JavaScript file
   window.webkit.messageHandlers.nativeToJS.postMessage("Hello from JavaScript");

4、从 Swift 向 JavaScript 发送消息:

app 调用 js

   func sendMessageToJS(message: String) {
       webView.evaluateJavaScript("receiveMessageFromNative('(message)')") { (result, error) in
           if let error = error {
               print("Error: (error.localizedDescription)")
           } else {
               print("Message sent to JavaScript successfully")
           }
       }
   }

5、在 JavaScript 中接收消息:

   // In your HTML/JavaScript file
   function receiveMessageFromNative(message) {
       console.log("Message from native: " + message);
   }

Android 调用 JavaScript

使用 WebView

在 Android 上,可以使用WebView 组件来加载网页并与 JavaScript 进行交互。

步骤:

1、创建 WebView:

   import android.os.Bundle;
   import android.webkit.JavascriptInterface;
   import android.webkit.WebSettings;
   import android.webkit.WebView;
   import androidx.appcompat.app.AppCompatActivity;
   public class MainActivity extends AppCompatActivity {
       private WebView myWebView;
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           myWebView = findViewById(R.id.webview);
           myWebView.getSettings().setJavaScriptEnabled(true); // Enable JavaScript
           myWebView.addJavascriptInterface(new WebAppInterface(), "Android"); // Add interface
           myWebView.loadUrl("file:///android_asset/www/index.html"); // Load local HTML file
       }
   }

2、创建 JavaScript 接口:

app 调用 js

   public class WebAppInterface {
       @JavascriptInterface
       public void showToast(String message) {
           Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
       }
   }

3、在 JavaScript 中调用原生代码:

   // In your HTML/JavaScript file
   function callNativeFunction() {
       Android.showToast("Hello from JavaScript");
   }

4、从 Java 向 JavaScript 发送消息:

   @JavascriptInterface
   public void sendMessageToJS(String message) {
       myWebView.loadUrl("javascript:receiveMessageFromNative('" + message + "')");
   }

5、在 JavaScript 中接收消息:

   // In your HTML/JavaScript file
   function receiveMessageFromNative(message) {
       console.log("Message from native: " + message);
   }

通过以上步骤,你可以在 iOS 和 Android 平台上实现原生代码与 JavaScript 之间的相互调用,这种方法非常适用于混合应用开发,能够充分利用原生功能和 Web 技术的优势。

小伙伴们,上文介绍了“app 调用 js”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/711552.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-12-07 01:51
Next 2024-12-07 01:55

相关推荐

  • 如何在Android开发中使用Handler实现异步更新UI?

    Android开发教程之Handler异步更新UI在Android开发中,我们经常需要在子线程中执行一些耗时操作(如网络请求、文件读写等),然后在主线程中更新UI,为了实现这种跨线程的通信,Android提供了Handler机制,本文将详细介绍如何使用Handler进行异步更新UI,并通过一个具体的实例来演示其……

    2024-11-03
    05
  • 安卓群发短信怎么发

    在当前的信息化社会,手机已经成为我们生活中不可或缺的一部分,而手机中的短信功能,更是我们日常生活中常用的通讯方式之一,尤其是对于安卓手机用户来说,群发短信功能更是方便快捷,可以帮助我们在需要的时候,一次性向多个联系人发送信息,如何在安卓手机上进行群发短信呢?下面就为大家详细介绍一下。我们需要打开手机的短信应用,在大多数安卓手机上,短信……

    2023-11-29
    0202
  • 如何在Android中通过开启新线程来实现电子广告牌项目?

    Android开启新线程实现电子广告牌项目一、项目概述电子广告牌是一种常见的展示方式,通过循环播放图片和相应的文字说明,吸引用户的注意力,在Android平台上,可以通过多线程技术来实现这一功能,本文将详细介绍如何使用新线程实现一个动态电子广告牌项目,二、项目需求1、界面布局:包含一个ImageView用于显示……

    2024-11-03
    09
  • 探究iOS模拟器:常见的模拟器及其特点

    iOS模拟器是开发者在开发过程中不可或缺的工具之一,它们可以模拟真实的iOS设备环境,帮助开发者测试和调试应用程序,在本文中,我们将探究一些常见的iOS模拟器及其特点。1. Xcode模拟器Xcode是苹果公司官方提供的集成开发环境(IDE),其中包含了一个内置的iOS模拟器,它是最常用的iOS模拟器之一,因为它与Xcode紧密集成,……

    2023-11-13
    0175
  • java和javascript哪个简单(java和javascript哪个好)

    Java和JavaScript各有优势,但通常认为JavaScript入门更简单。

    2024-02-11
    0217
  • 初识Android系统之AOSP

    AOSP是Android Open Source Project的缩写,是Android系统的开源代码库。它是Google官方提供的Android系统源代码,包含了Android系统的所有组件和工具,开发者可以在AOSP上进行二次开发,定制自己的Android系统 。

    2024-01-04
    0372

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入