应用程序IOS升级后,imageURI会发生变化

时间:2014-02-01 23:34:53

标签: jquery ios camera phonegap-build

我有一个jquery移动应用程序(phonegap build)。我有一个功能,可以从设备的照片库中获取图像。我将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);
     }

我应该提一下,我申请的更新不会对相机代码进行任何更改。所有数据都保留在localstorage中,我可以通过控制台看到它保存并调用URI没有问题,但是在更新后的URI路径中,路径发生了变化(一串巨大的数字和破折号)。顺便说一句,Android版本没有问题。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

我的理解是,保存到localStorage的imageURI只是由CDV Camera插件处理的cdv_ *命名临时文件。正如user2603892正确指出的那样,您似乎关注的是应用于更新的新应用位置标识符。但是,可能还有其他一些问题需要考虑......相机插件会依次将临时文件命名为从库中挑选出来的文件,或者作为照片拍摄。 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 < / p>

建议将文件(不是文件名)重命名并保存到1)Documents文件夹,或2)Application Support文件夹,然后引用它以备将来使用。

希望这有帮助。

答案 1 :(得分:0)

我知道这是一个老帖子,但我认为会分享我的发现,希望它能帮助别人。我在一个应用程序上遇到了同样的问题,该应用程序必须在本地存储图像而不将它们上传到服务器。似乎问题正在发生,因为iTunes将更新安装在iOS App Programming Guide

中所述的新应用程序目录中
  

应用程序更新期间保存的文件当用户下载应用程序更新时,iTunes会将更新安装在新的应用程序目录中。然后,在删除旧安装之前,它会将用户的数据文件从旧安装移动到新的应用程序目录。保证在更新过程中保留以下目录中的文件:

<Application_Home>/Documents
<Application_Home>/Library 
  

虽然其他用户目录中的文件也可能被移动,但您不应该在更新后依赖它们。

正如Here所述。

您在帖子中提到的“巨大的数字和短划线”是应用程序目录。这会在每次更新时发生变化,因此保存的URI将与更新后的当前URI不同。

我仍然在寻找一种解决方法,但还没有找到任何东西。