Как вернуть данные из облачной функции на андроид и использовать ее? - PullRequest
0 голосов
/ 16 июня 2019

Как я могу получить данные из функции Cloud onCall () в клиент Android и использовать их в коде Java?

Клиент подключается к функции, а функция подключается к пожарному хранилищу.Но я не могу вернуть данные из функции клиенту.Я знаю, что данные имеют формат JSON.Но как передать данные на Android, и как использовать эти данные в коде Android (например, чтобы установить текст в TextView).

java метод onClick ():

onClick(){
String first = editTextTitle.getText().toString();
String second = editTextDescription.getText().toString();

//Here I try to setText received from function, but nothing happen.
tv_function.setText(function_3(first, second).toString());
}

java - функция вызова:

private Task<String> function_3(String first, String second) {
    mFunctions = FirebaseFunctions.getInstance();        
    Map<String, Object> data = new HashMap<>();
    data.put("text", first);
    data.put("push", second);

    return mFunctions
            .getHttpsCallable("sendMessageToAndroid")
            .call(data)
            .continueWith(new Continuation<HttpsCallableResult, String>() 
{
     @Override
     public String then(@NonNull Task<HttpsCallableResult> task) throws 
Exception {
     String result = (String)task.getResult().getData();
     return result;
     }
   });
}

функция javaScript:

exports.sendMessageToAndroid = functions.https.onCall((data, context) => {
var batono = {
    first: data.fara,
    second: data.mina
}

return db.collection('abra-codabra').doc("mu-mu").set(batono)
.then(()=>{
    var arba = {
        aram:"aramando",
        borem:"boremuno"
    }
    return arba;
});
});

Как получитьvar "arba" для AndroidStudio и установить его в TextView?

1 Ответ

1 голос
/ 16 июня 2019

Делая

Map<String, Object> data = new HashMap<>();
    data.put("text", first);
    data.put("push", second);

    return mFunctions
            .getHttpsCallable("sendMessageToAndroid")
            .call(data)
            ...

(как показано в примере из документации ), вы отправляете в функцию Callable Cloud функцию с элементом text.

Однако в своем коде облачной функции вы делаете:

var batono = {
    first: data.fara,
    second: data.mina
}

Таким образом, это означает, что вы должны отправить карту со следующими элементами: fara и mina, а не карту с text (или вы бы сделали что-то вроде var batono = {text: data.text}).

Итак, вам, скорее всего, следует сделать что-то вроде следующего (однако не проверено):

Map<String, Object> data = new HashMap<>();
    data.put("fara", .....);
    data.put("mina", .....);
    data.put("push", true);

    return mFunctions
            .getHttpsCallable("sendMessageToAndroid")
            .call(data)
            ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...