【发布时间】:2015-01-13 18:09:21
【问题描述】:
有没有办法在我的应用未创建的照片应用中删除相机胶卷中的图像(和视频)。我知道您不能从资产库中删除不是您的应用创建的内容。但是这个应用程序不在应用商店。它位于信息亭类型的环境中。所以我可以使用私有 API。
那么有没有一种方法可以使用苹果不会批准应用商店的私有 API 来做到这一点,但会适用于我的情况。
谢谢。
【问题讨论】:
标签: ios image alassetlibrary
有没有办法在我的应用未创建的照片应用中删除相机胶卷中的图像(和视频)。我知道您不能从资产库中删除不是您的应用创建的内容。但是这个应用程序不在应用商店。它位于信息亭类型的环境中。所以我可以使用私有 API。
那么有没有一种方法可以使用苹果不会批准应用商店的私有 API 来做到这一点,但会适用于我的情况。
谢谢。
【问题讨论】:
标签: ios image alassetlibrary
是的,您可以在 iOS 8 中使用 Photos 框架做到这一点。
例如,如果您将资产 URL 存储在 NSArray *assetsURLs
PHPhotoLibrary *library = [PHPhotoLibrary sharedPhotoLibrary];
[library performChanges:^{
PHFetchResult *assetsToBeDeleted = [PHAsset fetchAssetsWithALAssetURLs:assetsURLs options:nil];
[PHAssetChangeRequest deleteAssets:assetsToBeDeleted];
} completionHandler:^(BOOL success, NSError *error)
{
//do something here
}];
此代码将要求用户确认从相机胶卷中删除。
【讨论】:
这是一个 Swift 版本,它将删除库中的所有照片。
首先,您需要确保在应用的 info.plist 文件中拥有权限密钥:
您需要获得用户的许可才能访问照片(此处不包括代码)。
接下来,导入&代码:
import Photos
func deleteAllPhotos() {
let library = PHPhotoLibrary.shared()
library.performChanges({
let fetchOptions = PHFetchOptions()
let allPhotos = PHAsset.fetchAssets(with: .image, options: fetchOptions)
PHAssetChangeRequest.deleteAssets(allPhotos)
}) { (success, error) in
// Handle success & errors
}
}
调用此代码时,用户会收到操作系统提示,要求确认删除。假设他们点击是,那么一切都消失了。
【讨论】: