删除 PHAsset 时禁用授权请求

Posted

技术标签:

【中文标题】删除 PHAsset 时禁用授权请求【英文标题】:Dsiable Authorization request when deleting PHAsset 【发布时间】:2015-12-30 16:21:46 【问题描述】:

我有一个从相机胶卷中删除照片的应用程序。此擦除是远程启动的。因此,如果启动擦除并且用户不在他们的手机旁,他们将不会擦除,因为您需要授权删除每个图像。

现在我读到这在不同的问题中是不可能的。但是,当应用程序在第一次启动时完成加载时,是否可以像使用地理定位一样请求对手机照片库的授权。这是否会授予删除授权而无需对每张照片进行确认?

这就是我目前删除照片的方式,除了需要确认删除每张图片之外,它工作正常

         PHFetchResult *asset = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:nil];

    [asset enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) 
        NSLog(@"%@",[obj class]);
        [[phphotoLibrary sharedPhotoLibrary] performChanges:^
            BOOL req = [obj canPerformEditOperation:PHAssetEditOperationDelete];
            if (req) 
                NSLog(@"true");
                [PHAssetChangeRequest deleteAssets:@[obj]];
            
         completionHandler:^(BOOL success, NSError *error) 
            NSLog(@"Finished Delete asset. %@", (success ? @"Success." : error));
            if (success) 
                NSLog(@"WIPE SUCCESSFUL");
            
        ];
    ];

【问题讨论】:

不知道这是干什么用的……嗯 【参考方案1】:

如果没有确认警报,则无法通过提供的 API 删除任何照片/视频。没有办法解决这个问题。

【讨论】:

【参考方案2】:

应用程序请求照片授权以获得对照片的访问权限。此权限是获取照片(应用程序可以复制设备中的所有照片,您希望任何应用程序都可以这样做吗?),而不是删除它们。

如果您想删除某些资产或收藏品,您必须每次都获得用户的特定授权。您只能与请求授权一起进行一些更改 - 但您必须至少与用户联系一次。

【讨论】:

以上是关于删除 PHAsset 时禁用授权请求的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UIImagePickerController 获取授权的 PHAsset?

PHAsset 无法获取

访问 PHAsset 对象的 URL 信息的同步方法

swift 如何一次删除多个 PHAsset

如何从 iOS SDK 中的设备(“照片”)中永久删除 PHAsset?

具有优化 iPhone 存储的 PHAsset