据我所知,我正在加载正确的资源。然而,当我尝试使用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的示例代码工作完美,但它使用旧的react导航。下面是ConnectyCube示例代码的链接:
https://github.com/ConnectyCube/connectycube-reactnative-samples/tree/master/RNVideoChatConf
我基本上只是使用最新的反应导航,但其余的代码是相同的connectycube的样例代码,但它不工作相同....我得到React Native Sound Error…
看起来在您的javascript中,v0.11.1中的.play()
方法由于此提交而需要回调https://github.com/zmxv/react-native-sound/commit/ed05fb96f06bbdfc83499b6ced04043f90fbf07d(删除默认回调)。
它可能会在未来的版本中修复,或者可能会更新文档以更改方法签名以要求回调。
现在你可以添加一个回调,错误应该会消失
.play((success)=> console.log(success))
这不是最好的答案,但它仍然有效。在示例代码包中。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
安装完全相同的代码版本这就解决了问题....
这里不多可以做除了看和信任的错误。它说参数不能为空。
我会从这个错误消息中获取信息,并检查您是否在某个地方组件的第一次渲染期间将null传递给play
方法。
这是可能的,你有一个状态值或道具的某个地方,是空的,只有在第一次渲染,并从useEffect
或play
后调用类似的方法获得它的值。
我有同样的问题,版本没有改变,但对于其他问题,我删除了pods/npm并重新安装。不知道发生了什么变化
给play函数添加一个回调解决了这个问题
if (this.shortBeep) this.shortBeep.play((success) => {
if (!success) {
console.log('Sound did not play')
}
});