繁体   English   中英

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

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

当尝试使用侦听器将Fire base Database子级添加到数据库时,我试图获取android通知,但无法获取通知。 我已经编写了这个小测试应用程序的代码,该应用程序在运行时甚至在后台都不会显示通知。 有人可以调查一下,帮帮我吗,我还是个初学者,一点帮助就好了!

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);
}
}

您应该使用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) {

        }
    });

确保可以从数据库读取数据(检查安全规则)。

暂无
暂无

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

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