从 WKWebView 打开照片库或相机?

Open photos library or camera from WKWebView?

我有一个包含 WKWebView 的应用程序,在 webview 中,我们具有从照片库附加图像的功能。当从 Safari 或 Chrome 打开页面时,这个东西工作正常,但在我的应用程序中照片选项没有打开。

我搜索了几个答案,但他们告诉我要注入自定义 javascript 来附加一个监听器。但没有任何效果。

您需要在代码中手动授予该应用程序权限。以便您的 WKWebView 可以打开照片库。

在您的 Info.plist 文件中添加以下两个密钥:

<key>NSPhotoLibraryUsageDescription</key>
<string>Needs permission to select photos</string>
<key>NSCameraUsageDescription</key>
<string>Needs permission to take photos</string>

并添加以下代码以在 WKWebView 中加载图像附件功能之前询问照片权限(不要忘记 import Photos 框架):

    let status = PHPhotoLibrary.authorizationStatus()
    if status == .authorized {
        print("already authorized")
    } else {
        PHPhotoLibrary.requestAuthorization({(_ status: PHAuthorizationStatus) -> Void in
            switch status {
            case .authorized:
                print("Authorized")
            case .denied:
                print("Denied")
            case .notDetermined:
                print("Not determined")
            case .restricted:
                print("Restricted")
            @unknown default:
                print("Unknown")
            }
        })
    }