2012-09-26 2 views
5

Sto lavorando a un'applicazione con PhoneGap (ora Apache Cordova, con la versione 2.0) e utilizzando l'API del file PhoneGap per scrivere il file.È in grado di testare l'API del file PhoneGap con l'emulatore Ripple

L'API File che uso potrebbe fare riferimento a: http://docs.phonegap.com/en/2.0.0/cordova_file_file.md.html#File

uso Ripple Emulator (0.9.9beta) da qui: https://developer.blackberry.com/html5/download per testare la mia applicazione in cromo.

Ma trovo che Ripple non è in grado di gestire correttamente l'API di PhoneGap File.

Ad esempio:

voglio creare un file (root/foo.json) nella directory PERSISTENT

function onSuccess(fileSystem) { 
    fileSystem.root.getDirectory("dir", {create: true}, function(dirEntry){ 
     dirEntry.getFile("foo.json", {create: true}, function(fileEntry){  
      fileEntry.createWriter(function(writer){ 
       writer.write(JSON.stringify(fooData)); 
      }, onfail); 
     }, onfail); 
    }, onfail); 
} 
function onfail(error) 
{ 
    console.log(error.code); 
} 

// request the persistent file system 
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onfail); 

Funziona benissimo sul simulatore iOS, che ha fatto creare il file giusto al posto giusto, ma nel Ripple Emulator in esecuzione in Chrome, ho appena ricevuto un callback su onfail e ho ricevuto il codice di errore 10 (FileError.QUOTA_EXCEEDED_ERR).

Ho anche trovato qualcuno con la domanda simile qui: Is it able to test phonegap application outside emulator?

Ma ancora nessuna risposta.

L'emulatore di Ripple non funziona correttamente per l'API PhoneGap? O mi sono perso qualche impostazione?

+0

Penso di avere la risposta, Ripple attualmente supporta un sottoinsieme dell'API PhoneGap e il lavoro è in corso per completarlo: (http://rippledocs.tinyhippos.com/index.html#platforms/phoneGap – windam

risposta

3

Problema rilevato. Devo garantire la quota prima di utilizzare l'oggetto filesystem PERSISTENT. https://developers.google.com/chrome/whitepapers/storage#persistent

// Request Quota (only for File System API) 

window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, function(grantedBytes) { 
window.webkitRequestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler); 
}, function(e) { 
console.log('Error', e); 
}); 

Sembra Ripple-UI non ha fatto questo per me (ho controllato il codice sorgente in lib/ondulazione/fs.js). Ecco perché ottengo sempre un FileError.QUOTA_EXCEEDED_ERR.

+0

Interessante Chrome lo fa automaticamente per te? Se è così, sono curioso che Ripple non erediti un comportamento dal browser in cui è in esecuzione. –