Estou usando o XCode 8 e testando com iOS 10.2 Beta.
Eu adicionei as estruturas Photos, PhotosUI e MobileCoreServices ao projeto.
Código muito simples:
#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
e implementação:
- (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];
}
Assim que toco no botão, o aplicativo trava com um erro muito inútil:
[access] <private>
É isso aí. Nada mais.
Usando instruções break, o aplicativo parece travar em "presentViewController".
Este é um aplicativo totalmente novo e não tenho mais nada na interface do usuário além do botão de captura.
Além disso, testando no iOS 9.3, isso funciona bem. Estou perdendo algo que pode ser alterado no iOS 10?
Respostas:
Pode ser necessário colocar NSPhotoLibraryUsageDescription em seu plist. Gostar
Verifique todas as descrições de uso aqui .
fonte
No iOS10, antes de acessar dados confidenciais como câmera, contatos e assim por diante, você deve pedir a autorização, ou seu aplicativo irá travar ao acessá-los. Então o Xcode irá registrar como:
Como lidar com isso?
Abra o arquivo em seu projeto chamado
info.plist
, clique com o botão direito nele, abrindo comoSource Code
, cole o código abaixo nele. Ou você pode abririnfo.plist
comoProperty List
padrão, clique no botão adicionar, o Xcode lhe dará as conclusões sugeridas enquanto você digitaPrivacy -
com a ajuda do teclado ⬆️ e ⬇️.Lembre-se de escrever sua descrição do motivo pelo qual solicitou essa autorização, entre
<string>
e</string>
, ou seu aplicativo será rejeitado pela apple:Se não funcionar, tente pedir a autorização de fundo:
Ou vá para
target -> Capabilities -> Background Modes -> open the background Modes
:em seguida, limpe seu projeto e execute-o.
Acesse aqui para obter mais informações: iOS10AdaptationTips .
fonte
<string>
e</string>
, ou seu aplicativo será rejeitado pela apple.no iOS 10 você precisa adicionar a chave mencionada na imagem abaixo se estiver usando uma câmera ou galeria de fotos em seu aplicativo
fonte
Você precisa adicionar as novas configurações de privacidade ao seu info.plist.
Não se esqueça de adicionar o valor que descreve por que o aplicativo precisa acessar o serviço.
fonte
No iOS 10, a Apple mudou a forma como você pode acessar qualquer tipo de dados privados do usuário.
Você precisa adicionar a chave Privacidade - Descrição de uso da biblioteca de fotos às
Info.plist
informações de uso do seu aplicativo .Para obter mais informações, encontre o GIF abaixo.
Ou, se quiser adicionar via
info.plist
, será necessário adicionar NSPhotoLibraryUsageDescription chave .Basta copiar e colar a string abaixo
info.plist
.Encontre o GIF abaixo para obter mais informações.
fonte