728x90
내기준 엄청 유용함 주의~~~!!!!
1. 환경
react-native: 0.61.5
react-native-push-notification: 4.0.0
2. 문제
위 라이브러리를 이용해서 알람앱을 만들었다.
하지만 안드로이드 기기에서 진동/무음모드를 설정하면 알람음을 설정해놔도 울리지 않았다.
나의 코드는 이렇다.
import PushNotification, { PushNotificationScheduleObject } from 'react-native-push-notification';
const date = new Date();
date.setMinutes(date.getMinutes() + 1); // 1분 뒤에 알람 울리도록
const scheduleObj: PushNotificationScheduleObject = {
id: '1', // (optional) Valid unique 32 bit integer specified as string. default: Autogenerated Unique ID
date,
autoCancel: false, // (optional) default: true
vibrate: true, // (optional) default: true
vibration: 2000, // vibration length in milliseconds, ignored if vibrate=false, default: 1000
ongoing: false, // (optional) set whether this is an "ongoing" notification
priority: 'max', // (optional) set notification priority, default: high
visibility: 'public', // (optional) set notification visibility, default: private
importance: 'max', // (optional) set notification importance, default: high
title: 'title',
message: 'message',
playSound: true,
soundName: 'default_alarm_sound_twice', // android/app/src/main/res/raw 에 'default_alarm_sound_twice.mp3'라는 custom sound가 있다.
repeatType: 'time',
repeatTime: 4000,
}
PushNotification.localNotificationSchedule(scheduleObj);
3. 해결법 모색
이슈를 올려보았다.
도움이 되지 않았다.
알람음은 어떻게 해도 진동/무음모드에서 바뀌지 않았다.
그래서 미디어 볼륨을 건드려보기로 했다.
이곳 에다가
try {
if (soundUri != null) {
AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
(int)(mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) * 0.7),
AudioManager.FLAG_PLAY_SOUND);
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(context, soundUri);
mediaPlayer.prepare();
mediaPlayer.start();
}
} catch (Exception e) {
Log.d("LOG", e.toString());
}
이 코드를 집어 넣는 것이다.
결국 네이티브를 건드렸다... 흑흑
아예 MediaPlayer를 이용해서 내가 설정한 custom 사운드를 울려버리는 것이다.
npm i 마다 매번 이 코드를 추가해주어야 하겠지만 (내 레포지토리를 npm i 하는 방법을 몰라서.. 나중에 해보자)
어쨌든 해결됐다!
추가로 작성한 이슈 에 내가 방금 위에 써놓은 해결법을 그대로 적어놓았다.
iOS는 방법을 안찾아봐서 모르겠다.
아무튼 해결되었다!!! 예!!!
push-notification 라이브러리로도 진동/무음모드 때 소리가 울리는 알람을 구현할 수 있다!
4. 참고 블로그
https://unikys.tistory.com/350
https://15051015.tistory.com/93