在我的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) {
}
});
}
}
但是我试过了,但没有运气......即使是新的孩子也加了,我没有得到任何通知......即使应用程序在前台也没有...
答案 0 :(得分:0)
实际上我们可以在manifest fie中启动服务。但在我的情况下,我的错误是我没有添加启动服务声明,我真的想要启动它。所以只需添加
startService(new Intent(this, ChildEventListener.class));
我想上课的课程。解决了我的问题。
-Thanx @ merterpam,指出我的错误