如何在React Native中实现AWS物联网(设备)



我正在尝试使用React Native实现AWS IoT(设备(。

我用过包裹,

1( aws-iot设备sdk-js

2( react原生aws-iot设备阴影

在使用包时出现了很多错误。我可以调试一些,但没有得到预期的结果。

我正在为聊天应用程序实施AWS物联网。

我正在使用RESTAPI成功创建一个物联网会话,并将其作为响应iotEndpoint, region, accessKey, secretKey, sessionToken。但是使用这些凭据,我无法使用上述软件包连接

我想明白了,

步骤1:安装aws-iotnpm包npm install --save aws-sdk aws-iot-device-sdk

步骤2:安装nodeifynpm install --save-dev rn-nodeify

步骤3:运行此命令安装指定的系列软件包

npx rn-nodeify --install "fs,util,path,tls,stream,buffer,global,process" --hack

"请等待,直到安装完所有程序包">

步骤4:转到scripts部分的package.json->添加,

"postinstall": "rn-nodeify --install fs,util,path,tls,stream,buffer,global,process --hack"

步骤5:安装异步存储npm install --save asyncstorage-down

步骤6:rn nodeify将在react本机项目的根部分自动生成一个文件shim.js。只需将其导入index.js文件中,如import './shim'

最后,您可以使用aws-iot软件包了!!!

建议在后台使用REST API生成上面问题中指定的iot-session密钥。

我已经阅读了这篇文章和聊天日志,但无法找到解决这个问题的方法,我似乎也有。我已经遵循了Ron在这里描述的所有步骤,但我得到了一个filesys.existsSync不是函数错误。我在index.js中包含了shim import作为第一行代码。与AWS通信的代码如下。

/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow
* @lint-ignore-every XPLATJSCOPYRIGHT1
*/
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import AwsIot from 'aws-iot-device-sdk'
const instructions = Platform.select({
ios: 'Press Cmd+R to reload,n' + 'Cmd+D or shake for dev menu',
android:
'Double tap R on your keyboard to reload,n' +
'Shake or press menu button for dev menu',
});
type Props = {};
export default class App extends Component<Props> {
constructor(props){
super(props)
this.connectToIoT()
}
connectToIoT(){
var device = AwsIot.device({
keyPath: './cert/mykey-private.pem.key',
certPath: '/cert/mycert-certificate.pem.crt',
caPath:   './cert/AmazonRootCA1.pem.key',
clientId: 'myclientid',
host: 'myhost'
});
console.log(device)
device
.on('connect', function() {
console.log('connect');
});
device
.on('message', function(topic, payload) {
console.log('message', topic, payload.toString());
});
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>Welcome to React Native!</Text>
<Text style={styles.instructions}>To get started, edit App.js</Text>
<Text style={styles.instructions}>{instructions}</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});

在使用证书进行身份验证时,是否有任何可能的解决方案或其他使用react native中的MQTT与AWS IoT通信的方法?

最新更新