我正在使用WebView加载具有嵌入式视频播放器的网页。当应用处于振铃模式时,它工作正常。但是当App处于静音模式时没有任何声音。我不太了解IOS。任何帮助将不胜感激。
<WebView startInLoadingState={true}
mediaPlaybackRequiresUserAction={false}
javaScriptEnabled={ true }
source={{uri:'http://ab24.live/player'}}/>
答案 0 :(得分:0)
假设您正在使用ZonedDateTime
,并且遇到了the documentation of atZone()
,则可以使用以下方法来解决此问题:
import { Audio } from "expo";
...
async playInSilentMode() {
// To get around the fact that audio in a `WebView` will be muted in silent mode
// See: https://github.com/expo/expo/issues/211
//
// Based off crazy hack to get the sound working on iOS in silent mode (ringer muted/on vibrate)
// https://github.com/expo/expo/issues/211#issuecomment-454319601
await Audio.setAudioModeAsync({
playsInSilentModeIOS: true,
allowsRecordingIOS: false,
interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_MIX_WITH_OTHERS,
shouldDuckAndroid: false,
interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DO_NOT_MIX,
playThroughEarpieceAndroid: true
});
// console.log(" done: setAudioModeAsync");
await Audio.setIsEnabledAsync(true);
// console.log(" done: setIsEnabledAsync");
const sound = new Audio.Sound();
await sound.loadAsync(
require("./500-milliseconds-of-silence.mp3") // from https://github.com/anars/blank-audio
);
// console.log(" done: sound.loadAsync");
await sound.playAsync();
sound.setIsMutedAsync(true);
sound.setIsLoopingAsync(true);
// console.log(" done: sound.playAsync");
}
然后,在componentDidMount()
中引用它:
async componentDidMount() {
await playInSilentMode();
}
答案 1 :(得分:0)
由于我目前无法发表评论,因此只需补充说它已得到修复(github issue的最新评论)。
因此,为了避免调用该棘手的变通方法,现在只需要向WebView组件添加useWebKit={true}
。
修复已于上个月实施,并且可以与Expo V32 +版本一起使用。