在 firebase 通知中接收图标和声音时出错
Error while receiving icon and sound in firebase notifications
所以,我正在开发一个 Android 应用程序,它会接收来自 Firebase 的通知。接收它们没有问题,但问题是我只能在应用程序打开并位于主屏幕时自定义它们在用户设备中的显示方式。因此,当应用程序关闭时,通知没有图标,没有声音,也没有振动。
您必须明白,尽管我已经在 NotificationCompat class 中更改了我想要的内容,但这些配置在应用程序关闭时并不适用。请参阅下面的代码。
所以,我希望我能被理解,如果有人能说出发生了什么,我将不胜感激。
Class 接收通知
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
notifyuer(remoteMessage.getFrom(), remoteMessage.getNotification().getBody());
// 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.
}
public void notifyuer(String from, String notification){
MyNotificationManager myNotificationManager = new MyNotificationManager(getApplicationContext());
myNotificationManager.showNotificacao(from,notification, new Intent(getApplicationContext(),MainActivity.class));
}
自定义通知Class
public class MyNotificationManager {
private Context context;
public MyNotificationManager(Context context){
this.context = context;
}
public void showNotificacao(String from, String notification, Intent intent){
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0 /* Request code */, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
//long[] vibrar = {150,400,150,800};
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context);
Notification mNotification = notificationBuilder
.setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.logocinza64)
.setContentTitle("S.I.C.C.")
.setContentText(notification)
.setAutoCancel(true)
.setVibrate(new long[]{ 100, 250, 100, 500, 800})
.build();
mNotification.flags |= Notification.FLAG_AUTO_CANCEL;
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
try{
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone toque = RingtoneManager.getRingtone(context,defaultSoundUri);
toque.play();
}catch (Exception e){
}
notificationManager.notify(0 /* ID of notification */, mNotification);
}
}
如果你想自定义通知,你不应该使用 firebase 控制台。
您还应该为图像添加以下代码:
Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher);
notificationBuilder.setLargeIcon(largeIcon)
第二个是关于通知声音,如果你想要自定义声音,使用这个:
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notifysnd);
notificationBuilder.setSound(uri);
所以,我正在开发一个 Android 应用程序,它会接收来自 Firebase 的通知。接收它们没有问题,但问题是我只能在应用程序打开并位于主屏幕时自定义它们在用户设备中的显示方式。因此,当应用程序关闭时,通知没有图标,没有声音,也没有振动。
您必须明白,尽管我已经在 NotificationCompat class 中更改了我想要的内容,但这些配置在应用程序关闭时并不适用。请参阅下面的代码。
所以,我希望我能被理解,如果有人能说出发生了什么,我将不胜感激。
Class 接收通知
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
notifyuer(remoteMessage.getFrom(), remoteMessage.getNotification().getBody());
// 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.
}
public void notifyuer(String from, String notification){
MyNotificationManager myNotificationManager = new MyNotificationManager(getApplicationContext());
myNotificationManager.showNotificacao(from,notification, new Intent(getApplicationContext(),MainActivity.class));
}
自定义通知Class
public class MyNotificationManager {
private Context context;
public MyNotificationManager(Context context){
this.context = context;
}
public void showNotificacao(String from, String notification, Intent intent){
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0 /* Request code */, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
//long[] vibrar = {150,400,150,800};
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context);
Notification mNotification = notificationBuilder
.setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.logocinza64)
.setContentTitle("S.I.C.C.")
.setContentText(notification)
.setAutoCancel(true)
.setVibrate(new long[]{ 100, 250, 100, 500, 800})
.build();
mNotification.flags |= Notification.FLAG_AUTO_CANCEL;
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
try{
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone toque = RingtoneManager.getRingtone(context,defaultSoundUri);
toque.play();
}catch (Exception e){
}
notificationManager.notify(0 /* ID of notification */, mNotification);
}
}
如果你想自定义通知,你不应该使用 firebase 控制台。
您还应该为图像添加以下代码:
Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher);
notificationBuilder.setLargeIcon(largeIcon)
第二个是关于通知声音,如果你想要自定义声音,使用这个:
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notifysnd);
notificationBuilder.setSound(uri);