代码之家  ›  专栏  ›  技术社区  ›  Topazzio App

在firebase通知中接收图标和声音时出错

  •  0
  • Topazzio App  · 技术社区  · 7 年前

    所以,我正在开发一个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);
     }
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   mac229    7 年前

    如果要自定义通知,则不应使用firebase控制台。
    Look here for more information

    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);