【发布时间】:2022-05-04 18:35:28
【问题描述】:
在我的 android 应用程序中,即使应用程序未处于活动状态,我也会尝试实现 firebase 数据库的 childEventListener。 意味着每当 firebase db 特定子项有新条目时,它应该通知用户.. 所以到目前为止我已经完成了这个,
我已在清单文件中声明服务为
<service android:name=".ChildEventListener"/>
那么我的 ChildEventListener 类如下
public class ChildEventListener extends Service {
FirebaseAuth auth;
NotificationCompat.Builder builder;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
retrivemsg();
return START_STICKY;
}
public void retrivemsg()
{
DatabaseReference mdb= FirebaseDatabase.getInstance().getReference("messages/"+auth.getCurrentUser().getUid());
builder=new NotificationCompat.Builder(this,"onchildadded");
mdb.addChildEventListener(new com.google.firebase.database.ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String msg=dataSnapshot.child("msg").getKey();
builder.setSmallIcon(R.drawable.send);
builder.setContentTitle("child added");
builder.setContentText(msg);
NotificationManager notificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(1,builder.build());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
但我试过了,但没有运气......即使添加了新孩子,我也没有收到任何通知......即使应用程序在前台也没有......
【问题讨论】:
-
你确定服务启动了吗?代替通知,也许您最初可以尝试使用日志来查看问题出在哪里:是服务、Firebase 侦听器还是通知?
-
哦,非常感谢......我的错误......我忘记了启动服务
-
但现在的问题是,我只有在应用程序处于活动状态时才会收到通知......服务不在后台工作......而且......通知也只针对第一次进入。 ..如果我添加了一项..它会发出通知。假设然后我通过滑动取消通知...并再次添加了一个项目...它没有提供新通知。为什么会这样?
-
不不......我解决了我的问题......这又是我的错误......但再次感谢......启动服务实际上是我的问题......你拯救了我的一天
标签: android firebase firebase-realtime-database