gpt4 book ai didi

java - 如何知道 firebase 中的值是增加还是减少?

转载 作者:行者123 更新时间:2023-11-30 00:50:48 25 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,其中有一个关注/取消关注用户的选项。每当有人关注他时,FirebaseDatabase 中的计数器就会增加 1,当有人取消关注他时,计数器就会减少 1。

每当有人关注他时,我都会尝试通过在他离开应用程序后立即启动服务并在 Service 中编写代码来通知用户。

这是服务的 onCreate() 中的代码:

    firebaseDatabaseFollowers.child("***").child("***").child("followers").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

b = sharedPref2.getBoolean(SettingsActivity.KEY_PREF_NOTIF_FOLLOW, true);
Toast.makeText(getBaseContext(), "b: " + String.valueOf(b), Toast.LENGTH_SHORT).show();

if (dataSnapshot.getValue() != null) {

if (String.valueOf(b).equals("true")) {

final int m = (int) ((new Date().getTime() / 1000L) % Integer.MAX_VALUE);

Intent notificationIntent = new Intent(getBaseContext(), NotificationARBroadcastReceiver.class);
notificationIntent.putExtra(NotificationARBroadcastReceiver.NOTIFICATION, getNotificationService());
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), m, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 0, pendingIntent);

}
} else {
Toast.makeText(getBaseContext(), "database is null", Toast.LENGTH_SHORT).show();
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

通知部分工作正常。唯一的问题是,即使有人取消关注用户,通知也会发送,我不希望这种情况发生。

那么,有什么方法可以知道 FirebaseDatabase 中的计数器是增加还是减少,以便我可以相应地通知?

请告诉我。

最佳答案

我会在您的应用中存储一个全局变量,用于保存用户当前拥有的关注者数量。当数据库发送新信息时,您可以使用 if new number > or < than saved number 将其与您保存的号码进行比较。然而,这可能会有问题,如果用户离线并在之后重新在线,比如 1 个用户取消关注,另外 2 个用户关注。在这种情况下,用户只会收到 +1 关注者通知。我可能会推荐的是发送关注用户的用户名,就像 Instagram 一样。例如,“约翰·史密斯跟着你!”或“James Smith 取消关注你!”。

关于java - 如何知道 firebase 中的值是增加还是减少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41071435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com