1

Apple の Web サイトの開発者向けドキュメントによると: https://developer.apple.com/library/ios/#qa/qa1719/_index.html

iOS 5.0.1 から、新しい「バックアップしない」ファイル属性が導入され、開発者はバックアップするファイルを明確に指定できるようになりました。(com.apple.MobileBackup)

これがPhoneGap / Cordovaでサポートされているかどうか疑問に思っています.バックアップされていないオフラインデータ(ダウンロードまたは再作成できるが、ユーザーがオフライン時に確実に利用できることを期待しているデータ)を保存できるようにしたいからです。 iCloudにアップ。

永続性は PhoneGap Web サイトで明確に文書化されています (LocalFileSystem.PERSISTENT - http://docs.phonegap.com/en/1.5.0/phonegap_file_file.md.html#LocalFileSystem ) が、保存されたファイルを保証する方法はないようです。 iCloudにはバックアップされません。

4

3 に答える 3

3

これは、Apple が探しているものを解決すると信じている Cordova フレームワークを活用した、機能する JS コードのサンプルです。

document.addEventListener("deviceready",onDeviceReady,false);

function onSetMetadataSuccess() {
    console.log("success setting metadata - DONE DONE DONE!")
}
function onSetMetadataFail() {
    console.log("error setting metadata")
}
function onGetDirectorySuccess(parent) {
    console.log("success getting dir");
    parent.setMetadata(onSetMetadataSuccess, onSetMetadataFail, { "com.apple.MobileBackup": 1});
}
function onGetDirecotryFail() {
    console.log("error getting dir")
}

function onFileSystemSuccess(fileSystem) {
    console.log("onFileSystemSuccess()")

    var dirEntry = fileSystem.root;
    dirEntry.getDirectory('Backups', {create: true, exclusive: false},
            onGetDirectorySuccess, onGetDirecotryFail);

}

function onFileSystemFail(evt) {
    console.log("!!!!! onFileSystem fail...")
    console.log(evt.target.error.code);
}

/* When this function is called, PhoneGap has been initialized and is ready to roll */
function onDeviceReady()
{

    // this and subsequent callbacks tells iOS not to store our data in iCloud.
    // without it they rejected our app because of the way PG 1.8 does local->tem storage
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onFileSystemFail);

}
于 2012-06-28T04:09:36.697 に答える
3

私はまだPhoneGap / Cordova内で解決策を探していますが、一時的な回避策として...

私の AppDelegate init では:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

// Get documents directory
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *formularyPath = [documentsDirectory stringByAppendingPathComponent:@"OfflineData"];

if (![[NSFileManager defaultManager] fileExistsAtPath:formularyPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:formularyPath withIntermediateDirectories:NO attributes:nil error:nil];

// Prevent iCloud backup
u_int8_t b = 1;
setxattr([formularyPath fileSystemRepresentation], "com.apple.MobileBackup", &b, 1, 0, 0);

#import "sys/xattr.h"を忘れないでください

これにより、ドキュメントの下に新しいフォルダーが作成され、バックアップなし属性が設定されます。

その後、永続化されたローカル ファイル ストア オプションを使用してファイルを PhoneGap に保存できます。新しいサブディレクトリに保存されたファイルはバックアップされません。

于 2012-04-10T12:38:24.260 に答える