IOS和Android在与js交互的差别,算法+分布式+微服务
在iOS和Android与JavaScript交互时,主要的差别在于两个平台提供的桥接方式不同。iOS主要通过WKWebView
与JavaScript交互,而Android则通过WebView
及其相关类进行。
在iOS中,你可以通过WKScriptMessageHandler
协议来接收JavaScript发送的消息,并且可以使用WKUserContentController
来添加用于接收消息的JavaScript处理函数。
在Android中,你可以通过WebChromeClient
或WebViewClient
的相关方法来接收JavaScript发送的消息,并且可以使用addJavascriptInterface
方法将一个Java对象绑定到JavaScript的全局变量上,从而允许JavaScript调用Java对象的方法。
以下是一个简单的例子,展示了如何在iOS和Android中发送和接收消息:
iOS (Swift):
import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
var webView: WKWebView?
override func viewDidLoad() {
super.viewDidLoad()
let config = WKWebViewConfiguration()
let contentController = WKUserContentController()
contentController.add(self, name: "observeMessage")
config.userContentController = contentController
webView = WKWebView(frame: view.bounds, configuration: config)
view.addSubview(webView!)
let url = URL(string: "https://yourwebsite.com")
let request = URLRequest(url: url!)
webView?.load(request)
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("Received message from JS: \(message.body)")
}
}
Android (Java):
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void observeMessage(String message) {
// Handle message received from JS
System.out.println("Received message from JS: " + message);
}
评论已关闭