私は、アプリケーションが動作していなくても新しいメッセージを受信したときに通知を与えるアンドロイドアプリケーションを作成する必要があります。私はfirebaseデータベースを使用しています。私はfirebase datasnapshotのコードを書いていますが、アプリケーションが動作しているときにのみ動作します。アプリケーションが動作していない場合、このコードを実行する必要があります。私はアプリも機能していないときにバックグラウンドでこのコードを実行する必要が通知のためのバックグラウンドサービスを終了しないでください
Mref=new Firebase("https://iyutue-30s49.firebaseio.com/");
Mref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String value=dataSnapshot.getValue(String.class);
myDb.GetAllData();
String idd= String.valueOf(myDb.id);
if (value.equals(idd)==true){
NotificationCompat.Builder builder=new NotificationCompat.Builder(getApplicationContext());
builder.setSmallIcon(R.drawable.ic_tab_profile);
builder.setContentTitle("plaese").setContentText("jijo");
Intent intent =new Intent(getApplicationContext(),MainActivity.class);
TaskStackBuilder stackBuilder=TaskStackBuilder.create(getApplicationContext());
stackBuilder.addParentStack(MainActivity.this);
stackBuilder.addNextIntent(intent);
PendingIntent pendingIntent=stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
NotificationManager NM=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
NM.notify(0,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(FirebaseError firebaseError) {
}
});
私を助けてくださいadvnace
アプリがアクティブでない状態で接続を開いたままにすると、バッテリーが著しく消費され、ユーザーエクスペリエンスが低下します。代わりにFirebase Cloud Messagingを使用して、アプリを開いていないときにユーザのイベントに通知することをお勧めします。 –
@FrankvanPuffelenしかし、私はfirebaseを使用していますが、このコードは、アプリケーションがこのタイプのサービスを書き込む方法を事前に感謝していない場合は動作しません。 –
しかしwhatzaapのような他の主要アプリケーションもバックグラウンドプロセスとサービスを常に実行します..最善の方法ではない? –