javascript - son de notification push React Native
J'essaie d'ajouter du son à ma notification push locale. J'utilise RN 0.45.1 et react-native-push-notifications 3.0.0
J'arrive à programmer des notifications sur iOS et Android avec le son par défaut. Je n'ai pas réussi à ajouter un son personnalisé.
J'ai des fichiers audio de type mp3. J'ai essayé ce qui suit :
- placez le fichier dans mon dossier de projet : '/src/assests/sounds/sound.mps' (un dossier à l'intérieur de mon projet)
et ensuite :
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,
});
- une autre tentative a été : mettre le fichier son sous le dossier android : ..\android\app\src\mainesaw\sound.mp3
et la notification était :
PushNotification.localNotificationSchedule({
message: 'Test message',
date: new Date(Date.now() + (60 * 1000)),
repeatType: 'time',
repeatTime: 60 * 1000,
sound: sound.mp3,
});
Réponse #1
Il y a une propriété pour le son
soundName: 'default',Son à jouer lorsque la notification est affichée. Une valeur de 'default' joue le son par défaut. Il peut être défini sur un son personnalisé tel que android.resource://com.xyz/raw/my_sound. Il recherchera le fichier audio 'my_sound' dans le répertoire 'res/raw' et le lira. par défaut : 'default' (le son par défaut est joué)
Pour les sons personnalisés
Dans Android, ajoutez votre fichier sonore personnalisé à [project_root]/android/app/src/main/res/raw
Dans iOS, ajoutez votre fichier sonore personnalisé aux ressources du projet dans xCode.
Dans le JSON de notification de localisation, spécifiez le nom complet du fichier :
soundName: 'mon_son.mp3'
Réponse #2
Vérifiez la fonction scheduleNotif(soundName) dans l'exemple suivant des documents de react-native-push-notification. L'exemple précédent a fonctionné pour moi sur mon appareil Android. Ajoutez simplement le nom du fichier sonore sans indiquer son format "success", pas "success.mp3" .. Le fichier sonore doit être situé dans le dossier raw [project_root]/android/app/src/main/res/raw
Ma méthode modifiée pour mon application nécessite :
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,
});
}
