Cloud Functions - 调用 getHttpsCallable() 时 Android 应用程序崩溃

Posted

技术标签:

【中文标题】Cloud Functions - 调用 getHttpsCallable() 时 Android 应用程序崩溃【英文标题】:Cloud Functions - Android application crashe when getHttpsCallable() call 【发布时间】:2020-11-09 04:49:59 【问题描述】:

我尝试从我的 android 项目调用 firebase 模拟器 中的函数。

我关注https://firebase.google.com/docs/functions/callable#java_2,但是当我调用 getHttpsCallable 时,我的 AVD 停止并且我在 logcat 或事件日志中看不到任何错误。

这里有一个比课程更短的代码,但也不起作用。

在 android Studio 中:(java)

public class MainActivity extends AppCompatActivity 
    private final static String TAG = "DebugTest";

    private DatabaseReference mRef ;
    private FirebaseFunctions mFunctions;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button clickBtn = findViewById(R.id.clickBtn);

        // WARNING: firebase emulators
        mRef = FirebaseDatabase
                .getInstance("http://10.0.2.2:9000?ns=nameOfMyApplication-xxxxx")
                .getReference();



        //crashe when I click on the button
        clickBtn.setOnClickListener(new View.OnClickListener() 
                    @Override
                    public void onClick(View v) 
                        mFunctions.getHttpsCallable("hello").call();
                        
                    
        );
    

在 index.js 中

const functions = require('firebase-functions');

exports.hello = functions.https.onCall((data, context) => 
    return `Hello world!`
)

该函数未在 firebase 模拟器套件的日志中调用。

【问题讨论】:

【参考方案1】:

您忘记初始化 mFunctions 变量,您刚刚声明了它。尝试在您已经在进行的 firestore 初始化旁边添加以下代码,它应该可以工作:

mFunctions = FirebaseFunctions.getInstance();

编辑:

要记录函数的返回,您必须将 onClick 函数更改为以下内容:

public void onClick(View v) 
    System.out.println(mFunctions.getHttpsCallable("hello").call().getValue());                      

如果这能解决问题,请告诉我。

【讨论】:

非常感谢!我的应用程序不会崩溃。但是我在我的模拟器中看不到任何日志。这正常吗?? 好吧,鉴于您拥有的代码,是的,因为您没有记录您的云函数的返回,您只是调用该函数并且没有对它在您的 android 代码中的返回做任何事情。我将编辑答案以添加此问题,如果解决了问题,请记住接受并投票:) 函数的输出是一个Task。我有代码错误内部 你是对的,我刚刚修复了代码,现在应该可以工作了。 我无法使用 getValue。此外,当我在 index.js 中使用 console.log 时,日志不可见,所以我认为这是另一个错误。我将创建另一个帖子,因为原始实例问题已解决。

以上是关于Cloud Functions - 调用 getHttpsCallable() 时 Android 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Cloud Functions - 调用 getHttpsCallable() 时 Android 应用程序崩溃

IBM Cloud Functions:在 Nodejs 中使用异步调用

多次调用 Cloud Functions for Firebase

从 Compute Engine 调用 Cloud Functions

Google Cloud Functions Deploy“允许未经身份验证的调用......”

Cloud Functions 返回 403 错误也具有 Cloud Functions Invoker 权限