通知从 Objective C 到 Javascript 的播放结束 WKWebkit AVPlayer
Notify end of play from Objective C to Javascript WKWebkit AVPlayer
我正在尝试在我的音频播放完毕后从 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 方面,我需要 "wait" 音频结束才能执行预期的操作过程
如果您需要更多信息,请告诉我。
提前致谢。
我在我的应用程序的 JavaScript 端创建了一个自定义事件,并在 playerItemDidReachEnd
方法中使用 evaluateJavaScript
从 webView
:
- (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];
}
我正在尝试在我的音频播放完毕后从 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 方面,我需要 "wait" 音频结束才能执行预期的操作过程
如果您需要更多信息,请告诉我。
提前致谢。
我在我的应用程序的 JavaScript 端创建了一个自定义事件,并在 playerItemDidReachEnd
方法中使用 evaluateJavaScript
从 webView
:
- (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];
}