【问题标题】:react native push notification sound反应原生推送通知声音
【发布时间】:2018-01-17 09:50:39
【问题描述】:

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

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

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

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

比:

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

通知是:

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

【问题讨论】:

    标签: javascript react-native push-notification


    【解决方案1】:

    声音有属性

    soundName: 'default',

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

    自定义声音

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

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

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

    声音名称:'my_sound.mp3'

    【讨论】:

    • 嗨,我阅读了 npm 中的文档。如果您查看我的第二个选项,我尝试了文档中所说的但没有运气
    • 我认为你使用sound 作为参数,但你需要使用soundName 所以sound: sound.mp3, 不正确soundName : sound.mp3, 是正确的
    • 感谢 Nisarg,我在您的第一次回复中错过了“soundName”属性...我专注于文件位置
    • 你好,我正在使用这个是模块,它是否适用于这个属性...如果它在我给这个的地方工作github.com/urbanairship/react-native-module/issues/63
    • 你知道在“请勿打扰”模式下如何播放声音吗?
    【解决方案2】:

    检查来自react-native-push-notification 文档的以下example 中的scheduleNotif(soundName) 函数。前面的示例适用于我的 Android 设备。只需添加声音文件的名称而不写其格式“成功”,而不是“成功.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,
      });
    }
    

    【讨论】:

      【解决方案3】:

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

      { “通知”:{ "title": "测试通知", "body": "测试通知", “android_channel_id”:“channelID” }, “数据”:{ “属性 1”:“值 1”, “属性 2”:42 } }

      【讨论】:

        猜你喜欢
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        • 2016-05-29
        • 2020-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多