Używam XCode 8 i testuję z iOS 10.2 Beta.
Dodałem do projektu frameworki Photos, PhotosUI i MobileCoreServices.
Bardzo prosty kod:
#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
i realizacja:
- (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];
}
Jak tylko kliknę przycisk, aplikacja zawiesza się z bardzo bezużytecznym błędem:
[access] <private>
Otóż to. Nic więcej.
Korzystając z instrukcji break, aplikacja wydaje się zawieszać pod adresem „presentViewController”.
To zupełnie nowa aplikacja i nie mam nic innego w interfejsie użytkownika poza przyciskiem pobierania.
Również testowanie na iOS 9.3 działa dobrze. Czy brakuje mi czegoś, co można by zmienić w iOS 10?
Odpowiedzi:
Może być konieczne umieszczenie NSPhotoLibraryUsageDescription w pliku plist. Lubić
Sprawdź wszystkie opisy użycia tutaj .
źródło
W systemie iOS10, zanim uzyskasz dostęp do danych wrażliwych na prywatność, takich jak aparat, kontakty itp., Musisz poprosić o autoryzację, w przeciwnym razie Twoja aplikacja ulegnie awarii podczas uzyskiwania do nich dostępu.
Jak sobie z tym poradzić?
Otwórz plik w swoim projekcie o nazwie
info.plist
, kliknij go prawym przyciskiem myszy, otwierając jakoSource Code
, wklej poniższy kod do niego. Czy można otworzyćinfo.plist
jakoProperty List
domyślnie, kliknij przycisk Add, Xcode daje sugerować uzupełnienia podczas pisaniaPrivacy -
za pomocą klawiatury ⬆️ i ⬇️.Pamiętaj, aby opisać, dlaczego prosisz o tę autoryzację w okresie od
<string>
do</string>
, lub Twoja aplikacja zostanie odrzucona przez Apple:Jeśli to nie zadziała, spróbuj poprosić o autoryzację w tle:
Lub przejdź do
target -> Capabilities -> Background Modes -> open the background Modes
:następnie wyczyść projekt, uruchom go.
Przejdź tutaj, aby uzyskać więcej informacji: iOS10 AdaptationTips .
źródło
<string>
do</string>
, lub Twoja aplikacja zostanie odrzucona przez Apple.w iOS 10 musisz dodać klucz wymieniony na poniższym obrazku, jeśli używasz aparatu lub galerii zdjęć w swojej aplikacji
źródło
Musisz dodać nowe ustawienia prywatności do ciebie info.plist.
Nie zapomnij dodać wartości opisującej, dlaczego aplikacja musi mieć dostęp do usługi.
źródło
W iOS 10 firma Apple zmieniła sposób uzyskiwania dostępu do prywatnych typów danych użytkownika.
Musisz dodać klucz Prywatność - opis użycia biblioteki zdjęć do informacji o swojej aplikacji
Info.plist
i ich użyciu.Więcej informacji znajdziesz w poniższym pliku GIF.
Lub jeśli chcesz dodać przez
info.plist
, musisz dodać klucz NSPhotoLibraryUsageDescription .Po prostu skopiuj i wklej poniższy ciąg
info.plist
.Aby uzyskać więcej informacji, znajdź poniższy GIF.
źródło