Phonegap Cordova FileSystem在iOS上不持久?

时间:2014-09-10 21:36:40

标签: ios cordova

我正在开发适用于iOS和Android的应用程序,我正在使用Cordovas File插件将一些数据保存到设备上的文件中。

此文件将包含有关用户的信息,因此他/她无需在每次使用应用程序时登录,因此即使应用程序已退出并重新启动,信息也必须存在。

在Android上,这很好用:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 20*1024*1024, app.onFileSystemSuccess, fail);

在Android上,我保存的数据会在下次打开应用时出现,但在iOS上,该文件为空(或不存在)。

这对iOS不起作用吗?

以下是整个来源:

var app = {

    initialize: function()
    {
        this.bindEvents();
    },

    bindEvents: function()
    {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },

    onDeviceReady: function()
    {
        app.initAPP();
    },

    initAPP: function()
    {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 20*1024*1024, app.onFileSystemSuccess, fail);
    },

    onFileSystemSuccess: function(FS)
    {
        FS.root.getDirectory('MyAPPDir', {create:true}, app.gotDir, fail);
    },

    gotDir: function(Dir)
    {
        app.appRoot = Dir;
        try{
            app.appRoot.getFile('authInfo.txt', {create:true}, function(fileEntry){
                fileEntry.file(function(file){
                    alert('Got file authInfo.txt')
                    var Reader = new FileReader();
                    Reader.onloadend = function(e){
                        alert(e.target.result);
                        if( e.target.result  == '' ){
                            $('#container').load('login.html');
                        }
                        else{
                            document.authInfo = e.target.result;
                            alert(e.target.result);
                            alert('You are now auhtorized');
                        }
                    }
                    Reader.readAsText(file);
                })
            })
        } catch(e){
            $('#container').load('login.html');
        }
    },

    authUser: function()
    {
        email = $("#email").val();
        password = $("#password").val();

        $.ajax({
            url: AUTH_URL,
            type: 'POST',
            data:{
                email: email,
                password: password
            },
            success: function(data){
                resp = $.parseJSON(data);
                if( resp.status == 'success' ){
                    try{
                        app.appRoot.getFile('authInfo.txt', {create:true}, function(fileEntry){
                            fileEntry.createWriter(function(writer){
                                writer.truncate(0);
                                writer.onwriteend = function(){
                                    writer.write(resp);
                                    writer.onwriteend = function(){
                                        alert('Wrote '+JSON.stringify(resp)+' to '+fileEntry.toURL());
                                    }
                                }
                            });
                        });
                    }
                    catch (e){
                        alert(e);
                    }
                } else {
                    alert(resp.message);
                }
            }
        });
    }
};

function fail(a){
    alert(a);
}

我在iOS中收到此消息:

  

写了{....... myjson .....}到cdvfile://localhost/persistent/MyAPPDir/authInfo.txt

但是当它试图在启动时读取它时,似乎该文件不再存在,或者是空的?

0 个答案:

没有答案