1

ファイアベースのデータベースの子がリスナーを使用してデータベースに追加されたが、通知を取得できないときにアンドロイド通知を取得しようとしています。私は、アプリが実行されたとき、またはバックグラウンドでさえ通知を表示しない、この小さなテストアプリをコーディングしました。誰かがこれを見て、私を助けてくれますか、私はまだ初心者です、少し助けが素晴らしいだろう!Firebaseの子が追加されたときに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); 
} 
} 

答えて

2

あなたは(セキュリティルールを確認してください)

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) { 

     } 
    }); 

を使用すると、データベースからデータを読み取ることができていることを確認し、ChildEventListenerを使用する必要があります。

+0

ちょっとT.S、私はonChildAdded()を追加しようとしました、それは動作していないようです!私が[email protected]に私をPMしてもらえますか?確かに、アプリケーションが実行されていないときにリスナーが通知を受け取る必要はありません。 –

+0

ねえT.S、私はそれを働かせた。あなたの助けをありがとう! –

+1

もし私が新しいメッセージを受け取ったら、アプリがバックグラウンド/殺されたときにどうすれば通知を生成できますか? – user512

関連する問題