2014-01-22 3 views
3

Я пытаюсь работать с файлами на IOS, используя Phonegap [cordova 3.3.0]. Я прочитал, как получить доступ к файлам и прочитать их в документации по API разрыва телефона. Также добавлен плагин как этогоДоступ к файлам с использованием Phonegap 3.3.0 для ios

$ cordova plugin add org.apache.cordova.file 
    $ cordova plugin ls 
    [ 'org.apache.cordova.file' ] 
    $ cordova plugin rm org.apache.cordova.file 

$ cordova plugin add org.apache.cordova.file-transfer 
    $ cordova plugin ls 
    [ 'org.apache.cordova.file', 
     'org.apache.cordova.file-transfer' ] 
    $ cordova plugin rm org.apache.cordova.file-transfer 

функции gotFS (FileSystem) не вызова после функции onDeviceReady().

Вот код, я использую:

 function onDeviceReady() { 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 
} 

function gotFS(fileSystem) { 
    fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail); 
} 

function gotFileEntry(fileEntry) { 
    fileEntry.file(gotFile, fail); 
} 

function gotFile(file){ 
    readDataUrl(file); 
    readAsText(file); 
} 

function readDataUrl(file) { 
    var reader = new FileReader(); 
    reader.onloadend = function(evt) { 
     console.log("Read as data URL"); 
     console.log(evt.target.result); 
    }; 
    reader.readAsDataURL(file); 
} 

function readAsText(file) { 
    var reader = new FileReader(); 
    reader.onloadend = function(evt) { 
     console.log("Read as text"); 
     console.log(evt.target.result); 
    }; 
    reader.readAsText(file); 
} 

function fail(evt) { 
    console.log(evt.target.error.code); 
} 

Этот код работает для андроида. Но для Ios, я получаю ReferenceError: Не удается найти переменную: LocalFileSystem в этой линии -

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 
+0

Вы действительно слушаете событие deviceready, чтобы вызвать функцию onDeviceReady? Вы пытались добавить console.log на каждом шаге, чтобы быть уверенным, что вызвано или нет? – QuickFix

+0

есть событие deviceready вызывает. В этой строке есть некоторая проблема window.requestFileSystem (LocalFileSystem.PERSISTENT, 0, gotFS, fail); – sudam

+0

Этот код работает для android. Но для Ios я получаю ReferenceError: не могу найти переменную: LocalFileSystem в этой строке - window.requestFileSystem (LocalFileSystem.PERSISTENT, 0, gotFS, сбой); – sudam

ответ

2

Если LocalFileSystem не определен, это почти наверняка означает, что JavaScript-код плагина не загружается.

Вы используете любые другие API-интерфейсы Cordova? Можете ли вы сказать, загружается ли cordova.js со своей HTML-страницы и работает ли она правильно?

КСН, один из лучших методов отладки для задачи, как это подключиться к IPad (или тренажере) с Safari, и запустить

location.reload() 

из консоли JavaScript. Если cordova.js обнаруживает ошибку, то она может перестать работать до загрузки плагина File.

(FWIW, LocalFileSystem никогда не должен быть реальным объектом,. Это на самом деле интерфейс, который window предполагается реализовать я хотел бы перейти к использованию window.PERSISTENT для совместимости с File API спецификации Это говорит, Кордова (для обратной. совместимость) следует установить ПОСТОЯННЫЕ и ВРЕМЕННЫЕ символы на обоих window и LocalFileSystem.)

+0

Я использую cordova3.3.0. coedova.js загружается должным образом, потому что вызывается функция onDeviceReady(). – sudam

+0

Да, он может перестать работать до того, как он загрузится в плагин File. что может быть причиной остановки. – sudam

+0

Вы пробовали трюк 'location.reload(), о котором я упоминал? Если он перестает работать, на консоли должна появиться ошибка, которую вы можете увидеть. –

0

Рядом с кордорой. Я также устанавливаю телефонную разницу like bellow command. и сделать новое приложение и установить все плагины. Теперь работает программа чтения файлов. Благодарим вас за помощь.

$ sudo npm install -g phonegap 
$ phonegap create my-app 
$ cd my-app 
2

Файловая система Phonegap 3.3.0 имеет новый подход. Если вы используете полный путь для входа, вам нужно заменить его на toURL().

Также в файле config.xml вы должны добавить

<preference name="iosPersistentFileLocation" value="Compatibility" /> 

Ваш лучший выбор должен был бы пойти по этой ссылке https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md

внесении эти изменения работали для меня. Надеюсь, это сработает и для вас.

+1

Откуда у вас эта информация? В официальных документах PhoneGap нет ничего о сохранении местоположения ios Persistent File Location. –

+0

Ссылка, которую вы отправили 404s. –

Смежные вопросы