Expo Audio staysActiveInBackground不起作用

时间:2019-10-19 00:33:33

标签: react-native audio expo

我试图在后台听音乐(流媒体),但是当我打开另一个应用程序时,流媒体停止了。

  const soundObject = new Audio.Sound();

  async function playAudio() {
    try {
      await soundObject.loadAsync({
        uri: "http://suaradio2.dyndns.ws:11004/stream"
      });
      await soundObject.playAsync();
      soundObject.setAudioModeAsync({
        staysActiveInBackground: true
      });
      // Your sound is playing!
    } catch (error) {
      // An error occurred!
    }
  }

2 个答案:

答案 0 :(得分:1)

工作小吃:https://snack.expo.io/@djalik/staysactiveinbackground

您必须设置setAudioModeAsync的所有参数:

await Audio.setAudioModeAsync({
        staysActiveInBackground: true,
        interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DO_NOT_MIX,
        shouldDuckAndroid: true,
        playThroughEarpieceAndroid: true,
        allowsRecordingIOS: true,
        interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_DO_NOT_MIX,
        playsInSilentModeIOS: true,
      });

答案 1 :(得分:0)

它可以在Android上运行,但不能在带有expo的iOS上运行。需要在app.json

中添加以下代码
"ios": {
      "supportsTablet": true,
      "bundleIdentifier": "com.yourcompany.yourappname",
      "buildNumber": "1.0.0",
      "infoPlist": {
        "UIBackgroundModes": [
          "audio"
        ]
      }
    },

在那之后,您必须创建iOS的独立应用程序,它才能在独立应用程序上运行。