ALAssetsLibrary Class Reference
| Inherits from | |
| Conforms to | |
| Framework | /System/Library/Frameworks/AssetsLibrary.framework |
| Availability | Available in iOS 4.0 and later. |
| Declared in | ALAssetsLibrary.h |
Overview
An instance of ALAssetsLibrary provides access to the videos and photos that are under the control of the Photos application.
The library includes those that are in the Saved Photos album, those coming from iTunes, and those that were directly imported into the device. You use it to retrieve the list of all asset groups and to save images and videos into the Saved Photos album.
You create an instance of ALAssetsLibrary using alloc and init:
ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init]; |
The lifetimes of objects you get back from a library instance are tied to the lifetime of the library instance.
Many of the methods declared by ALAssetsLibrary take blocks for failure and success as arguments. These methods are all asynchronous because the user may need to be asked to grant access to the data.
Tasks
Accessing Assets
Managing Notifications
Finding Assets
Enumerating Assets
Saving Assets
-
– writeVideoAtPathToSavedPhotosAlbum:completionBlock: -
– videoAtPathIsCompatibleWithSavedPhotosAlbum: -
– writeImageToSavedPhotosAlbum:orientation:completionBlock: -
– writeImageDataToSavedPhotosAlbum:metadata:completionBlock: -
– writeImageToSavedPhotosAlbum:metadata:completionBlock:
Managing Asset Groups
Class Methods
authorizationStatus
Returns photo data authorization status for this application.
Return Value
Photo data authorization status for this application. For the constants returned, see “ALAuthorizationStatus.”
Discussion
This method does not prompt the user for access.
You can use it to detect restricted access and simply hide UI instead of prompting for access.
Availability
- Available in iOS 6.0 and later.
Declared In
ALAssetsLibrary.hdisableSharedPhotoStreamsSupport
Disables shared photo streams notifications and asset retrieval.
Discussion
Shared photo streams can generate frequent notifications. Use this method to disable support if appropriate for your app.
Apps compiled against versions of iOS prior to iOS 6.0 do not have support for shared photo streams.
Availability
- Available in iOS 6.0 and later.
Declared In
ALAssetsLibrary.hInstance Methods
addAssetsGroupAlbumWithName:resultBlock:failureBlock:
Adds a new assets group to the library.
Parameters
- name
The name for the new group.
If name conflicts with another assets group with the same name, then the group is not created and resultBlock returns a
nilgroup.- resultBlock
The block invoked after the add operation completes.
For a description of the block, see
ALAssetsLibraryAccessFailureBlock.- failureBlock
The block to invoke if the add operation fails—for example, if the user denies access to the application.
For a description of the block, see
ALAssetsGroupFaces.
Discussion
The name of the new asset group is name, its type is ALAssetsGroupAlbum, and the editable property is YES.
This method is asynchronous. When the assets group is added, the user may be asked to confirm the application’s access to the data; the method, though, returns immediately. You should perform whatever work you want with the group in resultBlock.
If the user denies access to the application, or if no application is allowed to access the data, or if the data is currently unavailable, the failure block is called.
Availability
- Available in iOS 5.0 and later.
Declared In
ALAssetsLibrary.hassetForURL:resultBlock:failureBlock:
Invokes a given block passing as a parameter an asset identified by a specified file URL.
Parameters
- assetURL
An asset URL previously retrieved from an
ALAssetobject.- resultBlock
The block to invoke using the asset identified by assetURL.
For a description of the block, see
ALAssetsLibraryAssetForURLResultBlock.- failureBlock
The block to invoke if the user denies access to the assets library.
For a description of the block, see
ALAssetsLibraryAccessFailureBlock.
Discussion
This method is asynchronous. When the asset is requested, the user may be asked to confirm the application's access to the library; the method, though, returns immediately. You should perform whatever work you want with the asset in resultBlock.
If the user denies access to the application, or if no application is allowed to access the data, the failure block is called.
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.henumerateGroupsWithTypes:usingBlock:failureBlock:
Invokes a given block passing as a parameter each of the asset groups that match the given asset group type.
Parameters
- types
The types of asset group over which to enumerate.
The value is a bitfield; you can OR together values from writeImageDataToSavedPhotosAlbum:metadata:completionBlock:.
- enumerationBlock
The block to invoke using each asset in turn.
When the enumeration is done, enumerationBlock is invoked with group set to
nil.For a description of the block, see
ALAssetsLibraryGroupsEnumerationResultsBlock.- failureBlock
The block to invoke if the user denies access to the assets library.
For a description of the block, see
ALAssetsLibraryAccessFailureBlock.
Discussion
The results are passed one by one to the caller by executing the enumeration block.
This method is asynchronous. When groups are enumerated, the user may be asked to confirm the application's access to the data; the method, though, returns immediately. You should perform whatever work you want with the assets in enumerationBlock.
If the user denies access to the application, or if no application is allowed to access the data, the failureBlock is called.
Special Considerations
This method will fail with error ALAssetsLibraryAccessGloballyDeniedError if the user has not enabled Location Services (in Settings > General).
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.hgroupForURL:resultBlock:failureBlock:
Returns an assets group in the result block for a URL previously retrieved from an ALAssetsGroup object.
Parameters
- groupURL
The URL for an
ALAssetsGroupobject.- resultBlock
The block invoked after the access operation completes.
For a description of the block, see
ALAssetsLibraryAccessFailureBlock.- failureBlock
The block to invoke if the access operation fails—for example, if the user denies access to the application.
For a description of the block, see
ALAssetsGroupFaces.
Discussion
This method is asynchronous: it returns immediately. You should perform whatever work you want with the assets group in resultBlock.
This method is asynchronous. When the assets group is requested, the user may be asked to confirm the application’s access to the data; the method, though, returns immediately. You should perform whatever work you want with the asset group in resultBlock.
If the user denies access to the application, or if no application is allowed to access the data, or if the data is currently unavailable, the failure block is called.
Availability
- Available in iOS 5.0 and later.
Declared In
ALAssetsLibrary.hvideoAtPathIsCompatibleWithSavedPhotosAlbum:
Returns a Boolean value that indicates whether a video identified by a given URL is compatible with the Saved Photos album.
Parameters
- videoPathURL
An URL that points to a video file.
Return Value
YES if the video identified by videoPathURL is compatible with the Saved Photos album, otherwise NO.
Discussion
This method returns the same value as UIVideoAtPathIsCompatibleWithSavedPhotosAlbum would for the same URL.
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.hwriteImageDataToSavedPhotosAlbum:metadata:completionBlock:
Writes given image data and metadata to the Photos Album.
Parameters
- imageData
Data for the image to add to the album.
- metadata
The metadata to associate with the image.
- completionBlock
The block invoked after the save operation completes.
For a description of the block, see
ALAssetsLibraryWriteImageCompletionBlock.
Discussion
If there is a conflict between the metadata in the image data and the metadata dictionary, the image data metadata values will be overwritten.
Availability
- Available in iOS 4.1 and later.
Declared In
ALAssetsLibrary.hwriteImageToSavedPhotosAlbum:metadata:completionBlock:
Writes a given image and metadata to the Photos Album.
Parameters
- imageRef
The image to add to the album.
- metadata
The metadata to associate with the image.
- completionBlock
The block invoked after the save operation completes.
For a description of the block, see
ALAssetsLibraryWriteImageCompletionBlock.
Discussion
You must specify the orientation key in the metadata dictionary to preserve the orientation of the image.
Availability
- Available in iOS 4.1 and later.
Declared In
ALAssetsLibrary.hwriteImageToSavedPhotosAlbum:orientation:completionBlock:
Saves a given image to the Saved Photos album.
Parameters
- imageRef
The image to save to the Saved Photos album.
- orientation
The orientation at which to save the image.
- completionBlock
The block invoked after the save operation completes.
For a description of the block, see
ALAssetsLibraryWriteImageCompletionBlock.
Discussion
If you want to save a UIImage object, you can use the UIImage method CGImage to get a CGImageRef, and cast the image’s imageOrientation to ALAssetOrientation.
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.hwriteVideoAtPathToSavedPhotosAlbum:completionBlock:
Saves a video identified by a given URL to the Saved Photos album.
Parameters
- videoPathURL
An URL that points to a video file.
- completionBlock
The block invoked after the save operation completes.
For a description of the block, see
ALAssetsLibraryWriteVideoCompletionBlock.
Discussion
Availability
- Available in iOS 4.0 and later.
See Also
Declared In
ALAssetsLibrary.hConstants
ALAssetsGroupType
A bitfield to identify types of asset.
typedef NSUInteger ALAssetsGroupType;
Discussion
For possible values, see “Types of Asset.”
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.hTypes of Asset
Constants to identify types of asset.
enum {
ALAssetsGroupLibrary = (1 << 0),
ALAssetsGroupAlbum = (1 << 1),
ALAssetsGroupEvent = (1 << 2),
ALAssetsGroupFaces = (1 << 3),
ALAssetsGroupSavedPhotos = (1 << 4),
ALAssetsGroupPhotoStream = (1 << 5),
ALAssetsGroupAll = 0xFFFFFFFF,
};
Constants
ALAssetsGroupLibraryThe Library group that includes all assets that are synced from iTunes.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsGroupAlbumAll the albums created on the device or synced from iTunes, not including Photo Stream or Shared Streams
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsGroupEventAll events, including those created during Camera Connection Kit import.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsGroupFacesAll the faces albums synced from iTunes.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsGroupSavedPhotosAll the photos in the Camera Roll.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsGroupPhotoStreamThe PhotoStream album.
In iOS 6.0 and later, this also includes Shared Streams.
Available in iOS 5.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsGroupAllThe same as ORing together all the group types except for
ALAssetsGroupLibrary.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.
ALAssetOrientation
Constants to indicate the orientation of an asset.
typedef enum {
ALAssetOrientationUp,
ALAssetOrientationDown,
ALAssetOrientationLeft,
ALAssetOrientationRight,
ALAssetOrientationUpMirrored,
ALAssetOrientationDownMirrored,
ALAssetOrientationLeftMirrored,
ALAssetOrientationRightMirrored,
} ALAssetOrientation;
Constants
ALAssetOrientationUpIndicates that the picture is in its default orientation, as shown here.

Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetOrientationDownIndicates that the picture has been rotated through 180 degrees with respect to
ALAssetOrientationUp, as shown here.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetOrientationLeftIndicates that the picture has been rotated through 90 degrees counter-clockwise with respect to
ALAssetOrientationUp, as shown here.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetOrientationRightIndicates that the picture has been rotated through 90 degrees clockwise with respect to
ALAssetOrientationUp, as shown here.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetOrientationUpMirroredIndicates that the picture has been flipped horizontally with respect to
ALAssetOrientationUp, as shown here.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetOrientationDownMirroredIndicates that the picture has been rotated through 180 degrees with respect to
ALAssetOrientationUpand then flipped horizontally, as shown here.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetOrientationLeftMirroredIndicates that the picture has been rotated through 90 degrees counter-clockwise with respect to
ALAssetOrientationUpand then flipped vertically, as shown here.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetOrientationRightMirroredIndicates that the picture has been rotated through 90 degrees clockwise with respect to
ALAssetOrientationUpand then flipped vertically, as shown here.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.
ALAssetsLibraryGroupsEnumerationResultsBlock
Signature for the block executed when a match is found during enumeration using enumerateGroupsWithTypes:usingBlock:failureBlock:.
typedef void (^ALAssetsLibraryGroupsEnumerationResultsBlock)(ALAssetsGroup *group, BOOL *stop);
Discussion
The block parameters are defined as follows:
- group
The current asset group in the enumeration.
- stop
A pointer to a boolean value; set the value to
YESto stop enumeration.
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.hALAssetsLibraryAssetForURLResultBlock
Signature for the block executed if the user has granted access to the caller to access the data managed by the framework in assetForURL:resultBlock:failureBlock:.
typedef void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *asset);
Discussion
The block parameter is defined as follows:
- asset
The asset identified by the URL parameter in
assetForURL:resultBlock:failureBlock:.If the asset is not found, asset is
nil.
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.hALAssetsLibraryWriteImageCompletionBlock
Signature for the block executed when writeImageToSavedPhotosAlbum:orientation:completionBlock: completes.
typedef void (^ALAssetsLibraryWriteImageCompletionBlock)(NSURL *assetURL, NSError *error);
Discussion
The block parameters are defined as follows:
- assetURL
An URL that identifies the saved image file.
If the image is not saved, assetURL is
nil.- error
If the image is not saved, an error object that describes the reason for failure, otherwise
nil.
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.hALAssetsLibraryWriteVideoCompletionBlock
Signature for the block executed when writeVideoAtPathToSavedPhotosAlbum:completionBlock: completes.
typedef void (^ALAssetsLibraryWriteVideoCompletionBlock)(NSURL *assetURL, NSError *error);
Discussion
The block parameters are defined as follows:
- assetURL
An URL that identifies the saved video file.
If the video is not saved, assetURL is
nil.- error
If the video is not saved, an error object that describes the reason for failure, otherwise
nil.
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.hALAssetsLibraryAccessFailureBlock
Signature for the block executed if the user does not grant access to the caller to access the data managed by the framework.
typedef void (^ALAssetsLibraryAccessFailureBlock)(NSError *error);
Discussion
The block parameter is defined as follows:
- error
An error object that describes why access to the library failed.
This block type is used by assetForURL:resultBlock:failureBlock: and enumerateGroupsWithTypes:usingBlock:failureBlock:.
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.hALAssetsLibraryGroupResultBlock
Signature for the block executed if the user grants access to the caller to access the data managed by the framework..
typedef void (^ALAssetsLibraryGroupResultBlock)(ALAssetsGroup *group));
Discussion
The block parameter is defined as follows:
- group
The group that was added to the assets library.
If the group is not found or not created (for example, because of a name collision), group is
nil.
This block type is used by addAssetsGroupAlbumWithName:resultBlock:failureBlock: and groupForURL:resultBlock:failureBlock:.
Availability
- Available in iOS 5.0 and later.
Declared In
ALAssetsLibrary.hALAuthorizationStatus
Constants to indicate authorization status.
typedef NS_ENUM(NSInteger,
ALAuthorizationStatus) {
ALAuthorizationStatusNotDetermined = 0,
ALAuthorizationStatusRestricted,
ALAuthorizationStatusDenied,
ALAuthorizationStatusAuthorized };
Constants
ALAuthorizationStatusNotDeterminedUser has not yet made a choice with regards to this application.
Available in iOS 6.0 and later.
Declared in
ALAssetsLibrary.h.ALAuthorizationStatusRestrictedThis application is not authorized to access photo data.
The user cannot change this application’s status, possibly due to active restrictions such as parental controls being in place.
Available in iOS 6.0 and later.
Declared in
ALAssetsLibrary.h.ALAuthorizationStatusDeniedUser has explicitly denied this application access to photos data.
Available in iOS 6.0 and later.
Declared in
ALAssetsLibrary.h.ALAuthorizationStatusAuthorizedUser has authorized this application to access photos data.
Available in iOS 6.0 and later.
Declared in
ALAssetsLibrary.h.
Notification Keys
Keys used to get values from the user information dictionary of the ALAssetsLibraryChangedNotification notification.
NSString * const ALAssetLibraryUpdatedAssetsKey; NSString * const ALAssetLibraryInsertedAssetGroupsKey; NSString * const ALAssetLibraryUpdatedAssetGroupsKey; NSString * const ALAssetLibraryDeletedAssetGroupsKey;
Constants
ALAssetLibraryUpdatedAssetsKeyValue is a set of
NSURLobjects identifying the assets that were updated.Available in iOS 6.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetLibraryInsertedAssetGroupsKeyValue is a set of
NSURLobjects identifying the assets that were inserted.Available in iOS 6.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetLibraryUpdatedAssetGroupsKeyValue is a set of
NSURLobjects identifying the asset groups that were updated.Available in iOS 6.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetLibraryDeletedAssetGroupsKeyValue is a set of
NSURLobjects identifying the asset groups that were deleted.Available in iOS 6.0 and later.
Declared in
ALAssetsLibrary.h.
Discussion
Assets that are modified use the ALAssetLibraryUpdatedAssetsKey key. Assets that are inserted or deleted use the ALAssetLibraryUpdatedAssetGroupsKey key for the asset group that contains the asset.
Assets and asset groups that have no strong references are omitted from the notification’s user information dictionary.
Error Domain
Constant for the AssetsLibrary domain.
NSString *const ALAssetsLibraryErrorDomain;
Constants
ALAssetsLibraryErrorDomainConstant used by
NSErrorto distinguish errors belonging to the AssetsLibrary domain.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.
Error Codes
AssetsLibrary-related error codes
enum {
ALAssetsLibraryUnknownError = -1,
ALAssetsLibraryWriteFailedError = -3300,
ALAssetsLibraryWriteBusyError = -3301,
ALAssetsLibraryWriteInvalidDataError = -3302,
ALAssetsLibraryWriteIncompatibleDataError = -3303,
ALAssetsLibraryWriteDataEncodingError = -3304,
ALAssetsLibraryWriteDiskSpaceError = -3305,
ALAssetsLibraryDataUnavailableError = -3310,
ALAssetsLibraryAccessUserDeniedError = -3311,
ALAssetsLibraryAccessGloballyDeniedError = -3312,
};
Constants
ALAssetsLibraryUnknownErrorThe reason for the error is unknown.
Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsLibraryWriteFailedErrorThe attempt to write data failed.
This error may be returned in the completion block for
writeVideoAtPathToSavedPhotosAlbum:completionBlock:andwriteImageToSavedPhotosAlbum:orientation:completionBlock:as well as the completion selector forUIImageWriteToSavedPhotosAlbumandUISaveVideoAtPathToSavedPhotosAlbum.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsLibraryWriteBusyErrorWriting was already busy when the attempt to write was made.
You should attempt the write again.
This error may be returned in the completion block for
writeVideoAtPathToSavedPhotosAlbum:completionBlock:andwriteImageToSavedPhotosAlbum:orientation:completionBlock:as well as the completion selector forUIImageWriteToSavedPhotosAlbumandUISaveVideoAtPathToSavedPhotosAlbum.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsLibraryWriteInvalidDataErrorThe data was invalid.
This error may be returned in the completion block for
writeVideoAtPathToSavedPhotosAlbum:completionBlock:andwriteImageToSavedPhotosAlbum:orientation:completionBlock:as well as the completion selector forUIImageWriteToSavedPhotosAlbumandUISaveVideoAtPathToSavedPhotosAlbum.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsLibraryWriteIncompatibleDataErrorThe data contained incompatible data.
This error may be returned in the completion block for
writeVideoAtPathToSavedPhotosAlbum:completionBlock:andwriteImageToSavedPhotosAlbum:orientation:completionBlock:as well as the completion selector forUIImageWriteToSavedPhotosAlbumandUISaveVideoAtPathToSavedPhotosAlbum.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsLibraryWriteDataEncodingErrorThe data contained data with the wrong encoding.
This error may be returned in the completion block for
writeVideoAtPathToSavedPhotosAlbum:completionBlock:andwriteImageToSavedPhotosAlbum:orientation:completionBlock:as well as the completion selector forUIImageWriteToSavedPhotosAlbumandUISaveVideoAtPathToSavedPhotosAlbum.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsLibraryWriteDiskSpaceErrorThere was not enough space on the disk to write the data.
This error may be returned in the completion block for
writeVideoAtPathToSavedPhotosAlbum:completionBlock:andwriteImageToSavedPhotosAlbum:orientation:completionBlock:as well as the completion selector forUIImageWriteToSavedPhotosAlbumandUISaveVideoAtPathToSavedPhotosAlbum.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsLibraryDataUnavailableErrorThe data was not available.
This error may be returned in the
ALAssetsLibraryAccessFailureBlockforenumerateGroupsWithTypes:usingBlock:failureBlock:andassetForURL:resultBlock:failureBlock:; and in the completion blocks forwriteImageToSavedPhotosAlbum:orientation:completionBlock:andwriteImageToSavedPhotosAlbum:orientation:completionBlock:; as well as in the completion selector forUIImageWriteToSavedPhotosAlbumandUISaveVideoAtPathToSavedPhotosAlbum.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsLibraryAccessUserDeniedErrorThe user denied access to the library.
This error may be returned in the
ALAssetsLibraryAccessFailureBlockblock forenumerateGroupsWithTypes:usingBlock:failureBlock:andassetForURL:resultBlock:failureBlock:.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.ALAssetsLibraryAccessGloballyDeniedErrorAccess to the library was denied globally. This can occur if, for example, the user hasn’t enabled location services in the settings app.
This error may be returned in the
ALAssetsLibraryAccessFailureBlockblock forenumerateGroupsWithTypes:usingBlock:failureBlock:andassetForURL:resultBlock:failureBlock:.Available in iOS 4.0 and later.
Declared in
ALAssetsLibrary.h.
Notifications
ALAssetsLibraryChangedNotification
In iOS 4.0, the notification’s object is nil. In iOS 4.1 and later, the notification object is the library object that posted the notification.
In iOS 6.0 and later, the user information dictionary describes what changed:
If the user information dictionary is
nil, reload all assets and asset groups.If the user information dictionary an empty dictionary, there is no need to reload assets and asset groups.
If the user information dictionary is not empty, reload the effected assets and asset groups. For the keys used, see “Notification Keys.”
This notification is sent on an arbitrary thread.
Availability
- Available in iOS 4.0 and later.
Declared In
ALAssetsLibrary.h© 2012 Apple Inc. All Rights Reserved. (Last updated: 2012-12-13)