Files
cordova-shuto-api/README.md
T

149 lines
3.4 KiB
Markdown
Raw Normal View History

# ShutoApi Cordova Plugin
这是一个Cordova插件,用于在前端和原生代码之间进行通信,特别是提供了后台触发前端导航的功能。
## 安装
```bash
cordova plugin add /path/to/cordova-shuto-api
```
## API参考
### 方法
#### close()
关闭当前功能或视图。
```javascript
cordova.plugins.ShutoApi.close(
function() {
console.log('Close success');
},
function(error) {
console.error('Close error:', error);
}
);
```
#### getUserInfo()
获取用户信息。
```javascript
cordova.plugins.ShutoApi.getUserInfo(
function(userInfo) {
console.log('User info:', userInfo);
},
function(error) {
console.error('Get user info error:', error);
}
);
```
### 事件
#### navigate
当后台需要前端导航到指定路由时触发。
**事件数据:**
- `route`: 需要导航到的路由路径
- `params`: 导航参数(可选,对象类型)
## 事件监听示例
### 基本用法
```javascript
// 监听导航事件
cordova.plugins.ShutoApi.addEventListener('navigate', function(data) {
console.log('需要导航到:', data.route);
console.log('导航参数:', data.params);
// 在这里实现前端导航逻辑
// 例如,如果使用Vue Router:
// router.push({ path: data.route, query: data.params || {} });
// 例如,如果使用React Router:
// history.push(data.route, data.params || {});
// 例如,如果使用React Router v6:
// navigate(data.route, { state: data.params || {} });
});
```
### 移除事件监听
```javascript
// 定义事件处理函数
function handleNavigate(data) {
console.log('需要导航到:', data.route);
// 处理导航逻辑
}
// 添加事件监听
cordova.plugins.ShutoApi.addEventListener('navigate', handleNavigate);
// 移除事件监听
cordova.plugins.ShutoApi.removeEventListener('navigate', handleNavigate);
```
## 原生代码使用
### iOS
在iOS原生代码中,可以通过以下方式触发导航事件:
```objective-c
// 假设你有一个ShutoApi实例
ShutoApi* pluginInstance = [[ShutoApi alloc] init];
// 无参数调用
[pluginInstance navigateToRoute:@"/home/dashboard" parameters:nil];
// 带参数调用
NSDictionary* params = @{
@"userId": @"12345",
@"showDetails": @YES
};
[pluginInstance navigateToRoute:@"/user/profile" parameters:params];
```
### Android
在Android原生代码中,可以通过以下方式触发导航事件:
```java
// 假设你有一个ShutoApi实例
ShutoApi pluginInstance = new ShutoApi();
try {
// 无参数调用
pluginInstance.navigateToRoute("/home/dashboard", null);
// 带参数调用
JSONObject params = new JSONObject();
params.put("userId", "12345");
params.put("showDetails", true);
pluginInstance.navigateToRoute("/user/profile", params);
} catch (JSONException e) {
e.printStackTrace();
}
```
## 注意事项
1. 确保在使用事件监听之前,Cordova设备已经准备就绪。可以在`deviceready`事件后进行初始化:
```javascript
document.addEventListener('deviceready', function() {
// 在这里设置事件监听
cordova.plugins.ShutoApi.addEventListener('navigate', function(data) {
// 处理导航事件
});
}, false);
```
2. 当不再需要事件监听时,记得移除它,以避免内存泄漏。
3. 事件监听是持久化的,只要插件处于活动状态,就会保持监听。