反应本机推送通知声音

时间:2017-08-09 13:16:58

标签: javascript react-native push-notification

我正在尝试将声音添加到本地推送通知中。 我正在使用RN 0.45.1和 react-native-push-notifications 3.0.0

我设法使用默认声音在iOS和Android中安排通知。 我无法添加自定义声音。

我有mp3类型的声音文件。 我尝试了以下方法:

  1. 将文件放在我的项目文件夹中: '/src/assests/sounds/sound.mps'(我项目中的一个文件夹)
  2. 而不是:

    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,
            });
    
    1. 另一次尝试是: 将声音文件放在android文件夹下:.. \ android \ app \ src \ main \ res \ raw \ sound.mp3
    2. 并且通知是:

         PushNotification.localNotificationSchedule({
                  message: 'Test message',
                  date: new Date(Date.now() + (60 * 1000)),
                  repeatType: 'time',
                  repeatTime: 60 * 1000,
                  sound: sound.mp3,
              });
      

3 个答案:

答案 0 :(得分:6)

有声音属性

soundName: 'default',

显示通知时播放的声音。 值为'默认'播放默认声音。 它可以设置为自定义声音,如android.resource://com.xyz/raw/my_sound'。它将寻找' my_sound'音频文件在res / raw'目录并播放它。默认值:'默认' (播放默认声音)

自定义声音

在android中,将自定义声音文件添加到[project_root] / android / app / src / main / res / raw

在iOS中,将自定义声音文件添加到xCode中的项目资源。

在位置通知中,json指定完整的文件名:

soundName:' my_sound.mp3'

答案 1 :(得分:0)

检查 scheduleNotif(soundName) 文档中以下 example 中的 react-native-push-notification 函数。前面的示例在我的 Android 设备上对我有用。只需添加声音文件的名称而不写其格式“success”,而不是“success.mp3”。声音文件应位于raw文件夹[project_root]/android/app/src/main/res/raw

我针对我的应用需求修改的方法:

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,
  });
}

答案 2 :(得分:0)

请使用这个payload,在此之前,需要创建一个频道。它适用于应用程序被杀死状态和关闭状态。

{ “通知”:{ "title": "测试通知", "body": "测试通知", "android_channel_id": "channelID" }, “数据”:{ "property1":"value1", “财产 2”:42 } }