gpt4 book ai didi

javascript - 从 objective-c 到Javascript WKWebkit AVPlayer通知游戏结束

转载 作者:行者123 更新时间:2023-12-03 01:39:52 25 4
gpt4 key购买 nike

音频播放完毕后,我试图从ObjC传递到JavaScript的通知。

我目前叫Obj C像这样播放音频(来自JS):

window.webkit.messageHandlers.playLetter.postMessage(audioSrc);

在ObjC端,我有以下方法:
- (void) userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)scriptMessage {

if([scriptMessage.name isEqualToString:@“playLetter”]){
_contentAudioPlayer = [[AVPlayer alloc] initWithURL:[NSURL URLWithString:scriptMessage.body]];
[_contentAudioPlayer play];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd) name:AVPlayerItemDidPlayToEndTimeNotification object:_contentAudioPlayer.currentItem];
}
}

音频结束播放后,通知中心将调用此方法:
- (void) playerItemDidReachEnd {
NSLog(@"audio ended");
}

每次音频结束都成功。

我的问题是:

如何通知我的JavaScript音频已结束?在JS方面,我需要“等待”音频的结束,以执行预期的操作

如果您需要更多信息,请告诉我。

提前谢谢。

最佳答案

我在应用程序的JavaScript端创建了一个自定义事件,并使用playerItemDidReachEnd中的evaluateJavaScriptwebView方法中调度了该事件:

- (void) playerItemDidReachEnd {
[_webView evaluateJavaScript:
@“var event = new CustomEvent(‘letterplayed’, {\n”
@” detail: {\n”
@” message: ‘letter audio had finished playing’,\n”
@” time: new Date(),\n”
@” },\n”
@” bubbles: true,\n”
@” cancelable: true\n”
@“});\n”
@“window.dispatchEvent(event);”
completionHandler:nil];
}

关于javascript - 从 objective-c 到Javascript WKWebkit AVPlayer通知游戏结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48259489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com