3

据我所知,我正在加载正确的资源。但是,当我尝试使用 React Native Sound 播放声音时,我仍然收到以下错误:

Argument 1 (RCTResponseSenderBlock) of RNSound.play must not be null

如何修复此错误?

我检查了保存声音对象的变量,看起来它已加载:

 LOG  this.outgoingCall {"_duration": 18.1811875, "_filename": "http://localhost:8081/assets/assets/sounds/dialing.mp3?platform=ios&hash=717d95726264d7105360ce45119c9e0e", "_key": 35, "_loaded": true, "_numberOfChannels": 2, "_numberOfLoops": 0, "_pan": 0, "_pitch": 1, "_playing": false, "_speed": 1, "_volume": 1, "onPlaySubscription": {"remove": [Function remove]}, "registerOnPlay": [Function anonymous]}
 LOG  this.incomingCall {"_duration": 5.224458333333334, "_filename": "http://localhost:8081/assets/assets/sounds/calling.mp3?platform=ios&hash=0707a09b5a0268a9cb3e6f9b8d5b32ec", "_key": 36, "_loaded": true, "_numberOfChannels": 2, "_numberOfLoops": 0, "_pan": 0, "_pitch": 1, "_playing": false, "_speed": 1, "_volume": 1, "onPlaySubscription": {"remove": [Function remove]}, "registerOnPlay": [Function anonymous]}
 LOG  this.endCall {"_duration": 1.306, "_filename": "http://localhost:8081/assets/assets/sounds/end_call.mp3?platform=ios&hash=90aad40264cc274ce67046ab241054c0", "_key": 37, "_loaded": true, "_numberOfChannels": 2, "_numberOfLoops": 0, "_pan": 0, "_pitch": 1, "_playing": false, "_speed": 1, "_volume": 1, "onPlaySubscription": {"remove": [Function remove]}, "registerOnPlay": [Function anonymous]}

如果您只是继续到最后,您将在单击呼叫按钮时看到错误...

ConnectyCube 的示例代码运行良好,但它使用旧的反应导航。以下是 ConnectyCube 示例代码的链接:

https://github.com/ConnectyCube/connectycube-reactnative-samples/tree/master/RNVideoChatConf

我基本上只是使用了最新的反应导航,但其余代码与 connectycube 的示例代码相同,但它的工作方式不同......我得到了反应原生声音错误......

4

4 回答 4

2

.play()由于此提交 https://github.com/zmxv/react-native-sound/commit/ed05fb96f06bbdfc83499b6ced04043f90fbf07d(删除了默认回调),在您的 javascript 中看起来 v0.11.1 中的方法需要回调。

它可能会在未来的版本中得到修复,或者可能会更新文档以更改方法签名以要求回调。

现在您可以添加一个回调,错误应该会消失

.play((success)=> console.log(success))
于 2021-11-14T14:01:36.067 回答
1

这不是最好的答案,但它仍然有效。在示例代码 package.json 中有:“react-native-sound”:“^0.11.0”,当我遇到问题时,我使用的是最新版本的 react-native-sound 0.11.X

我最初只是使用npm i react-native-sound 并接受了它给我的任何版本,我认为它是最新的和最新的版本。

在遇到上述问题后,我决定通过安装完全相同的代码版本:npm install react-native-sound@0.11.0 这解决了问题....

于 2021-10-12T08:50:17.207 回答
0

除了查看并相信错误之外,这里没有什么可以做的。它说参数不能为空。

我会从此错误消息中获取信息,并检查您是否在play某处第一次渲染组件时将 null 传递给该方法。

有可能你在某处有一个状态值或一个道具,它只在第一次渲染时为空,并在调用useEffect后从一个或类似的方法中获取它的值play

于 2021-10-11T15:46:09.317 回答
0

我有同样的问题,版本没有改变,但对于其他问题,我删除了 pods / npm 并重新安装。不确定发生了什么变化。

向播放函数添加回调解决了它

           if (this.shortBeep) this.shortBeep.play((success) => {
                if (!success) {
                    console.log('Sound did not play')
                }
            });
于 2021-11-21T19:28:06.500 回答