所以,我正在开发一个Android应用程序,它接收来自Firebase的通知。要接收它们,没有问题,但问题是我只能在应用程序打开并在主屏幕中自定义它们在用户设备中的显示方式。因此,当应用程序关闭时,通知没有图标,没有声音,也没有振动。
您必须了解,但是我已经在 NotificationCompat 类中更改了我想要的内容,这些配置在关闭时不适用于应用程序。请参阅下面的代码。
所以,我希望我是可以理解的,如果有人能说出正在发生的事情,我将不胜感激。
接收通知的类
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));
}
自定义通知类
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);