Android fcm 自定义通知横幅
时间: 2023-09-01 16:12:54 浏览: 248
安卓通知栏自定义布局
要实现 FCM 自定义通知横幅,你需要在客户端和服务器端分别进行以下配置:
客户端配置:
1. 在你的项目级 build.gradle 文件中添加以下依赖:
```
implementation 'com.google.firebase:firebase-messaging:22.0.0'
```
2. 在你的应用级 build.gradle 文件中添加以下配置:
```
android {
// ...
defaultConfig {
// ...
// 设置通道 ID,用于兼容 Android 8.0 及以上版本的通知
notificationChannelId "my_channel_id"
}
}
// 在 AndroidManifest.xml 文件中添加以下权限和服务声明
<uses-permission android:name="android.permission.INTERNET" />
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service
android:name=".MyFirebaseInstanceIDService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
```
3. 创建一个继承自 FirebaseMessagingService 的服务类,并重写 onMessageReceived 方法,用于处理接收到的消息,如下所示:
```
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMessagingService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
// 发送自定义横幅通知
sendCustomNotification(remoteMessage);
}
}
private void sendCustomNotification(RemoteMessage remoteMessage) {
// 创建一个 NotificationCompat.Builder 对象
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "my_channel_id")
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle(remoteMessage.getNotification().getTitle())
.setContentText(remoteMessage.getNotification().getBody())
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true);
// 添加自定义横幅样式
NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle()
.setBigContentTitle(remoteMessage.getNotification().getTitle())
.bigText(remoteMessage.getNotification().getBody());
builder.setStyle(bigTextStyle);
// 显示通知
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(1, builder.build());
}
}
```
服务器端配置:
1. 使用 Firebase 控制台创建一个新的 Firebase 项目,并在项目设置中获取到项目的 Server key。
2. 使用项目的 Server key 发送消息到 FCM 接口,消息格式如下:
```
{
"to": "设备的 FCM token",
"notification": {
"title": "通知标题",
"body": "通知内容"
},
"data": {
// 自定义数据
}
}
```
这样,当你的应用接收到消息时,就会发送一个自定义横幅通知。需要注意的是,自定义横幅样式只会在 Android 5.0 及以上版本的设备上生效。
阅读全文