J'utilise XCode 8 et je teste avec iOS 10.2 Beta.
J'ai ajouté les frameworks Photos, PhotosUI et MobileCoreServices au 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 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 plante avec une erreur très inutile:
[access] <private>
C'est tout. Rien d'autre.
En utilisant des instructions break, l'application semble planter à "presentViewController".
Ceci est une toute nouvelle application et je n'ai rien d'autre dans l'interface utilisateur que le bouton de saisie.
De plus, en testant sur iOS 9.3, cela fonctionne bien. Est-ce que je manque quelque chose qui pourrait être changé dans iOS 10?
Réponses:
Vous devrez peut-être mettre la NSPhotoLibraryUsageDescription dans votre plist. Comme
Consultez toutes les descriptions d'utilisation ici .
la source
Dans iOS10, avant d'accéder à des données sensibles à la confidentialité telles que l'appareil photo, les contacts, etc., vous devez demander l'autorisation, sinon votre application se bloquera lorsque vous y accéderez.Ensuite, Xcode se connectera comme:
Comment gérer cela?
Ouvrez le fichier dans votre projet nommé
info.plist
, faites un clic droit dessus, ouvrez en tant queSource Code
, collez ce code ci-dessous. Vous pouvez aussi ouvririnfo.plist
queProperty List
par défaut, cliquez sur le bouton Ajouter, Xcode vous donnera le suggérer complétions lors de la frappePrivacy -
à l'aide du clavier ⬆️ et ⬇️.N'oubliez pas d'écrire votre description de la raison pour laquelle vous demandez cette autorisation, entre
<string>
et</string>
, ou votre application sera rejetée par Apple:Si cela ne fonctionne pas, essayez de demander l'autorisation d'arrière-plan:
Ou allez à
target -> Capabilities -> Background Modes -> open the background Modes
:puis nettoyez votre projet, exécutez-le.
Cliquez ici pour plus d'informations: iOS10AdaptationTips .
la source
<string>
et</string>
, ou votre application sera rejetée par Apple.dans iOS 10, vous devez ajouter la clé mentionnée dans l'image ci-dessous si vous utilisez un appareil photo ou une galerie de photos dans votre application
la source
Vous devez ajouter les nouveaux paramètres de confidentialité à votre info.plist.
N'oubliez pas d'ajouter la valeur décrivant pourquoi l'application doit accéder au service.
la source
Dans iOS 10, Apple a changé la façon dont vous pouvez accéder à tous les types de données privées des utilisateurs.
Vous devez ajouter la clé Confidentialité - Description de l'utilisation de la photothèque à votre application
Info.plist
et à ses informations d'utilisation.Pour plus d'informations, veuillez trouver le GIF ci-dessous.
Ou si vous souhaitez ajouter via,
info.plist
vous devez ajouter la clé NSPhotoLibraryUsageDescription .Copiez et collez simplement la chaîne ci-dessous
info.plist
.Veuillez trouver le GIF ci-dessous pour plus d'informations.
la source