javascript - sonido de notificación push en react native
Estoy tratando de agregar sonido a mi notificación push local. Estoy usando RN 0.45.1 y react-native-push-notifications 3.0.0
Logré programar notificaciones en iOS y Android con el sonido predeterminado. No logré agregar un sonido personalizado.
Tengo archivos de sonido de tipo mp3. Intenté lo siguiente:
- coloca el archivo en la carpeta de mi proyecto: '/src/assests/sounds/sound.mps' (una carpeta dentro de mi proyecto)
y luego:
import notificationSound from '../src/assests/sounds/sound.mps';
PushNotification.localNotificationSchedule({
message: 'Test message',
date: new Date(Date.now() + (60 * 1000)),
repeatType: 'time',
repeatTime: 60 * 1000,
sound: notificationSound,
});
- otro intento fue: colocar el archivo de sonido en la carpeta android: ..\android\app\src\mainesaw\sound.mp3
y la notificación fue:
PushNotification.localNotificationSchedule({
message: 'Test message',
date: new Date(Date.now() + (60 * 1000)),
repeatType: 'time',
repeatTime: 60 * 1000,
sound: sound.mp3,
});
Respuesta #1
Hay propiedad para el sonido
soundName: 'default',Sonido que se reproducirá cuando se muestre la notificación. Un valor de 'default' reproduce el sonido predeterminado. Se puede configurar un sonido personalizado, como android.resource://com.xyz/raw/my_sound. Buscará el archivo de audio 'my_sound' en el directorio 'res/raw' y lo reproducirá. predeterminado: 'default' (se reproduce el sonido predeterminado)
Para sonidos personalizados
En Android, añade tu archivo de sonido personalizado a [project_root]/android/app/src/main/res/raw
En iOS, añade tu archivo de sonido personalizado a los Recursos del proyecto en xCode.
En el JSON de notificación de ubicación, especifique el nombre completo del archivo:
soundName: 'mi_sonido.mp3'
Respuesta #2
Revisa la función scheduleNotif(soundName) del siguiente ejemplo de la documentación de react-native-push-notification. El ejemplo anterior me funcionó en mi dispositivo Android. Solo agrega el nombre del archivo de sonido sin escribir su formato, "success", no "success.mp3". El archivo de sonido debe estar ubicado en la carpeta raw [project_root]/android/app/src/main/res/raw.
Mi método modificado para mi aplicación necesita:
var lastId = 0;
function scheduleNotif(soundName, date, title, message) {
lastId++;
PushNotification.localNotificationSchedule({
date: new Date(date),
title: title,
message: message,
color: 'blue',
invokeApp: false,
when: null,
usesChronometer: false,
timeoutAfter: null,
category: '', // (optional) default: empty string
id: lastId,
userInfo: { sceen: 'home' },
playSound: !!soundName, //<-----
soundName: soundName ? soundName : 'default', //<-----
number: 10,
});
}
