从iOS 13开始,苹果允许我们在iOS Safari中始终记住允许相机权限标志。(参考此 答案)。 同时,iOS Twitter PWA也具有此功能。
但是有没有办法在WKWebview中启用它?
有人知道如何实现吗?
从iOS 13开始,苹果允许我们在iOS Safari中始终记住允许相机权限标志。(参考此 答案)。 同时,iOS Twitter PWA也具有此功能。
但是有没有办法在WKWebview中启用它?
有人知道如何实现吗?
默认情况下添加WebView权限决策授予权限
Objective-C:
- (void) webView:(WKWebView *)webView
requestMediaCapturePermissionForOrigin:(WKSecurityOrigin *)origin
initiatedByFrame:(WKFrameInfo *)frame type:(WKMediaCaptureType)type
decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler
API_AVAILABLE(ios(15.0))
{
decisionHandler(WKPermissionDecisionGrant);
}
快捷:
func webView(_ webView: WKWebView,
requestMediaCapturePermissionFor
origin: WKSecurityOrigin,initiatedByFrame
frame: WKFrameInfo,type: WKMediaCaptureType,
decisionHandler: @escaping (WKPermissionDecision) -> Void){
decisionHandler(.grant)
}
在stackoverflow上,必须满足的条件比现有答案和其他答案要多得多。我附上了一个简化的ViewController来展示需要添加的所有内容。
ViewController.swift
class ViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!;
override func loadView() {
super.loadView();
let webViewConfiguration = WKWebViewConfiguration();
webViewConfiguration.allowsInlineMediaPlayback = true;
webView = WKWebView(frame:.zero , configuration: webViewConfiguration);
webView.uiDelegate = self;
}
override func viewDidLoad() {
super.viewDidLoad();
webView.load(...);
}
@available(iOS 15.0, *)
func webView(_ webView: WKWebView,
decideMediaCapturePermissionsFor origin: WKSecurityOrigin,
initiatedBy frame: WKFrameInfo,
type: WKMediaCaptureType) async -> WKPermissionDecision {
return .grant;
}
}
目前没有API可以将PWA的权限从“询问”更改为“允许”。在WebKit上有一个相关问题:https://bugs.webkit.org/show_bug.cgi?id=215884。
WKUIDelegate
,webView.uiDelegate = self
和webViewConfiguration.allowsInlineMediaPlayback = true
。如果没有这些,它将无法正常工作。请参考我的答案:https://dev59.com/Hb_qa4cB1Zd3GeqPMKMb#76838976 - mikep