imageURI изменяется после обновления приложения IOS

У меня есть мобильное приложение jquery (сборка телефонной связи). У меня есть функция, которая получит uri изображения из фотогалереи устройства. Я сохраняю uri в виде строки в локальном хранилище, поэтому при следующем открытии страницы изображение отображается с использованием uri. Все это работает нормально (я не получаю Data-UrI изображения, потому что я не хочу использовать локальное хранилище, и я, конечно, не хочу загружать изображения на сервер из-за того, что приложение используется в Школа (вопросы конфиденциальности).На устройстве все в порядке.Все работает, пока я не обновлю приложение.При установке обновления URI изображения меняется.Как мне получить статический URI выбранного изображения. Вот код, который я использую для получения изображения из галереи:

  // JavaScript Document  //Get Picture stuff 
  navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, destinationType:
  destinationType.FILE_URI, sourceType:Camera.PictureSourceType.SAVEDPHOTOALBUM});

   var pictureSource;   // picture source
   var destinationType; // sets the format of returned value 
   pictureSource=navigator.camera.PictureSourceType;
   destinationType=navigator.camera.DestinationType;

   function onPhotoURISuccess(imageURI) {
   // Uncomment to view the image file URI 
     console.log(imageURI);
     localStorage.setItem("piclink", imageURI)

   // Get image handle
    var largeImage = document.getElementById('largeImage');

    // Unhide image elements
     largeImage.style.display = 'block';

    // Show the captured photo
     // The inline CSS rules are used to resize the image
     largeImage.src = imageURI;
     }
     // Called if something bad happens.
    function onFail(message) {alert('Failed because: ' + message);
     }

Я должен отметить, что обновление, которое я применяю, не вносит никаких изменений в код камеры. Все данные остаются в локальном хранилище в порядке, я вижу в консоли, что он сохраняет и вызывает URI без проблем, но в пути URI после обновления есть изменение пути (огромная строка цифр и тире). Кстати, с версией для Android проблем нет. Любая помощь будет принята с благодарностью


person Cory    schedule 01.02.2014    source источник


Ответы (2)


Насколько я понимаю, imageURI, который вы сохраняете в localStorage, — это просто временный файл с именем cdv_*, обработанный подключаемым модулем CDV Camera. Как правильно указал пользователь 2603892, похоже, вас беспокоит новый идентификатор местоположения приложения, применяемый к обновлениям. Тем не менее, может быть несколько других проблем, которые следует учитывать... плагин камеры последовательно называет временные файлы, выбранные из библиотеки или снятые как фотографии. cdv_photo_001.jpg, cdv_photo_002.jpg и т. д. Это продолжается до тех пор, пока вы не выполните команду camera.cleanup(), которая удалит файлы cdv_*.

Плагин хранит эти файлы в папке /tmp вне корня приложения. Очевидно, что это не будет скопировано iOS при обновлении.

Пример из симулятора: imageURI = file:///Users/xxxxxxx/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/B7B2005C-C116-4BCB-897D-CD46672123C3/tmp/cdv_photo_001.jpg

Рекомендуется переименовать и сохранить файл (а не имя файла) в 1) папке «Документы» или 2) в папке «Поддержка приложений», а затем ссылаться на него для будущего использования.

Надеюсь это поможет.

person gro    schedule 06.05.2014
comment
Спасибо. Когда вы говорите 1) папка «Документы» или 2) папка поддержки приложений, а затем ссылаетесь на нее для будущего использования, я не уверен, что понимаю разрешения. Я думал, что ваше приложение в основном не имеет разрешения на хранение. Или, если я сохраняю изображение в папке с документами пользователей, я в основном создаю копию изображения в их списке? Извините, очень новичок в этом. - person Cory; 07.05.2014
comment
У вашего приложения есть разрешение на хранение в песочнице. Возможно, изучение плагина CDVFile будет полезно. Кроме того, папка «Документы» является «общим» хранилищем по умолчанию на устройстве, которое также синхронизируется с iCloud. И да, вы будете хранить копию выбранного изображения из их списка на устройстве. Таким образом, вы будете иметь фиксированный URI под вашим контролем (например, обновите его, когда захотите), а также позволит вам очистить папку tmp плагина камеры, если вы этого не сделали, так как она может стать довольно большой. - person gro; 07.05.2014

Я знаю, что это старый пост, но я решил поделиться своими выводами в надежде, что это поможет кому-то еще. У меня такая же проблема с приложением, которое должно хранить изображения локально, не загружая их на сервер. Похоже, проблема возникает из-за того, что iTunes устанавливает обновление в новый каталог приложения, как указано в Руководство по программированию приложений для iOS

Файлы, сохраняемые при обновлении приложения Когда пользователь загружает обновление приложения, iTunes устанавливает его в новый каталог приложения. Затем он перемещает файлы данных пользователя из старой установки в новый каталог приложения перед удалением старой установки. Файлы в следующих каталогах гарантированно сохранятся в процессе обновления:

<Application_Home>/Documents
<Application_Home>/Library 

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

как обсуждалось здесь .

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

Я все еще ищу работу вокруг, но пока ничего не смог найти.

person JSS025    schedule 05.05.2014
comment
Спасибо за обновление - да, это немного больно, так как нет необходимости загружать изображения, которые использует мое приложение, на сервер. На самом деле, поскольку приложение используется в школах, мы не хотим, чтобы фотографии покидали камеру. Надеюсь, обходной путь найден. - person Cory; 06.05.2014