Cordovaを用いてハイブリッドアプリを作成しています。
javascriptのFrameworkはAngularJSを用いています。
プラグインを用いて、端末でアルバムから画像を取得してアプリに保存して読み込んで表示するようにしました。しかし問題があり、
Androidの場合はビルドしてアプリ更新しても画像を読み込んで表示されるのですが、
IOSの場合ビルドしてアプリ更新すると画像が表示されなくなります。
IOSだとビルドし直すとパスが変わったり、ファイルが削除されてしまうのですか?
Android、iosともにアプリ再起動のみなら画像を読み込んで表示されています。
コード長いのでアルバムから画像取得する関数からファイル保存関数&コールバックの処理だけ記述します。
// ファイル名用の時間 ミリ秒でファイル名 var time; // 新しいファイルの名前 var newFileName; // イメージの保存先 var myFolderName = "user_image"; // Entryオブジェクト一時保持 var saveEntry; var getImage = function(a,b,c) { var options = { // ファイルを返すようにする destinationType: Camera.DestinationType.FILE_URI, // 画像編集あり allowEdit:true, // アルバムを開く sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM, // 拡張子はJPEG encodingType: Camera.EncodingType.JPEG, // 画質 quality: a, // 画像の横サイズ targetWidth: b, // 画像の縦サイズ targetHeight: c }; // 起動 成功したらuriを返す navigator.camera.getPicture(cameraSuccess, cameraError, options); } //getPictureのコールバック関数 var cameraSuccess = function(uri) { // uriのFileSystemオブジェクトを取得 // 成功したらEntryオブジェクトを返す window.resolveLocalFileSystemURL(uri, resolveSuccess, fileError); } // resolveLocalFileSystemURIのコールバック関数 var resolveSuccess = function(entry) { // Entryオブジェクト保持 saveEntry = entry; // PERSISTENTのFileSystemオブジェクトを取得 // 成功したらFileSystemオブジェクトを返す window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystemSuccess, fileError); } // requestFileSystemのコールバック関数 var fileSystemSuccess = function(fileSystem) { // myFolderNameというディレクトリを取得(なければ作成) // 成功したらDirectoryオブジェクトを返す fileSystem.root.getDirectory(myFolderName, {create: true, exclusive: false}, DirectorySuccess, fileError); } // getDirectoryのコールバック関数 var DirectorySuccess = function(directory) { // 現在のmsを取得 time = new Date().getTime(); // それを元にファイル名を作成 newFileName = time + ".jpg"; // myFolderNameにファイルをコピー // 成功したらEntryオブジェクトを返す saveEntry.copyTo(directory, newFileName, copySuccess, fileError); } // getDirectoryのコールバック関数 var copySuccess = function(entry) { // URLに変換 // 成功したらURLを返す /////////////////////////////// /////ここでURLを保存して起動時にそのURLを読みこむようにしてます。////// ////////////////////////////// //console.log(entry.toNativeURL()); } // ファイル操作エラー関数 function fileError(error) { console.log('ファイル失敗'); console.log('File System Error:' + error.code) } // カメラのエラー用関数 function cameraError(message) { console.log('Camera Error:' + message) } ```
あなたの回答
tips
プレビュー