Używam UIImagePickerController
, aby umożliwić użytkownikowi wybranie zdjęcia lub wideo do udostępnienia w aplikacji. Gdy użytkownik wybierze element multimedialny w swojej bibliotece, to wykonanie tego kodu w jednej z metod UIImagePickerController's
Delegat:PHAsset zwrócony z fetchAssetsWithALAssetURLs: zawsze jest zerowy przy wybieraniu zdjęcia z albumu "Mój strumień zdjęć" przy użyciu UIImagePickerController
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
PHAsset *asset;
if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.movie"]) {
// Video
asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject];
} else if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.image"]) {
// Photo
PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil];
asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject];
}
}
Both if statements
działa dobrze zarówno dla fotografii i wideo, z wyjątkiem gdy wybraniu elementu z albumu pod tytułem "My Photo Stream"
.
Po wybraniu pozycji z "My Photo Stream"
zwracana PHAsset
jest zawsze nil
.
znalazłem następujące pytanie, które wydaje się mieć odpowiedź z roztworu roboczego: ALAssetsLibrary assetForURL: always returning nil for photos in "My Photo Stream" in iOS 8.1
ale powyższy link używa AssetsLibrary
ramy, które nie jest już zalecany przez Apple:
„w iOS 8.0 i nowsze wersje, należy użyć architektury Photos zamiast biblioteki Assets Framework The Photos zapewnia więcej funkcji i zapewnia lepszą wydajność pracy z biblioteką zdjęć użytkownika.
Muszę być w stanie zwrócić PHAsset
obiektów dla elementów multimedialnych w albumie "My Photo Stream"
. Obecnie referencyjny adres URL zwracany przez UIImagePickerController
w słowniku info
jest prawidłowym adresem URL, który loguje się w konsoli, ale podczas korzystania z tego adresu URL prawidłowy obiekt PHAsset
nigdy nie jest zwracany.
Oto przykład adresu URL odniesienia, który jest zwracany w słowniku informacyjnym danej metody didFinishPickingMediaWithInfo:
delegata:
assets-library://asset/asset.JPG?id=DCF5C6E5-B4F4-4E61-9C4B-CC63E104BF2B&ext=JPG
Mogę potwierdzić, że na iOS 8.2 beta 5 to działa. – Kyle
Mam tylko aktualizację do IOS 8.2, niestety nadal nie działa. – wgr
nadal wydaje się być problemem nawet w wersji 8.4.1. – mahboudz