2012-09-26 14 views
5

Tôi đang làm việc trên một ứng dụng với PhoneGap (hiện tại Apache Cordova, với phiên bản 2.0) và sử dụng API tệp PhoneGap để ghi tệp.Có thể kiểm tra API API PhoneGap bằng trình mô phỏng Ripple

API File I sử dụng có thể được tham chiếu tại: http://docs.phonegap.com/en/2.0.0/cordova_file_file.md.html#File

tôi sử dụng Ripple Emulator (0.9.9beta) từ đây: https://developer.blackberry.com/html5/download để kiểm tra ứng dụng của tôi trong chrome.

Nhưng tôi thấy Ripple không thể xử lý chính xác API tệp PhoneGap.

Ví dụ:

Tôi muốn tạo ra một tập tin (thư mục gốc/foo.json) tại thư mục dai dẳng

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

Nó hoạt động tốt trên iOS mô phỏng, mà đã tạo ra các tập tin ngay tại đúng nơi, nhưng trong Trình giả lập Ripple chạy trong chrome, tôi vừa nhận được một cuộc gọi lại onfail và nhận mã lỗi 10 (FileError.QUOTA_EXCEEDED_ERR).

Tôi cũng tìm thấy một người nào đó với câu hỏi tương tự ở đây: Is it able to test phonegap application outside emulator?

Nhưng vẫn không có câu trả lời.

Trình giả lập Ripple hiện có hoạt động không chính xác cho API PhoneGap không? Hay tôi đã bỏ lỡ một số thiết lập?

+0

Tôi nghĩ rằng tôi có thể nhận được câu trả lời, Ripple hiện hỗ trợ một tập hợp con của API PhoneGap và công việc đang được tiến hành để hoàn thành: (http://rippledocs.tinyhippos.com/index.html#platforms/phoneGap – windam

Trả lời

3

Đã tìm thấy sự cố. Tôi cần cấp hạn ngạch trước khi sử dụng đối tượng hệ thống tệp 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); 
}); 

Dường như Ripple-UI không làm điều này cho tôi (tôi đã kiểm tra mã nguồn tại lib/gợn/fs.js). Đó là lý do tại sao tôi luôn nhận được FileError.QUOTA_EXCEEDED_ERR.

+0

Thú vị Chrome có làm điều này cho bạn một cách tự động không? Nếu vậy, tôi tò mò rằng Ripple sẽ không kế thừa một hành vi từ trình duyệt mà nó đang chạy bên trong. –