【问题标题】:Keep background audio from other apps alive, react-native-video IOS保持来自其他应用程序的背景音频活着,react-native-video IOS
【发布时间】:2020-12-11 18:48:37
【问题描述】:

长时间的听众第一次来电。

到目前为止,当我导航到使用 react-native-video 的屏幕时,我无法从 Spotify 之类的东西中获取背景音乐以在我的 react-native 应用程序中保持活力。在 Android 上,无需进行任何更改即可使其正常工作。我正在使用 react-native (non-expo),目前正在 testflight 上进行测试。

如果这是重复的,请告诉我,但我只找到很多关于如何让您的应用在后台播放的文章(我的问题是相反的),而且我可能不只知道 IOS 对这种类型使用的术语的控制。需要注意的是,此组件的一个实例确实包含音频,但大多数呈现的视频都没有音频。

我试过了:

  1. 使用 react-native-video 文档中的说明更新 AppDelgate.m:

AppDelegate.m

    #import <AVFoundation/AVFoundation.h>  // import
    
     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
      ...
      [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];  // allow
      ...
    }

  • 这似乎没有效果
  1. 使用ignoreSilentSwitch="ignore"obey
  • Obey 成功允许背景音频继续播放,但将有音频的视频静音。
  • 查看源代码,ignoreSilentSwitch=obey 与我添加到 AppDelegate.m 文件中的内容相同,如果使用 isPaused 属性也会被否定。
  • 尝试了许多其他涉及音频的道具,希望能走运。
  1. 在 xcode 中我的应用目标上添加了背景模式 =“音频、Airplay 和画中画”功能。

  2. 有点哭,质疑我的人生选择。

我使用 react-native-video-controls 实现了 react-native-video,但据我了解,它是具有附加功能的同一个模块。这是实现:

<VideoContainer>
    <VideoPlayer
      source={currentVideo}
      navigator={null}
      ref={videoRef}
      resizeMode={'cover'}
      controlTimeout={1500}
      paused={isPaused}
      repeat={true}
      muted={true}
      tapAnywhereToPause={true}
      disableBack={true}
      disableTimer={true}
      disableVolume={true}
      disableFullscreen={true}
      showOnStart={true}
      hideShutterView={true}
    />
 </VideoContainer>

非常感谢任何帮助、建议、反馈或反驳!

【问题讨论】:

    标签: react-native react-native-ios react-native-video


    【解决方案1】:

    找到罪魁祸首。

    所以我将 react-native-audio 用于覆盖静音和非静音视频的某些定时声音。

    当您调用 react-native-sound Sound.setCategory() 方法时,可选的第二个参数是 'mix-with-other's bool。将其设置为 true 并遵循 AppDelegate.m 中的 react-native-video 建议的 AVAudioSession 配置就是我所需要的。

    IOS 类别(react-native-sound 中建议的播放除外): ios sound categories

    Similar issue that helped me find mine

    关于音频的有用 IOS 文档:

    this one

    and this one

    【讨论】:

      【解决方案2】:

      对于 iOS:

      正在使用react-native-video你还应该添加:

      • 将 ignoreSilentSwitch 属性设置为“忽略”

      【讨论】:

        【解决方案3】:

        我发现您缺少启用 backgroundAudio 的道具。引用文档:

        playInBackground 确定媒体是否应在应用程序处于后台时继续播放。这使客户可以继续收听音频。

        false(默认)- 不继续播放媒体

        true - 继续播放媒体 要在 iOS 上使用此功能,您必须:

        在您的 Xcode 项目中启用背景音频 将 ignoreSilentSwitch 属性设置为“忽略” 平台:Android ExoPlayer、Android MediaPlayer、iOS

        【讨论】:

        • 感谢 Menethor!是的,在我的许多尝试之一中,我也把它扔进去了,它确实适用于 Android,我已经发布了我遇到的 IOS 问题的答案。
        猜你喜欢
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        • 1970-01-01
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        相关资源
        最近更新 更多