102 votes

erreur [accès] iOS 10 <private>lors de l’utilisation de UIImagePickerController</private>

J'utilise XCode 8 et tests avec iOS 10.2 Bêta.

J'ai ajouté les Photos, PhotosUI et MobileCoreServices cadres du projet.

Code très simple:

#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

et la mise en œuvre:

- (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];
}

Dès que j'appuie sur le bouton, l'application se bloque avec très inutile d'erreur:

[access] <private>

C'est tout. Rien d'autre.

À l'aide de break, l'application semble se bloquer à "presentViewController".

C'est une marque nouvelle application et je n'ai rien d'autre dans l'INTERFACE utilisateur autre que le bouton capturer.

Aussi, les essais sur iOS 9.3, cela fonctionne bien. Ai-je raté quelque chose qui peut être changé dans iOS 10?

172voto

rockdaswift Points 4800

Vous devrez peut-être mettre la NSPhotoLibraryUsageDescription dans votre plist. Comme

Vérifier toutes les descriptions d’utilisation ici.

132voto

stevechen Points 11

Dans iOS10, Avant d'accéder à la confidentialité des données sensibles comme Appareil photo, Contacts, et ainsi de suite, vous devez en demander l'autorisation, ou de votre application crash lorsque vous y accédez.Puis Xcode journaux comme:

Cette application s'est écrasé parce qu'il a tenté d'accéder à la confidentialité des données sensibles sans une description de l'utilisation. L'application Info.plist doit contenir un NSContactsUsageDescription clé avec une valeur de chaîne expliquant à l'utilisateur comment l'application utilise ces données.

La façon de traiter ce problème?

Ouvrir le fichier dans votre projet nommé info.plist, clic droit, ouvrant Source Code, de coller ce code ci-dessous. Ou vous pouvez ouvrir info.plist comme Property List par défaut, cliquez sur le bouton ajouter, Xcode, vous donnera le suggèrent les achèvements tout en tapant Privacy - avec l'aide du clavier ⬆️ et ⬇️.

N'oubliez pas d'écrire votre description de pourquoi vous demander cette autorisation, entre <string> et </string>, ou de votre application sera rejetée par apple:

<!-- 

23voto

Pritesh Points 947

dans iOS 10, que vous devez ajouter la clé mentionné en image ci-dessous si vous utilisez un appareil photo ou photo galerie dans votre application

.plist image

9voto

Ramkrishna Sharma Points 4819

Dans iOS 10, Apple a changé la façon dont vous pouvez accéder à tout utilisateur privé de types de données.

Vous avez besoin d'ajouter de la vie privée - Bibliothèque de Photos, une Description de l'Utilisation de la clé de votre application Info.plist et leur utilisation de l'information.

Pour plus d'informations, veuillez trouver ci-dessous GIF.

GIF

Ou si vous voulez ajouter via info.plist ensuite, vous devez ajouter NSPhotoLibraryUsageDescription clé.

Il suffit de copier et coller ci-dessous chaîne en info.plist.

<key>NSPhotoLibraryUsageDescription</key>
<string>Take the photo</string>

Veuillez trouver ci-dessous GIF pour plus d'informations.

GIF

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X