Yes,
PHPickerResult has the
assetIdentifier property which can contain a local identifier to fetch the
PHAsset from the library.
To have PHPicker return asset identifiers, you need to initialize
PHPickerConfiguration with the library.
Please note that PHPicker does
not extend the Limited Photos Library access for the selected items if the user put your app in Limited Photos Library mode.
It would be a good opportunity to reconsider if the app really needs direct Photos Library access or can work with just the image and video data. But that really depend on the app.
The relevant section of the "Meet the new Photos picker" session begins at
10m 20s.
Sample code for PhotoKit access looks like this:
Code Block swiftimport UIKit |
import PhotosUI |
|
class PhotoKitPickerViewController: UIViewController, PHPickerViewControllerDelegate { |
@IBAction func presentPicker(_ sender: Any) { |
let photoLibrary = PHPhotoLibrary.shared() |
let configuration = PHPickerConfiguration(photoLibrary: photoLibrary) |
let picker = PHPickerViewController(configuration: configuration) |
picker.delegate = self |
present(picker, animated: true) |
} |
|
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { |
picker.dismiss(animated: true) |
|
let identifiers = results.compactMap(\.assetIdentifier) |
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: identifiers, options: nil) |
|
// TODO: Do something with the fetch result if you have Photos Library access |
} |
} |