通知从 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 方法中使用 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];
}