2012-09-26 8 views
5

Estoy trabajando en una aplicación con PhoneGap (ahora Apache Cordova, con la versión de 2.0) y usando la API PhoneGap File para escribir el archivo.¿Es capaz de probar PhoneGap File API con el emulador Ripple

La API de archivos que uso podría hacer referencia a: http://docs.phonegap.com/en/2.0.0/cordova_file_file.md.html#File

utilizo Ripple Emulator (0.9.9beta) desde aquí: https://developer.blackberry.com/html5/download para probar mi aplicación en cromo.

Pero me parece que Ripple no pudo manejar la API PhoneGap File correctamente.

Por ejemplo:

quiero crear un archivo (raíz/foo.json) en el directorio de PERSISTENTE

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); 

funciona bien en el simulador de iOS, que hizo crear el archivo correcto en el lugar correcto, pero en el emulador de ondulación que se ejecuta en cromo, acabo de recibir una devolución de llamada en tiempo de ejecución, y obtuve el código de error 10 (FileError.QUOTA_EXCEEDED_ERR).

También encontré a alguien con la pregunta similar aquí: Is it able to test phonegap application outside emulator?

Pero aún no hay respuesta.

¿El emulador de Ripple actualmente no funciona correctamente para PhoneGap API? ¿O me perdí alguna configuración?

+0

Creo que puedo obtener la respuesta, Ripple actualmente admite un subconjunto de la API PhoneGap y el trabajo está en curso para completarlo: (http://rippledocs.tinyhippos.com/index.html#platforms/phoneGap – windam

Respuesta

3

Problema encontrado. Necesito otorgar cuota antes de usar el objeto del sistema de archivos 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); 
}); 

Parece Ripple-IU no hizo esto para mí (he comprobado el código fuente en lib/rizado/fs.js). Es por eso que siempre obtengo un FileError.QUOTA_EXCEEDED_ERR.

+0

Interesante . ¿Chrome hace esto automáticamente? Si es así, tengo curiosidad de que Ripple no herede un comportamiento del navegador en el que se está ejecutando. –

Cuestiones relacionadas