Wenn Sie mit der neuen Funktion in iOS 8 eine Kamera in der App verwenden, werden Sie um Erlaubnis zum Zugriff auf die Kamera gebeten. Wenn Sie versuchen, das Bild erneut aufzunehmen, werden Sie um Erlaubnis zum Zugriff auf die Fotobibliothek gebeten. Wenn ich das nächste Mal die App starte, möchte ich überprüfen, ob die Kamera- und Fotobibliothek Zugriffsberechtigungen dafür hat.
Für die Kamera überprüfe ich es durch
if ([AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo] == AVAuthorizationStatusDenied)
{
// do something
}
Ich suche etwas Ähnliches für die Fotobibliothek.
ios
ios8
phphotolibrary
tech_human
quelle
quelle
Ich weiß, dass dies bereits beantwortet wurde, aber um die @ Tim-Antwort zu erweitern, ist hier der Code, den Sie benötigen (iOS 8 und höher):
Vergiss es nicht
#import <Photos/Photos.h>
Wenn Sie Swift 3.0 oder höher verwenden, können Sie den folgenden Code verwenden:
Vergiss es nicht
import Photos
quelle
Genau wie die Formalität, Swift 2.X Version:
Und Swift 3 / Swift 4 :
quelle
import Photos
Sie nicht, wenn Sie PHPhotoLibraryHier ist eine vollständige Anleitung für iOS 8 und höher (ohne ALAssetLibrary):
Zuerst müssen wir eine Verwendungsbeschreibung bereitstellen, wie sie jetzt von PHPhotoLibrary benötigt wird.
Dazu müssen wir die
info.plist
Datei öffnen , den Schlüssel findenPrivacy - Photo Library Usage Description
und einen Wert dafür bereitstellen. Wenn der Schlüssel nicht vorhanden ist, erstellen Sie ihn einfach.Hier ist ein Bild zum Beispiel:
Stellen Sie außerdem sicher, dass der Wert des Schlüssels
Bundle name
in nicht leer istinfo.plist
Datei ist.Wenn wir nun eine Beschreibung haben, können wir normalerweise eine Autorisierung anfordern, indem wir die
requestAuthorization
Methode aufrufen :HINWEIS 1:
requestAuthorization
Tatsächlich wird nicht bei jedem Anruf eine Warnung angezeigt. Es wird einmal pro Zeit angezeigt, speichert die Antwort des Benutzers und gibt sie jedes Mal zurück, anstatt erneut eine Warnung anzuzeigen. Da dies jedoch nicht erforderlich ist, finden Sie hier einen nützlichen Code, der jedes Mal, wenn wir eine Berechtigung benötigen (mit Umleitung zu Einstellungen), eine Warnung anzeigt:Häufiges Problem 1: Einige Benutzer beschweren sich dass die App nach den oben genannten Änderungen in der
info.plist
Datei keine Warnung anzeigt.Lösung: Versuchen Sie zum Testen,
Bundle Identifier
von der Projektdatei zu einer anderen zu wechseln , bereinigen Sie die App und erstellen Sie sie neu. Wenn es funktioniert hat, ist alles in Ordnung, benennen Sie es wieder um.Häufiges Problem 2: Es gibt einen bestimmten Fall, in dem die Abrufergebnisse nicht aktualisiert werden (und die Ansichten, in denen Bilder aus diesen Abrufanforderungen verwendet wurden, immer noch entsprechend leer sind), wenn die App Berechtigungen für Fotos erhält, während sie wie in der Dokumentation versprochen ausgeführt wird.
Eigentlich passiert es, wenn wir FALSCHEN Code wie folgt verwenden:
In diesem Fall werden
viewDidLoad
Ansichten nicht aktualisiert, wenn der Benutzer die Erteilung von Berechtigungen verweigert und dann zu den Einstellungen gesprungen, zugelassen und zur App zurückgesprungen ist, da keine Abrufanforderungen[self reloadCollectionView]
gesendet wurden.Lösung: Wir müssen nur anrufen
[self reloadCollectionView]
und andere Abrufanforderungen ausführen, bevor wir eine Autorisierung wie diese benötigen:quelle
Ich habe es so gemacht:
Und ich sende ein, was ich je nach Erfolg oder Misserfolg als Block tun muss.
quelle
UPDATE für: SWIFT 3 IOS10
Hinweis: Importieren Sie Fotos in AppDelegate.swift wie folgt
// AppDelegate.swift
UIKit importieren
Fotos importieren
...
Antwort von Alvin George aktualisiert
quelle
Die Verwendung von ALAssetsLibrary sollte funktionieren:
quelle
quelle
Hier ist ein kleiner und einfacher Ausschnitt, den ich normalerweise benutze.
quelle
Swift 2.0+
Basierend auf einer Kombination von Antworten hier habe ich eine Lösung für mich selbst erstellt. Diese Methode prüft nur, ob keine Berechtigung vorliegt.
Wir haben eine Methode
pickVideo()
, die Zugriff auf Fotos erfordert. Wenn es nicht.Authorized
um Erlaubnis bittet.Wenn keine Erlaubnis erteilt wird,
pickVideo()
wird nicht aufgerufen und der Benutzer kann kein Video auswählen.Solange der Benutzer keinen vollständigen Zugriff auf Fotos gewährt hat, können Sie vermeiden, dass er Ihre Anwendung auswählt oder abstürzt.
quelle