myGroRN插件

myGroRN插件与原生app的交互接口


示例-RN接口实际使用示例

<pre><code>import React from 'react'; import {NativeModules, Button, View, Platform, NativeEventEmitter} from 'react-native'; // 引入原生网络模块 const RNNetworkManager = NativeModules.RNNetworkManager; // 引入原生设备模块 const RNDevice = NativeModules.RNDevice; // 引入原生日志模块 const RNLogger = NativeModules.RNLogger; // 引入原生蓝牙模块 const RNBluetooth = NativeModules.RNBluetooth; // MQTT或蓝牙数据订阅推送 const RNDeviceDataUpdater = NativeModules.RNDeviceDataUpdater; // 从原生网络模块引入授权常量 const { authorization, username, host } = RNNetworkManager.getConstants(); // 数据订阅推送 const dataUpdater = new NativeEventEmitter(NativeModules.RNDeviceDataUpdater); const APITester = ({ navigation, route }) =&amp;gt; { // 原生设备模块相关 // 访问原生网络模块引入的常量, 当前有 authorization 及 登录的username console.log('====== 网络模块引入的常量 ====== \n'); console.log(`authorization ${authorization} and uid ${username} host ${host}`); const aDeviceTest = () =&amp;gt; { // 当前是否是有网络连接 RNDevice.isCurrentedToNetwork((isCurrentedToNetwork, error) =&amp;gt; { if (error) { console.error(`当前是否是有网络连接 Error found! ${error}`); } else { console.log(`当前是否是有网络连接: ${isCurrentedToNetwork}`) } }); // 当前是否是使用WiFi网络 RNDevice.isCurrentConnectToWiFi((isCurrentConnectToWiFi, error) =&amp;gt; { if (error) { console.error(`当前是否是使用WiFi网络 Error found! ${error}`); } else { console.log(`当前是否是使用WiFi网络: ${isCurrentConnectToWiFi}`) } }); // 获取当前系统连接的WiFi名称 RNDevice.currentWiFiName((wifiName, error) =&amp;gt; { if (error) { console.error(`当前系统连接的WiFi名称 Error found! ${error}`); } else { console.log(`当前系统连接的WiFi名称: ${wifiName}`) } }); } // 原生网络模块 网络API相关 const aApiTest = async () =&amp;gt; { try { /* api 测试 设备参数接口03 postMygroServer 即为请求mygro的服务器 仅为-北美为ces.growatt.com 或者ces-eu.growatt.com 为全球其它地区, 具体选择那个服务器,原生app根据用户信息自行判断 /imqtt/app/deviceInfo 为请求的path sn': 'XCM0DCG00Q' 为请求的参数, 原生app会在此参数基础上增加lan或language,uid或userId以及Authorization字段 注意: response回调为原生非主线程 更多api请参考 便携电源api文档 http://20.6.1.98:4999/web/#/19/710 */ const response = await RNNetworkManager.postMygroServer( '/imqtt/app/deviceInfo', {'sn': 'XCM0DCG00Q'}, ); console.log('====== response ====== \n'); console.log(JSON.stringify(response, null, 4)); } catch (e) { console.log('====== error ====== \n'); console.error(e); } } /* MQTT或蓝牙数据订阅推送 此方法iOS暂未实现停止订阅推送的功能 */ const aDataUpdaterTest = () =&amp;gt; { console.log('====== mqtt推送的数据 ====== \n'); dataUpdater.addListener('SUBSCRIBE', (data) =&amp;gt; console.log(data)) RNDeviceDataUpdater.startUpdate('XCM0DCG00Q', '3') // RNDeviceDataUpdater.stopUpdate() // dataUpdater.removeEventListener('SUBSCRIBE', ''); } // 原生日志模块 示例 const aLoggerTest = () =&amp;gt; { /* 下行记录用户将 XCM0DCG00Q 设备的DC开关打开的操作 记录会在app打开的时候,由原生集中上传到服务器 更多设置项参考:http://20.6.1.98:4999/web/#/19/714 */ RNLogger.addDeviceOperateRecord('XCM0DCG00Q', 'dcSwitch', '1'); } // 原生蓝牙模块 const aBluetoothTest = () =&amp;gt; { } const onPressTestAPI = async () =&amp;gt; { Platform.OS === 'android' ? aApiTest() : aApiTest(); }; const onPressTestDevice = () =&amp;gt; { Platform.OS === 'android' ? aDeviceTest() : aDeviceTest(); }; return ( &amp;lt;View&amp;gt; &amp;lt;Button title=&amp;quot;点击发送api示例请求&amp;quot; color=&amp;quot;#841566&amp;quot; onPress={onPressTestAPI} /&amp;gt; &amp;lt;Button title=&amp;quot;点击查询设备信息&amp;quot; color=&amp;quot;#841544&amp;quot; onPress={onPressTestDevice} /&amp;gt; &amp;lt;Button title=&amp;quot;点击订阅MQTT示例&amp;quot; color=&amp;quot;#121533&amp;quot; onPress={aDataUpdaterTest} /&amp;gt; &amp;lt;Button title=&amp;quot;点击进行蓝牙连接-待实现&amp;quot; color=&amp;quot;#843433&amp;quot; onPress={onPressTestAPI} /&amp;gt; &amp;lt;/View&amp;gt; ); }; export default APITester; </code></pre>

页面列表

ITEM_HTML