【问题标题】:Delete images in camera roll from code iOS从代码 iOS 中删除相机胶卷中的图像
【发布时间】:2015-01-13 18:09:21
【问题描述】:

有没有办法在我的应用未创建的照片应用中删除相机胶卷中的图像(和视频)。我知道您不能从资产库中删除不是您的应用创建的内容。但是这个应用程序不在应用商店。它位于信息亭类型的环境中。所以我可以使用私有 API。

那么有没有一种方法可以使用苹果不会批准应用商店的私有 API 来做到这一点,但会适用于我的情况。

谢谢。

【问题讨论】:

    标签: ios image alassetlibrary


    【解决方案1】:

    是的,您可以在 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
        }];
    

    此代码将要求用户确认从相机胶卷中删除。

    【讨论】:

    • 有人做过这项工作吗?我不相信应用可以从相机胶卷中删除资产。
    • 在类参考中。 deleteAssets:
    • 是的,它有效,但正如他所说,它需要用户确认
    【解决方案2】:

    这是一个 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
        }
    }
    

    调用此代码时,用户会收到操作系统提示,要求确认删除。假设他们点击是,那么一切都消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多