wendux / DSBridge-IOS

:earth_asia: A modern cross-platform JavaScript bridge, through which you can invoke each other's functions synchronously or asynchronously between JavaScript and native.
1.95k stars 303 forks source link

请问 dsuiDelegate 与 requestMediaCapturePermissionFor 代理实现 #147

Open liuyu8848 opened 2 years ago

liuyu8848 commented 2 years ago

你好,我在设置 webView1.dsuiDelegate = self 之后

H5页面请求录音时 并没有触发 WKUIDelegate 的 func webView(_ webView: WKWebView, requestMediaCapturePermissionFor 方法

于是我将 webView1.uiDelegate = self 之后,requestMediaCapturePermissionFor可以触发,但是所有的桥接功能都失效了

谢谢

QinYaffeei commented 12 months ago

因为DWKWebView已经持有UIDelegate,但是作者暂时没有实现该代理方法,需要在DWKWebView.m中增加该代理的实现,如: - (void)webView:(WKWebView *)webView requestMediaCapturePermissionForOrigin:(WKSecurityOrigin *)origin initiatedByFrame:(WKFrameInfo *)frame type:(WKMediaCaptureType)type decisionHandler:(void (^)(WKPermissionDecision))decisionHandler API_AVAILABLE(ios(15.0)){ if (self.DSUIDelegate && [self.DSUIDelegate respondsToSelector:@selector(webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:)]) { return [self.DSUIDelegate webView:webView requestMediaCapturePermissionForOrigin:origin initiatedByFrame:frame type:type decisionHandler:decisionHandler]; } decisionHandler(WKPermissionDecisionGrant); }

aoxiaojun666 commented 7 months ago

iOS17 点允许后,前端提示 notAllowed。而直接实现WebView自己的uiDelegate却不会有该问题