bd0ed35830
实现ShutoApi Cordova插件的基础功能,包括: - 添加.gitignore忽略.history目录 - 创建package.json定义插件基本信息 - 编写plugin.xml配置插件 - 实现前端JavaScript接口 - 添加Android和iOS原生实现 - 编写README文档说明使用方法
149 lines
3.4 KiB
Markdown
149 lines
3.4 KiB
Markdown
# 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. 事件监听是持久化的,只要插件处于活动状态,就会保持监听。
|