我想在react native项目中测试allowHapticsAndSystemSoundsDuringRecording
变量。我知道有一个instance method允许你改变这个值,但是我不确定如何在我为测试而创建的.mm
文件中使用它。我不熟悉Objective C或Swift,所以这让事情变得有点困难。在.mm
文件中输入setAllowHapticsAndSystemSoundsDuringRecording(true);
会抛出错误,因为该方法无法识别。这是我需要从某个地方导入的东西吗?我知道我可能要创建一个示例,但我不确定是什么。
1条答案
按热度按时间c0vxltue1#
setAllowHapticsAndSystemSoundsDuringRecording
是一个与iOS中的AVAudioSession
类关联的方法,它不是一个React Native函数,也不是可以直接在React Native JavaScript文件中使用的函数。使用这个方法意味着你要深入到原生代码中,无论是Objective-C还是Swift,你必须熟悉如何在React Native中的JavaScript和原生代码之间建立桥梁。您正确地理解了需要在
AVAudioSession
的示例上调用此方法。下面是一个在Objective-C中如何使用它的粗略示例,在
.mm
文件中:首先,在React Native项目的ios文件夹中创建一个名为MyAudioSessionManager.m的新文件。
然后创建MyAudioSessionManager的实际实现:
这是一种简单的用法,并不能处理所有可能的错误。实际的实现应该注意正确地处理任何可能的错误。
最后,要将此功能暴露给React Native,您需要使用React Native的桥接功能。你可以创建一个新的原生模块或方法,将其暴露给React Native,然后从JavaScript代码中调用它。
示例:
你可以在React Native官方文档中阅读更多关于React Native中的原生模块:Native Modules (iOS)。
请记住,直接操作 AVAudioSession 是一项相对高级的操作,需要仔细处理错误并了解iOS音频行为,因此仅在您确定有必要时才执行此操作。在许多情况下,您可以使用React Native或社区中可用的库提供的更高级别的API来完成所需的工作。