# 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. 事件监听是持久化的,只要插件处于活动状态,就会保持监听。