1

投稿がアップロードされたときに通知をアプリのエンドユーザーにプッシュしようとしています。アプリがフォアグラウンドにあるときはうまく動作しますが、アプリがバックグラウンドであるか、または強制終了しても表示されません。アプリが強制終了したり、バックグラウンドで実行されているときに通知を表示する方法はありますか? は、ここで私は通知がバックグラウンド状態で表示されず、アプリが終了しました

const functions = require('firebase-functions'); 
let admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 
exports.sendPush = functions.database.ref('/promos').onWrite(event => { 
var topic = "deals_notification"; 
let projectStateChanged = false; 
let projectCreated = false; 
let projectData = event.data.val(); 

if (((event.data.numChildren())-(event.data.previous.numChildren()))>0) { 
    let msg="notification arrived" 
    let payload = { 
     notification: { 
      title: 'Firebase Notification', 
      body: msg, 
      sound: 'default', 
      badge: '1' 
     } 
    }; 

admin.messaging().sendToTopic(topic, payload).then(function(response) { 
// See the MessagingTopicResponse reference documentation for the 
// contents of response. 
console.log("Successfully sent message:", response); 
}).catch(function(error) { 
console.log("Error sending message:", error); 
}); 
} 
}); 

を使用していNode.jsのコードであり、ここでMyFirebaseMessageServiceです:

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import com.google.firebase.messaging.FirebaseMessagingService; 
import com.google.firebase.messaging.RemoteMessage; 
public class MyFirebaseMessageService extends FirebaseMessagingService { 
@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    super.onMessageReceived(remoteMessage); 
    Log.e("notification---",remoteMessage.getNotification().getBody()); 

    sendnotification(remoteMessage.getNotification().getBody()); 
} 
private void sendnotification(String body){ 
    Intent intent = new Intent(this, MainActivity.class); 
// use System.currentTimeMillis() to have a unique ID for the pending intent 
    PendingIntent pIntent = PendingIntent.getActivity(this, (int) 
System.currentTimeMillis(), intent, 0); 

// build notification 
// the addAction re-use the same intent to keep the example short 
    Notification.Builder n = new Notification.Builder(this) 
      .setContentTitle("Best Deals") 
      .setContentText(body) 
      .setSmallIcon(R.mipmap.ic_launcher) 
      .setContentIntent(pIntent) 
      .setAutoCancel(true); 

    NotificationManager manager = (NotificationManager) 
    getSystemService(Context.NOTIFICATION_SERVICE); 
    manager.notify(0, n.build()); 
} 
} 

感謝。

+0

私の回答を見る[ここ](https://stackoverflow.com/a/39505298/4625829) –

答えて

1

コードが完璧であると確信しています。しかし、あなたがテストしているデバイスに何らかの問題があるかもしれません。他のデバイスでコードをテストしてみてください。

1

onMessageReceived()は、アプリケーションがフォアグラウンドにあるときにのみ呼び出され、バックグラウンドでは通知が表示されますが、メソッドが呼び出されていない場合は正常に動作しています。

クライアントアプリケーションに代わって 通知の表示をFCMが処理するようにするには、通知メッセージを使用します。 がクライアントアプリケーションでメッセージを処理したいときにデータメッセージを使用します。

はもっとここで読む:あなたは、通知メッセージを送信しているhttps://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

。代わりにデータメッセージを送信する必要があります

問題が異なる場合:アプリがバックグラウンドになっても何も起こらない場合は、お使いの端末の問題かもしれません。 Push notifications using FCM not received when app is killed android

関連する問題