본문 바로가기

# 02/Flutter

[Flutter] Fcm Custom Sound 구현하기! (안드로이드 편)

반응형

Flutter 앱에서 푸시 메시지가 왔을 때 메시지 타입별로 다른 사운드가 났으면 좋겠다고 하여 찾아봤는데,

 

검색 해보면 대부분 서버에서 "sound": "sound_file.mp3" 데이터 추가해주면 된다고 하는데.. 절대안됨...

 

결론은 안드로이드 알림 채널을 사운드 별로 생성해주고 서버에서 해당 채널 아이디를 넣어주면 등록된 채널 사운드가 울린다!


1. app/android/app/src/main/res/raw 폴더 생성 하여 사운드 파일 mp3 형식으로 넣어줍니다.

 

 

2. 위의 폴더에 keep.xml 파일을 만들고 mp3 파일 tools 에 등록해 줍니다. (이거 땜에 또 한참 헤맴...)

 

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@drawable/*,@raw/exit_request"
    />

 

 

3. Flutter 에서 각 사운드 별 채널을 등록해 줍니다.(기존 알림 채널이 등록되어 있으면 사운드 변경이 안되고 앱 삭제 후 재설치 해야 합니다. 또는 삭제해주는 코드가 있긴함..)

 

var channel1 = const AndroidNotificationChannel(
    'channel_01', // id
    '출차 요청', // title
    description:
    '출차 요청입니다', // description
    importance: Importance.max,
    playSound: true,
    sound: RawResourceAndroidNotificationSound('exit_request'),
  );
  
  await flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>()?.createNotificationChannel(channel1);
 
 
 

4. 서버에서 푸시를 보낼 때 원하는 사운드의 채널을 추가합니다.

 

        {
            "message": {
              "token": "f6D3bdBJSfWaBvICiQhwjy:APA91bG3PwlEAiHjlWnUCroSXB2j1zc3QZALbwTZeeLsonfrN1JDfqZSILTqoXkOEB8Xi1V_WAAuZz32mqmz70henwOXE9moVMhxsieZgS_9v7eKhCeU7I8BHNbCMxB2Sw4FU-YhjwrZ",
              "notification": {
                "title": "Title",
                "body": "Body",
              },
              "android": {
                "notification": {
                 "channel_id": "channel_01",
                },
              },
              "data": {
                "click_action": "FLUTTER_NOTIFICATION_CLICK",
                "type": "type",
              },
            },
          }
 

 

 

 

 


푸시 테스트를 하고 싶다면!

https://zoiworld.tistory.com/1054

 

OAuth 2.0 Playground 에서 푸시 보내기

https://developers.google.com/oauthplayground/ OAuth 2.0 Playground Request Body Manual entry Enter the data that will be added to the body of the request: File You may choose to send a file as part of the request. When both a file and manual content are p

zoiworld.tistory.com

 

 

 

 


https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages

 

REST Resource: projects.messages  |  Firebase Cloud Messaging REST API

 

firebase.google.com

 

반응형