javascript错误是:Unhandled Promise Rejection: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.
我的设置可在其他浏览器,台式机和移动设备上使用。
它的工作方式是:
first_audio_played = false;
first_audio_played = true;
(然后删除触摸监听器)if(first_audio_played) some_other_audio.play();
这样,只有 first 播放的音频需要直接的用户输入。之后,所有音频都可以自由地由游戏内事件,计时等触发。
这似乎是大多数浏览器中音频的“规则”。是iOS“规则”,每音频需要通过用户输入触发吗?还是我缺少其他步骤?
答案 0 :(得分:0)
对于我的JavaScript游戏,声音最近在iOS上不再起作用。它们都具有readyState = 4,但是只有我在水龙头上播放的声音可以播放,其他声音则不会播放。也许您可以在第一次点击时播放所有声音。但是我发现目前对我有效的解决方案是从ajax arraybuffers加载所有声音并使用encodeAudioData()。然后,一旦您通过用户点击(不是在身体上)播放了1种声音,它们就会在任何时候播放。
这是我的工作代码,第二种方法在底部。当我点击以播放声音2时,声音1也开始工作。
const httpOptions = {
headers: new HttpHeaders({'Content-Type': 'application/json'})
};
export class GalleryService {
galleryUrl: string = 'http://localhost:5555/posts';
Mycollection: Picture[] = myCollection;
constructor(private http: HttpClient) {
}
getPictures(): Observable<Picture[]> {
return this.http.get<Picture[]>(`${this.galleryUrl}`);
}
edit(id:number): Observable<Picture> {
return this.http.get<Picture>(`${this.galleryUrl}/${id}`);
}
update(title: string, url: string, id: number): Observable<Picture> {
const postEdObj = {
title,
url
};
return this.http.put<Picture>(`${this.galleryUrl}/${id}`, postEdObj, httpOptions);
}
}
答案 1 :(得分:0)
您可以根据您的 WebView 类(或等效的Swift)使用[WKWebViewConfiguration setMediaTypesRequiringUserActionForPlayback:WKAudiovisualMediaTypeNone]
或[UIWebView setMediaPlaybackRequiresUserAction:NO]
。