ALAssetsGroupSavedPhotos недавние, а не все видео под iOS8

Наше приложение позволяет пользователю загружать видео из камеры. Это довольно стандартная штука:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

// Enumeration over all groups with videos
ALAssetsLibraryGroupsEnumerationResultsBlock  groupsEnumerationBlock = ^(ALAssetsGroup *group, BOOL *stop)
{
    [group setAssetsFilter:[ALAssetsFilter allVideos]];
    [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
     {
         if (result) {
             // do stuff here with each video
         }
     }];
};

[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock: groupsEnumerationBlock
                     failureBlock:^(NSError *error) {
                         log4Debug(@"No groups found or accessible for Camera Roll.");
                     }
 ];

Проблема конечно с iOS8. Этот код перечисляет все видео под iOS7, но под iOS8 он перечисляет все недавние видео. Видео старше 30 дней недоступны.

Действительно, когда вы смотрите на приложение «Фото» под iOS8, вы больше даже не видите «Фотопленку», а только альбом «Недавно добавленные». Теперь есть также альбом "Видео", в котором есть все видео. Доступ к этому здесь был бы прекрасен.

Мы не можем преобразовать в PhotoKit (сегодня). Мы захотим это сделать в ближайшее время, но прямо сейчас нам нужно решение, которое работает как с iOS7, так и с iOS8.


person Paul Cezanne    schedule 18.09.2014    source источник
comment
Я подозреваю, что iOS 8 с большей зависимостью от облачной потоковой передачи ваших фотографий / видео, вероятно, гарантирует только то, что недавно добавленные фотографии / видео действительно находятся на устройстве. Я бы сказал, поэтому вы не можете добраться до них, используя старые механизмы ALAsset. Для меня это тоже настоящая проблема. Думаю, мне лучше начать писать код PhotoKit.   -  person EarlyRiser    schedule 19.09.2014
comment
Обратите внимание, что ни ALAssetsGroupAll, ни ALAssetsGroupLibrary не работают.   -  person Paul Cezanne    schedule 19.09.2014


Ответы (1)


Вы пробовали это:

PHFetchOptions *allPhotosOptions = [PHFetchOptions new];
allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];

PHFetchResult *allPhotosResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:allPhotosOptions];

Когда я протестировал это на своем устройстве, он вернул все видео, которые у меня есть на устройстве, а не только недавние.

person Ladislav    schedule 05.10.2014
comment
Это было исправлено в iOS8.0.2. - person Paul Cezanne; 05.10.2014
comment
@PaulCezanne не заметил, что вопрос был опубликован так давно :) - person Ladislav; 05.10.2014