如何从Cloud onCall()函数获取数据到Android客户端并在Java代码中使用它?
客户端连接到函数,功能连接到Firestore。但是我无法将数据从函数返回到客户端。我知道数据具有json格式。但是如何将数据传递给android,以及如何在android代码中使用此数据(例如,传递给TextView中的setText)。
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?
答案 0 :(得分:1)
这样做
Map<String, Object> data = new HashMap<>();
data.put("text", first);
data.put("push", second);
return mFunctions
.getHttpsCallable("sendMessageToAndroid")
.call(data)
...
(如documentation中的示例所示)将包含text
元素的地图发送到Callable Cloud Function。
但是,在您的Cloud Function代码中,您可以执行以下操作:
var batono = {
first: data.fara,
second: data.mina
}
因此,这意味着您应该发送包含以下元素的地图:fara
和mina
,而不是包含text
的地图(否则您会做类似{{1 }}。
因此,您很可能应该执行以下操作(但是未经测试):
var batono = {text: data.text}