Ich habe ein WKWebView in einer App implementiert. Auf der angezeigten Webseite befindet sich eine Dateieingabe, über die ein Bild aus Fotos importiert werden soll. Immer wenn ich auf diese Eingabe drücke und entweder "Foto aufnehmen" oder "Fotobibliothek" auswähle, stürzt die App plötzlich ab, was meiner Meinung nach darauf zurückzuführen ist, dass der App die Berechtigung fehlt, entweder ein Foto aufzunehmen oder aus der Bibliothek zu importieren.
Wie kann ich eine Berechtigungsanforderung senden, wenn der Benutzer eine der genannten Methoden auswählt (Foto aufnehmen oder Fotobibliothek)?
Ich benutze Swift 3.0 mit WKWebView.
Antworten:
Sie müssen die folgende Berechtigung in Info.plist hinzufügen. Mehr Referenz
Kamera:
Foto:
quelle
Sie können den Zugriff auch programmgesteuert anfordern, was ich bevorzuge, da Sie in den meisten Fällen wissen müssen, ob Sie den Zugriff erhalten haben oder nicht.
Swift 4 Update:
Sie teilen keinen Code, daher kann ich nicht sicher sein, ob dies für Sie nützlich wäre, aber im Allgemeinen wird er als Best Practice verwendet.
quelle
AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo) { response in
. Vergiss es nichtimport AVFoundation
.Datei: Info.plist
Kamera
Fotos
Fotos speichern
Ort
Apple Music:
Kalender
Siri
quelle
Verwenden Sie die oben genannten Plist-Einstellungen und den entsprechenden Accessor (AVCaptureDevice oder PHPhotoLibrary), benachrichtigen Sie sie jedoch auch und senden Sie sie an die Einstellungen, wenn Sie dies wirklich benötigen.
Swift 4.0 und 4.1
quelle
Datei: Info.plist
Für die Kamera :
Für die Fotobibliothek soll diese App dem App-Benutzer das Durchsuchen der Fotobibliothek ermöglichen.
quelle
Swift 5 Der einfachste Weg, Berechtigungen hinzuzufügen, ohne dies programmgesteuert ausführen zu müssen, besteht darin, die Datei info.plist zu öffnen und das + neben der Liste Informationseigenschaften auszuwählen. Scrollen Sie durch die Dropdown-Liste zu den Datenschutzoptionen und wählen Sie Nutzungsbeschreibung für die Datenschutzkamera für den Zugriff auf die Kamera oder Nutzungsbeschreibung für die Datenschutz-Fotobibliothek für den Zugriff auf die Fotobibliothek. Geben Sie den String-Wert rechts ein, nachdem Sie Ihre Auswahl getroffen haben, um den Text einzuschließen, der Ihrem Benutzer angezeigt werden soll, wenn in der Warnmeldung nach Berechtigungen gefragt wird.
quelle
Um die Erlaubnis für die Foto-App zu erhalten, müssen Sie diesen Code hinzufügen (Swift 3) :
quelle
<key>NSPhotoLibraryUsageDescription</key> <string>You can select photos to attach to reports.</string>
in der info.plistIch habe eine Erweiterung geschrieben, die alle möglichen Fälle berücksichtigt:
onAccessHasBeenGranted
ausgeführt.requestAuthorization(_:)
wird aufgerufen.Anwendungsbeispiel:
Erweiterungscode:
quelle
Hervorragende Möglichkeit zur Implementierung einer Kamerasitzung in Swift 5 , iOS 13
https://github.com/egzonpllana/CameraSession
Camera Session ist eine iOS-App, die versucht, die Implementierung von AVCaptureSession so einfach wie möglich zu gestalten.
Über die App können Sie diese Kamerasitzung implementiert finden:
Die benutzerdefinierte Kamera bietet Funktionen wie Taschenlampe und Drehkamera .
quelle