ios8alassetslibraryalassetphotokitphasset

How to get an ALAsset URL from a PHAsset?


You can do it sneakily† using the undocumented PHAsset.ALAssetURL property, but I'm looking for something documented.


† In Objective-C, this will help

@interface PHAsset (Sneaky)

@property (nonatomic, readonly) NSURL *ALAssetURL;

@end

Solution

  • Create the assetURL by leveraging the localidentifier of the PHAsset. Example: PHAsset.localidentifier returns 91B1C271-C617-49CE-A074-E391BA7F843F/L0/001

    Now take the 32 first characters to build the assetURL, like:

    assets-library://asset/asset.JPG?id=91B1C271-C617-49CE-A074-E391BA7F843F&ext=JPG

    You might change the extension JPG depending on the UTI of the asset (requestImageDataForAsset returns the UTI), but in my testing the extensions of the assetURL seems to be ignored anyhow.