Запрос авторизации Dsiable при удалении PHAsset

У меня есть приложение, которое удаляет фотографии из фотопленки. Эта очистка инициируется удаленно. Из-за этого, если стирание инициировано, а пользователь не находится на своем телефоне, он не будет стираться, потому что вам необходимо разрешить удаление для каждого изображения.

Теперь я прочитал, что это невозможно в разных вопросах. Однако можно ли запросить авторизацию в фототеку телефона так же, как это делается с геолокацией, когда приложение завершает загрузку при первом запуске. Будет ли это предоставлять разрешение на удаление без необходимости подтверждения для каждой фотографии?

Вот как я сейчас удаляю фотографии, все работает нормально, за исключением необходимости подтверждать удаление каждого изображения.

         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");
            }
        }];
    }];

person 3rdeye7    schedule 30.12.2015    source источник
comment
Интересно, для чего это... хм   -  person aheze    schedule 14.01.2021


Ответы (2)


Невозможно удалить какие-либо фотографии/видео через предоставленные API без уведомления о подтверждении. Обойти это невозможно.

person holtmann    schedule 05.01.2016

Приложение запрашивает авторизацию для фотографии, чтобы получить права доступа к фотографиям. Это разрешение предназначено для получения фотографий (приложение может копировать все фотографии на устройстве, вы хотите, чтобы любое приложение могло это делать?), а не для их удаления.

Если вы хотите удалить какой-либо актив или коллекцию, вы должны каждый раз получать особое разрешение от пользователя. Вы можете сделать некоторые изменения вместе с запросом авторизации только один раз - но вы должны связаться с пользователем хотя бы один раз по этому поводу.

person Community    schedule 25.03.2018