Ich verwende XCode 8 und teste mit iOS 10.2 Beta.
Ich habe die Frameworks Photos, PhotosUI und MobileCoreServices zum Projekt hinzugefügt.
Sehr einfacher Code:
#import <Photos/Photos.h>
#import <PhotosUI/PhotosUI.h>
#import <MobileCoreServices/MobileCoreServices.h>
@interface ViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate, PHLivePhotoViewDelegate>
@property (strong, nonatomic) IBOutlet UIImageView *imageview;
@end
und Umsetzung:
- (IBAction)grab:(UIButton *)sender{
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.allowsEditing = NO;
picker.delegate = self;
// make sure we include Live Photos (otherwise we'll only get UIImages)
NSArray *mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeLivePhoto];
picker.mediaTypes = mediaTypes;
// bring up the picker
[self presentViewController:picker animated:YES completion:nil];
}
Sobald ich auf die Schaltfläche tippe, stürzt die App mit einem sehr nutzlosen Fehler ab:
[access] <private>
Das ist es. Nichts anderes.
Mit break-Anweisungen scheint die App bei "presentViewController" abzustürzen.
Dies ist eine brandneue App und ich habe nichts anderes in der Benutzeroberfläche als den Grab-Button.
Auch beim Testen unter iOS 9.3 funktioniert dies einwandfrei. Vermisse ich etwas, das in iOS 10 geändert werden könnte?
Antworten:
Möglicherweise müssen Sie die NSPhotoLibraryUsageDescription in Ihre Liste aufnehmen. Mögen
Überprüfen Sie alle Verwendungsbeschreibungen hier .
quelle
Bevor Sie in iOS10 auf datenschutzrelevante Daten wie Kamera, Kontakte usw. zugreifen, müssen Sie nach der Autorisierung fragen. Andernfalls stürzt Ihre App ab, wenn Sie darauf zugreifen. Anschließend protokolliert Xcode wie folgt:
Wie gehe ich damit um?
Öffnen Sie die Datei in Ihrem Projektnamen
info.plist
, klicken Sie mit der rechten Maustaste darauf und öffnen Sie sieSource Code
. Fügen Sie diesen Code unten ein. Oder Sie können öffnen ,info.plist
wieProperty List
standardmäßig, klicken Sie auf die Schaltfläche Hinzufügen, Xcode geben Ihnen die vorschlagen Vervollständigungen während der EingabePrivacy -
mit Hilfe der Tastatur ⬆️ und ⬇️.Denken Sie daran, Ihre Beschreibung zu schreiben, warum Sie zwischen
<string>
und um diese Autorisierung bitten</string>
, oder Ihre App wird von Apple abgelehnt:Wenn dies nicht funktioniert, fragen Sie nach der Hintergrundautorisierung:
Oder gehen Sie zu
target -> Capabilities -> Background Modes -> open the background Modes
:Bereinigen Sie dann Ihr Projekt und führen Sie es aus.
Weitere Informationen finden Sie hier: iOS10AdaptationTips .
quelle
<string>
und um diese Autorisierung bitten</string>
, oder Ihre App wird von Apple abgelehnt.In iOS 10 müssen Sie den im folgenden Bild genannten Schlüssel hinzufügen, wenn Sie eine Kamera oder eine Fotogalerie in Ihrer App verwenden
quelle
Sie müssen die neuen Datenschutzeinstellungen zu Ihrer info.plist hinzufügen.
Vergessen Sie nicht, den Wert hinzuzufügen, der beschreibt, warum die App auf den Dienst zugreifen muss.
quelle
In iOS 10 hat Apple geändert, wie Sie auf private Datentypen von Benutzern zugreifen können.
Sie müssen den Schlüssel " Datenschutz - Fotobibliothek - Nutzungsbeschreibung" zu den App-
Info.plist
und Nutzungsinformationen Ihrer App hinzufügen .Weitere Informationen finden Sie im folgenden GIF.
Wenn Sie über hinzufügen möchten,
info.plist
müssen Sie den NSPhotoLibraryUsageDescription- Schlüssel hinzufügen .Kopieren Sie einfach die Zeichenfolge und fügen Sie sie ein
info.plist
.Weitere Informationen finden Sie im folgenden GIF.
quelle