hybrid-bridge-js
Version:
A JavaScript bridge for communication between Web and Native (iOS/Android)
112 lines (92 loc) • 3 kB
Markdown
English | [简体中文](./README.zh-CN.md)
A JavaScript bridge library for communication between Web and Native (iOS/Android) applications.
## Installation
```bash
yarn add hybrid-bridge-js
```
# Usage
```js
import JSBridge from 'hybrid-bridge-js';
// Call Native method
JSBridge.invoke('nativeMethod', { param: 'value' })
.then(result => {
console.log('Native result:', result);
})
.catch(error => {
console.error('Error:', error);
});
// Register H5 method for Native calls
JSBridge.register('webMethod', (data, callback) => {
console.log('Received from native:', data);
callback({ success: true });
});
```
Call a native method.
Register an H5 method for native calls.
Receive callback results from native methods.
For native to call registered H5 methods.
```js
import { onMounted } from 'vue';
import JSBridge from 'hybrid-bridge-js';
onMounted(() => {
JSBridge.register('getUser', (data, callback) => {
console.log('Native calls H5 getUser method, params:', data);
callback({
userId: 12345,
nickname: 'John',
token: 'abcd1234xyz',
});
});
});
```
```js
import { useEffect } from 'react';
import JSBridge from 'hybrid-bridge-js';
useEffect(() => {
JSBridge.register('getUser', (data, callback) => {
console.log('Native calls H5 getUser method, params:', data);
callback({
userId: 12345,
nickname: 'John',
token: 'abcd1234xyz',
});
});
}, []);
```
```swift
class WebViewController: UIViewController, WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "getAccessToken" {
let callbackId = (message.body as? [String: Any])?["callbackId"] as? String ?? ""
let accessToken = "abcdef123456"
webView.evaluateJavaScript("JSBridge.receive('\(callbackId)', '\(accessToken)')", nil)
}
}
}
```
```javs
class JSBridgeInterface {
@JavascriptInterface
public void getAccessToken(String json) {
try {
JSONObject obj = new JSONObject(json);
String callbackId = obj.getString("callbackId");
String accessToken = "abcdef123456";
String jsCode = "JSBridge.receive('" + callbackId + "', '" + accessToken + "')";
webView.post(() -> webView.evaluateJavascript(jsCode, null));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
```