No custom sound with Android Firebase Notification

后端 未结 6 1597
轮回少年
轮回少年 2021-01-17 10:39

I am using Firebase push notifications in my Android App. I can send correctly notification with custom icon, but I have not managed to play my custom sound. I always get th

6条回答
  •  青春惊慌失措
    2021-01-17 11:25

    I was also looking for the solution to custom sound for firebase notification in the android, And I have solved this problem through Notification Channel.

    I have created one notification channel with custom sound, that sound plays after receiving notification in the application background state.

    You can refer following links of the notification channel.

    https://medium.com/exploring-android/exploring-android-o-notification-channels-94cd274f604c

    https://developer.android.com/training/notify-user/channels

    You need to put your mp3 file at /res/raw/ path.

    Please find the code.

    NotificationManager notificationManager = (NotificationManager) getActivity().getSystemService(NotificationManager.class); // If you are writting code in fragment
    

    OR

    NotificationManager notificationManager = (NotificationManager) getSystemService(NotificationManager.class); // If you are writting code in Activity
    

    createNotificationChannel function

    private void createNotificationChannel() { 
     Uri sound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.getPackageName() + "/" + R.raw.sample); //Here is FILE_NAME is the name of file that you want to play 
    // Create the NotificationChannel, but only on API 26+ because 
    // the NotificationChannel class is new and not in the support library if 
    (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) 
     { 
        CharSequence name = "mychannel"; 
        String description = "testing"; 
        int importance = NotificationManager.IMPORTANCE_DEFAULT; 
        AudioAttributes audioAttributes = new AudioAttributes.Builder() 
         .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) 
         .setUsage(AudioAttributes.USAGE_ALARM) 
         .build(); 
       NotificationChannel channel = new NotificationChannel("cnid", name, importance); 
       channel.setDescription(description); 
       channel.enableLights(true); channel.enableVibration(true); 
       channel.setSound(sound, audioAttributes); 
       notificationManager.createNotificationChannel(channel); 
      } 
    };
    
    createNotificationChannel(); 
    

    To achieve this you need to pass android_channel_id property in the firebase notification request object.

    {
     "notification": {
     "body": "this is testing notification",
     "title": "My App",
     "android_channel_id": "cnid"
     },
     "to": "token"
    }
    

    Note - If you create a notification channel once then you can't change the sound. You have to create a new notification channel with the new name with your desired sound.

提交回复
热议问题