Нужна помощь в разработке мобильного приложения на базе AWS IOT - PullRequest
0 голосов
/ 03 июня 2018

Я новичок в области мобильных разработок, я использую облачное решение aws iot для одного из своих клиентов, я должен предоставить мобильное приложение своему клиенту, в котором будут перечислены следующие задачи.1) Войдите в систему через facebook / google. 2) Если устройства находятся в более чем одном регионе, выберите опцию выбора этого региона. 3) Перечислите устройства в этом регионе. 4) Получите статус устройства.Я знаю, что такое AWS IOT, мне нужен указатель на то, как мне следует продолжать разработку мобильного приложения на основе AWS IOT.

Ответы [ 2 ]

0 голосов
/ 19 июня 2018

это будет длинный ответ, держитесь крепко.

Войдите через Facebook / Google

Здесь у вас есть два варианта: использовать AWS Cognito илизайти в независимый логин Google / Facebook.Я выбрал независимую регистрацию в Google, поскольку мне было проще для моего мобильного приложения.Кроме того, в AWS Cognito я не смог использовать приложение в автономном режиме.

В мобильном хабе вы можете настроить все параметры для входа в систему.Загрузите .JSON и настройте его в своем приложении.

Список устройств в регионе

Для этого вам необходимо создать базу данных и сохранить каждого пользователя.и их соответствующие устройства.Затем запросите его в своем приложении.

Получить статус устройства и публикации

Здесь вам необходимо подписаться / опубликовать свою вещь, созданную в AWS IoT.Следуйте точным инструкциям здесь .Теперь прочитанный вами пример предназначен для неаутентифицированного пользователя, который вам не нужен.Теперь есть еще несколько шагов

  1. Присоединение политики IoT к пулу с проверкой подлинности.
  2. Теперь каждому пользователю необходимо присоединить PrinciplePolicy.Вы можете автоматизировать процесс с помощью функции Lambda в AWS.Код ниже:

'

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

0 голосов
/ 05 июня 2018

Я бы посоветовал вам взглянуть на aws-mobile-реакции-native-starter .

Надеюсь, это поможет.

...