Sto utilizzando uno UIImagePickerController
per consentire all'utente di scegliere una foto o un video da condividere nell'app. Quando l'utente sceglie un elemento multimediale nella loro biblioteca, eseguo questo codice in uno dei metodi UIImagePickerController's
delegato:PHAsset restituito da fetchAssetsWithALAssetURLs: è sempre nullo quando si sceglie una foto dall'album "My Photo Stream" utilizzando 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];
}
}
Sia if statements
funzionano bene sia per foto e video, ad eccezione di quando si seleziona un elemento dall'album intitolato "My Photo Stream"
.
Quando si seleziona un articolo da "My Photo Stream"
, il numero PHAsset
restituito è sempre nil
.
ho trovato la seguente domanda che sembra avere una risposta con una soluzione di lavoro: ALAssetsLibrary assetForURL: always returning nil for photos in "My Photo Stream" in iOS 8.1
Ma il link qui sopra utilizza il framework AssetsLibrary
che non è più consigliato da Apple:
"In iOS 8.0 e versioni successive, utilizzare il framework Photos al posto del framework delle risorse . Il framework Photos fornisce più funzionalità e prestazioni migliori per lavorare con la libreria di foto di un utente. Vedere le foto Riferimento quadro. "
Devo essere in grado di restituire gli oggetti PHAsset
per gli elementi multimediali nell'album "My Photo Stream"
. In questo momento l'URL di riferimento restituito da UIImagePickerController
nel dizionario info
è un URL valido che accede alla console, ma quando si utilizza questo URL, un oggetto valido PHAsset
non viene mai restituito.
Ecco un esempio di un URL di riferimento che viene restituito nel dizionario informazioni del metodo di didFinishPickingMediaWithInfo:
delegato:
assets-library://asset/asset.JPG?id=DCF5C6E5-B4F4-4E61-9C4B-CC63E104BF2B&ext=JPG
Posso confermare che su iOS 8.2 beta 5 funziona. – Kyle
Ho appena aggiornato a iOS 8.2, purtroppo ancora non funziona. – wgr
sembra ancora essere un problema anche con 8.4.1. – mahboudz