从Android应用程序调用sendFollowerNotification Firebase函数

从Android应用程序调用sendFollowerNotification Firebase函数,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,所以我意识到,从12.0版开始,你可以直接从Android应用程序调用Firebase函数。。。这对于发送消息的给定示例是有意义的: private Task<String> addMessage(String text) { // Create the arguments to the callable function. Map<String, Object> data = new HashMap<>();

所以我意识到,从12.0版开始,你可以直接从Android应用程序调用Firebase函数。。。这对于发送消息的给定示例是有意义的:

private Task<String> addMessage(String text) {
        // Create the arguments to the callable function.
        Map<String, Object> data = new HashMap<>();
        data.put("text", text);
        data.put("push", true);

        return mFunctions
                .getHttpsCallable("addMessage")
                .call(data)
                .continueWith(new Continuation<HttpsCallableResult, String>() {
                    @Override
                    public String then(@NonNull Task<HttpsCallableResult> task) throws Exception {
                        // This continuation runs on either success or failure, but if the task
                        // has failed then getResult() will throw an Exception which will be
                        // propagated down.
                        String result = (String) task.getResult().getData();
                        return result;
                    }
                });
    }
但我不确定应该发送什么,比如sendFollowerNotification示例:

我是说。。。假设用户已登录并拥有firebase UID,并且位于数据库中(当有人登录时,我的应用程序会自动创建firebase用户)。。。看起来sendFollowerNotification只是从实时数据库获取所有信息

那我该放什么

.call(data)
我如何为我尝试跟踪的用户检索UID?对于已登录并使用该应用程序的用户。。。我显然已经有了那个用户的UID、令牌和其他一切。。。但我不确定如何为即将被跟踪的用户检索该信息。。。如果这有意义的话


我在互联网上搜索过,从来没有发现过一个例子,在android应用程序中使用新的post 12.0.0方法使用这种特殊类型的函数调用。所以我很想知道正确的语法应该是什么。

好的!这件事真的激怒了我,我想弄明白。。。事实证明,您根本不需要调用“sendFollowerNotification”。。它所做的只是侦听Firebase实时数据库的更改。如果您在sendFollowerNotification查看的语法中进行更改。。。它会自动发出通知

“SendFollowerNotification”中根本没有将用户写入实时数据库的调用。我实际上是在登录时处理这个问题的:

private DatabaseReference mDatabase; //up top

mDatabase = FirebaseDatabase.getInstance().getReference(); //somewhere in "onCreate"

final String userId = mAuth.getUid();

String refreshedToken = FirebaseInstanceId.getInstance().getToken();

mDatabase.child("users").child(userId).child("displayName").setValue(name);
mDatabase.child("users").child(userId).child("notificationTokens").child(refreshedToken).setValue(true);
mDatabase.child("users").child(userId).child("photoURL").setValue(avatar);
然后,当一个用户跟踪另一个用户时,我也会将其写入实时数据库:

mDatabase.child("followers").child(user_Id).child(follower_id).setValue(true);

就这样!第二个新的跟随者被添加到实时数据库中。。。SendFollowerNotification将自动发送通知。您只需在应用程序中设置一个侦听器,用于接收消息,并在用户点击已接收的消息并完成后重定向到该位置。

我不理解您的问题。您有一个可调用触发器和一个数据库触发器。他们做不同的事情,似乎没有直接的联系。我不明白为什么一个人的工作会改变另一个人的工作。@DougStevenson哈哈哈!这就是问题所在。我知道他们没有亲戚关系。这意味着我没有一个如何从Android执行数据库触发器的示例。我不知道怎么做。这是我第一次使用Firebase函数。我有一个很好的例子说明如何调用触发器。。。我没有关于如何执行数据库触发器的示例,您有文档,还有来自函数samples repo的一卡车样本。您不会从Android或任何客户端“调用”数据库触发器。您只需向数据库写入,它就会触发对写入的响应。我认为文档会对您有所帮助:
private DatabaseReference mDatabase; //up top

mDatabase = FirebaseDatabase.getInstance().getReference(); //somewhere in "onCreate"

final String userId = mAuth.getUid();

String refreshedToken = FirebaseInstanceId.getInstance().getToken();

mDatabase.child("users").child(userId).child("displayName").setValue(name);
mDatabase.child("users").child(userId).child("notificationTokens").child(refreshedToken).setValue(true);
mDatabase.child("users").child(userId).child("photoURL").setValue(avatar);
mDatabase.child("followers").child(user_Id).child(follower_id).setValue(true);