📜  显示 2 个通知 fcm 的网络推送 (1)

📅  最后修改于: 2023-12-03 15:26:19.819000             🧑  作者: Mango

显示 2 个通知 FCM 的网络推送

Firebase Cloud Messaging(FCM)是一种广泛使用的推送服务,可以向应用程序发送通知消息。在某些情况下,我们可能需要同时发送多个通知消息。本篇文章将解释如何在Android中实现显示2个通知FCM的网络推送。

首先,我们需要使用Firebase Cloud Messaging从服务器发送一条通知消息。这可以通过使用Firebase控制面板完成,也可以使用以下代码:

String token = "<your device token>";
String serverKey = "<your server key>";
String deviceUrl = "https://fcm.googleapis.com/fcm/send";
JSONObject json = new JSONObject();
json.put("to", token);
JSONObject notificationObject1 = new JSONObject();
notificationObject1.put("title", "Notification 1");
notificationObject1.put("body", "This is notification 1");
JSONObject notificationObject2 = new JSONObject();
notificationObject2.put("title", "Notification 2");
notificationObject2.put("body", "This is notification 2");
JSONArray jsonArray = new JSONArray();
jsonArray.put(notificationObject1);
jsonArray.put(notificationObject2);
json.put("notification", jsonArray);
HttpURLConnection conn = (HttpURLConnection) new URL(deviceUrl).openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization","key="+serverKey);
conn.setRequestProperty("Content-Type","application/json");
conn.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
outputStream.write(json.toString().getBytes("UTF-8"));

上述代码可以在客户端应用程序中被调用,用于发送FCM通知消息到指定的设备。其中,我们创建了一个包含两个通知消息的JSON数组,并将其添加到了通知中。

接下来,我们需要在应用程序中实现代码来处理接收到的通知消息。我们可以创建一个继承自FirebaseMessagingService的类来处理消息,如下所示:

public class MyFirebaseMessagingService extends FirebaseMessagingService {

    private static final String TAG = "MyFirebaseMessagingService";

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        Log.d(TAG, "FCM Message Id: " + remoteMessage.getMessageId());
        Log.d(TAG, "FCM Notification Message: " + remoteMessage.getNotification().getBody());

        // Show notification
        NotificationCompat.Builder builder1 = new NotificationCompat.Builder(this, "channel1")
                .setSmallIcon(R.drawable.ic_notification)
                .setContentTitle(remoteMessage.getNotification().getTitle())
                .setContentText(remoteMessage.getNotification().getBody())
                .setAutoCancel(true)
                .setPriority(NotificationCompat.PRIORITY_HIGH);

        NotificationCompat.Builder builder2 = new NotificationCompat.Builder(this, "channel2")
                .setSmallIcon(R.drawable.ic_notification)
                .setContentTitle(remoteMessage.getNotification().getTitle())
                .setContentText(remoteMessage.getNotification().getBody())
                .setAutoCancel(true)
                .setPriority(NotificationCompat.PRIORITY_HIGH);

        NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
        notificationManager.notify(1, builder1.build());
        notificationManager.notify(2, builder2.build());

    }
}

上述代码,我们创建了两个NotificationCompat.Builder对象来构建两个通知消息,并使用NotificationManagerCompat.notify(...)方法将它们显示在通知栏中。在onMessageReceived方法中,我们从RemoteMessage对象中获取通知内容,并设置到相应的通知构造器中。

最后,我们需要在AndroidManifest.xml文件中注册MyFirebaseMessagingService类,如下所示:

<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />

    <application ...>

        <service
            android:name=".MyFirebaseMessagingService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

    </application>

</manifest>

我们需要注册MyFirebaseMessagingService,让它能够接收FCM通知消息,并在收到通知消息时显示它们。

到这里,我们已经成功了实现了显示 2 个通知 FCM 的网络推送,在客户端应用程序中可以同时收到多个通知消息。