要使用FirebaseMessagingService作为Android 14及更高版本中的前台服务类型,您可以按照以下步骤进行操作:
dependencies {
// ...
implementation 'com.google.firebase:firebase-messaging:23.0.0'
// ...
}
import android.content.Intent;
import android.util.Log;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMessagingService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// 处理接收到的推送通知
Log.d(TAG, "From: " + remoteMessage.getFrom());
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
// 在这里创建和显示通知
showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
}
}
private void showNotification(String title, String message) {
// 创建通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "channel_id")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(message)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
// 显示通知
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(0, builder.build());
}
}
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
public class MainActivity extends AppCompatActivity {
private static final int NOTIFICATION_ID = 1;
private static final String CHANNEL_ID = "channel_id";
private static final String CHANNEL_NAME = "channel_name";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建通知渠道(仅适用于Android O及更高版本)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
// 将FirebaseMessagingService设置为前台服务类型
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Foreground Service")
.setContentText("Firebase Messaging Service")
.setSmallIcon(R.drawable.ic_notification)
.build();
startForeground(NOTIFICATION_ID, notification);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 停止前台服务
stopForeground(true);
}
}
通过按照上述步骤操作,您可以在Android 14及更高版本中使用FirebaseMessagingService作为前台服务类型来处理推送通知。