Как проверить PHImageResultIsInCloudKey?

В моем приложении есть настраиваемое средство выбора фотографий, которое использует платформу Photos для просмотра альбомов и выбора фотографии. У меня есть отдельные отчеты об очень специфической ошибке, которая возникает только в том случае, если у пользователя (а) включена библиотека фотографий iCloud, (б) включена функция «Оптимизировать хранилище» в настройках фотографий и (в) этот конкретный альбом и/или изображение были удалился с устройства.

В этом сценарии похоже, что фактическое изображение не возвращается к замыканию, которое я передаю PHCachingImageManager#requestImage. Вместо этого, насколько я понимаю, PHImageResultIsInCloudKey включен в словарь info, и мне нужно повторно вызвать запрос с isNetworkAccessAllowed, установленным в true.

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

Есть ли способ вызвать ситуацию, когда изображение находится вне устройства и должно загружаться из облака?


person Bill    schedule 08.02.2018    source источник


Ответы (1)


Я работал с PHAssets и столкнулся с аналогичной проблемой, когда пользовательское устройство имело невообразимо обширную библиотеку фотографий (это означало, что многие фотографии были вне устройства), что вызывало проблемы с производительностью.

Чтобы воспроизвести эти условия, я создал https://github.com/jrturton/DiskFiller, который, как как вы можете догадаться, записывает массивные файлы на ваше устройство до тех пор, пока оно не будет заполнено, что имеет побочный эффект запуска «оптимизированного хранилища» для фотографий iCloud, перемещая старые фотографии в облако. Может быть, это может помочь.

Вероятно, лучше всего запустить его на тестовом устройстве, если оно у вас есть :)

person jrturton    schedule 27.02.2019