我是移动开发领域的新手,我正在为我的一个客户使用aws iot云解决方案,我必须向我的客户提供移动应用程序,其中列出了以下任务。 1)通过facebook / google登录 2)如果设备位于多个区域,则显示选择这些区域的选项 3)列出该地区的设备 4)获取设备的状态 5)将消息发布到设备
我知道AWs IOT,只需要指针我应该如何继续开发基于AWS IOT的移动应用程序。
答案 0 :(得分:0)
我建议你看看aws-mobile-react-native-starter。
希望它有所帮助。
答案 1 :(得分:0)
这将是一个很长的答案。
通过Facebook / Google登录
您可以选择使用AWS Cognito或进行独立Google / Facebook登录。我选择了独立的Google登录,因为我发现移动应用程序更容易。此外,在AWS Cognito中,我无法在离线时使用该应用程序。
在移动集线器中,您可以配置登录的所有设置。下载.JSON 并使用您的应用程序进行配置。
列出区域内的设备
为此,您需要创建一个数据库并存储每个用户及其各自的设备。然后在您的应用程序中查询它。
获取设备和发布的状态
在这里,您需要订阅/发布您在AWS IoT中制作的内容。按照here给出的确切步骤操作。现在,您阅读的示例适用于您不想要的未经身份验证的用户。从现在开始,还有更多的步骤
'
exports.handler = (event, context, callback) => {
console.log('Received event:', JSON.stringify(event, null, 2))
event.Records.forEach((record) => {
console.log(record.eventName);
if (record.eventName == "INSERT") {
console.log('DynamoDB Record:', JSON.stringify(record));
console.log('DynamoDB Record:', record.dynamodb['Keys']['UserId']['S']);
var user = record.dynamodb['Keys']['UserId']['S'];
const iotMgmt = new AWS.Iot();
return new Promise(function(resolve, reject) {
let params = {
policyName: "basic",
principal: user
};
iotMgmt.attachPrincipalPolicy(params, (err, res) => {
console.log("Attaching IoT policy to " + user);
if (err) {
console.error(err);
reject(err);
}
else {
resolve();
}
});
});
}
});
};
由于您使用的是社交登录,因此您需要在Facebook的应用程序中添加以下代码:
Map<String, String> logins = new HashMap<String, String>();
logins.put("graph.facebook.com", AccessToken.getCurrentAccessToken().getToken());
credentialsProvider.setLogins(logins);
要对应用程序$aws/things/thing_name/shadow/update/accepted
将数据发布到阴影类型$aws/things/thing_name/shadow/update