簡體   English   中英

FCM后台通知問題android

[英]FCM background notification issue android

我在我的android項目中使用FCM,並且在應用程序運行時工作正常。 但是當應用程序被殺死或關閉時,onReceiveMessage不會被調用。 我已經嘗試過只使用數據playload發送消息,但它仍然無法正常工作。 有沒有任何解決方案。 提前致謝

試試這個代碼它會解決你的問題。 MyFirebaseMessagingService.java

 public class MyFirebaseMessagingService extends FirebaseMessagingService {

  private static final String TAG = "MyFirebaseMsgService";

/**
 * Called when message is received.
 *
 * @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
 */
// [START receive_message]
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // If the application is in the foreground handle both data and notification messages here.
    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated. See sendNotification method below.

    Log.d(TAG, "From: " + remoteMessage.getFrom());
    Log.d(TAG, "Notification Message Title: " + remoteMessage.getNotification().getTitle());
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
    sendNotification("", "");
}
// [END receive_message]

/**
 * Create and show a simple notification containing the received FCM message.
 *
 * @param messageBody FCM message body received.
 */
private void sendNotification(String xyz, String abc) {
    Intent intent = new Intent(this, MainActivity.class);
    Bundle b = new Bundle();


        b.putString("key", xyz);
        b.putString("key", abc);

    intent.putExtras(b);

    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setContentTitle("title")
            .setContentText("body")
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

    boolean useSilhouette = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
    if (useSilhouette) {
        try {
            notificationBuilder.setSmallIcon(R.mipmap.ic_sillate);
        } catch (Exception e) {
            notificationBuilder.setSmallIcon(R.mipmap.ic_sillate);
        }
    } else {
        notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
    }

    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);


    //Random id number for notification
    Random random = new Random();
    int m = random.nextInt(9999 - 1000) + 1000;

    notificationManager.notify(m/* ID of notification */,           notificationBuilder.build());
     }
   }

通過MainActivity中的getIntent()獲取值並執行您想要執行的操作;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM