首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >世博AV音频在ios上听不到

世博AV音频在ios上听不到
EN

Stack Overflow用户
提问于 2022-10-26 11:29:15
回答 1查看 74关注 0票数 1

大家好,我正在用博览AV播放我的“反应本地”(世博管理)应用程序中的声音,这些音频在android上播放得很好,但在ios上却没有声音,苹果也因此拒绝了应用程序商店的应用程序。

他们说

您的应用程序在UIBackgroundModes键中声明了对音频的支持,但不包括需要持久音频的功能。 下一步 音频键用于在后台向用户提供可听内容的应用程序,例如音乐播放器或流媒体音频应用程序。请修改您的应用程序,以提供可听的内容,而该应用程序在后台或删除“音频”设置从UIBackgroundModes键。

这是世博av音频模式的设置。

代码语言:javascript
运行
复制
Audio.setAudioModeAsync({
        staysActiveInBackground: true,
        shouldDuckAndroid: true,
        interruptionModeIOS: 1,
        interruptionModeAndroid: 1,
        allowsRecordingIOS: true,
        playsInSilentModeIOS: false,
})

我播放的声音是这样的

代码语言:javascript
运行
复制
const {sound} = await Audio.Sound.createAsync(
          {uri: audioURI},
          {
            shouldPlay: true,
          }
        );

这是导入语句

代码语言:javascript
运行
复制
import { Audio } from 'expo-av';

我不知道它是否是由我在应用程序中用于音乐控制的反应本地音乐控制库引起的

进口式

代码语言:javascript
运行
复制
import MusicControl from 'react-native-music-control'

在播放完音频后我马上叫它

代码语言:javascript
运行
复制
MusicControl.setNowPlaying({
            title: currentAudio.title,
            artwork: currentAudio.imageUrl, // URL or RN's image require()
            artist: currentAudio.artist,
            genre: currentAudio.genre,
            duration: (minutesToMilliseconds(currentAudio.playtime) / 1000), // (Seconds)
            description: currentAudio.description, // Android Only
            color: 0xffffff, // Android Only - Notification Color
            colorized: true, // Android 8+ Only - Notification Color extracted from the artwork. Set to false to use the color property instead
            isLiveStream: false, // iOS Only (Boolean), Show or hide Live Indicator instead of seekbar on lock screen for live streams. Default value is false.
        })

拜托,我做错了什么,谢谢你的帮助

EN

Stack Overflow用户

发布于 2022-11-18 17:24:36

我已经修好了

多么?

我认为是react-native-music-control造成的,我在一个函数中配置了世博AV音频和react-native-music-control,并在应用程序的一个主要文件中调用了React.useLayoutEffect中的函数

但是我发现,如果我改变了功能,音频就会被听到。

所以我做的是在调用Audio.Sound.createAsync(...)之后调用这个函数

代码语言:javascript
运行
复制
const {sound} = await Audio.Sound.createAsync(
 { uri: audioDetails.url, },
           {
             shouldPlay: true,
           },
           (status: AVPlaybackStatus) => 
           onPlaybackStatusUpdate(...),
           false
          
         );
       useAppGlobalContextIn.initializeMusicControl() // the function where I called the Expo AV Audio and the MusicControl setup

功能

代码语言:javascript
运行
复制
const initializeMusicControl = React.useCallback(() => {
MusicControl.setCustomNotificationIcon(require('./assets/icon.png'))
MusicControl.enableBackgroundMode(true);
MusicControl.handleAudioInterruptions(true);
    // // // Basic Controls
MusicControl.enableControl('play', true)
MusicControl.enableControl('pause', true)
MusicControl.enableControl('stop', true)
MusicControl.enableControl('nextTrack', true)
MusicControl.enableControl('previousTrack', true)

    // // // Changing track position on lockscreen
MusicControl.enableControl('changePlaybackPosition', true)

    // // Seeking
MusicControl.enableControl('seekForward', false) // iOS only
MusicControl.enableControl('seekBackward', false) // iOS only
MusicControl.enableControl('skipForward', false)
MusicControl.enableControl('skipBackward', false)
    
    // // Android Specific Options
MusicControl.enableControl('seek', true) // Android only
MusicControl.enableControl('setRating', false)
MusicControl.enableControl('volume', true) // Only affected when remoteVolume is enabled
MusicControl.enableControl('remoteVolume', true)
 MusicControl.enableControl('closeNotification', true, { when: 'always' })



    // // // iOS Specific Options
MusicControl.enableControl('enableLanguageOption', false)
MusicControl.enableControl('disableLanguageOption', false)

Audio.setAudioModeAsync({
     staysActiveInBackground: true,
     shouldDuckAndroid: true,
     interruptionModeIOS: 1,
     interruptionModeAndroid: 1,
     allowsRecordingIOS: true,
     playsInSilentModeIOS: true,
 })
}, [])

然后我就这样叫它

代码语言:javascript
运行
复制
React.useLayoutEffect(() => {
initializeMusicControl()
}, [])

这有点棘手,但当我遇到关于世博AV音频的另一个问题时,我决定改用反应-本地-轨道-播放器,它工作得非常完美,它既处理了世博会AV音频和react-native-music-control的功能,又提供了难以置信的事件来处理远程事件。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74207006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档