简体   繁体   English

添加Firebase子级后,在Android中获得通知

[英]Get a Notification in Android when a Firebase child has been added

I am trying to get an android notification when a Fire base Database child has been added to the database using listeners, but unable to get the notification. 当尝试使用侦听器将Fire base Database子级添加到数据库时,我试图获取android通知,但无法获取通知。 I have coded this little test app which doesn't show an notification when the app is run, or even on background. 我已经编写了这个小测试应用程序的代码,该应用程序在运行时甚至在后台都不会显示通知。 Can someone please look into this, and help me out, I am still a beginner, a little help would be wonderful! 有人可以调查一下,帮帮我吗,我还是个初学者,一点帮助就好了!

package com.fayaz.firebasenotify;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import android.app.NotificationManager;
import android.support.v4.app.NotificationCompat;
import android.view.View;


public class MainActivity extends AppCompatActivity {

private FirebaseDatabase myFirebaseRef = FirebaseDatabase.getInstance();
private DatabaseReference myRef =  myFirebaseRef.getReference();

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

}

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);

public void sendNotification(View view) {
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            builder.setSmallIcon(R.mipmap.ic_launcher);
            builder.setContentTitle("Firebase Push Notification");
            builder.setContentText("Hello this is a test Firebase notification, a new database child has been added");
            NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            notificationManager.notify(1, builder.build());
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.i("FirebaseError", databaseError.getMessage());
        }

    };
    myRef.addValueEventListener(valueEventListener);
}
}

You should use ChildEventListener, 您应该使用ChildEventListener,

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mRootRef = FirebaseDatabase.getInstance().getReference();
    builder = new NotificationCompat.Builder(this);
    mRootRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            builder.setSmallIcon(R.mipmap.ic_launcher);
            builder.setContentTitle("Firebase Push Notification");
            builder.setContentText("Hello this is a test Firebase notification, a new database child has been added");
            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) {

        }
    });

Make sure you can read the data from the database (check security rules). 确保可以从数据库读取数据(检查安全规则)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM