Meine iOS -App schreibt Dateien in iCloud, aber diese Dateien werden im ICloud -Bereich nicht im Finder angezeigt. Meine App hat erfolgreich Dateien auf iCloud auf einem iPhone geschrieben und diese Datei dann in ein anderes iPhone gelesen, um zu beweisen, dass die Dateien tatsächlich in iCloud vorhanden sind, aber nur für meine App sichtbar sind. Die geschriebenen Dateien scheinen für meine App privat zu sein. Alle Geräte und Computer sind in iCloud in derselben Apple -ID angemeldet. Der gleiche Build meiner App lief in beiden iPhones. Die URL, die meine App für iCloud verwendet, enthält das Verzeichnis "Dokumente": < /p>
NSFileManager *fman = [NSFileManager defaultManager];
NSURL *urlDrive = [fman URLForUbiquityContainerIdentifier: nil];
NSURL *urlDocs = [urlDrive URLByAppendingPathComponent:@"Documents"];
NSURL *urlFile = [urlDocs URLByAppendingPathComponent: @"hello.txt"];
< /code>
wobei der allgegenwärtige Container in der info.plist -Datei definiert ist wie: < /p>
NSUbiquitousContainers
iCloud.com.{my domain}.{my app}
NSUbiquitousContainerIsDocumentScopePublic
NSUbiquitousContainerSupportedFolderLevels
Any
NSUbiquitousContainerName
{my app}
UIFileSharingEnabled
< /code>
Trotz der Tatsache, dass meine App von einem iPhone schreiben und von einem anderen iPhone lesen kann, kann ich die Dateien oder sogar das Verzeichnis für {My App} nicht in einem anderen Datei -Explorer wie Finder oder den Dateien -Apps -App -App -App -App -App -Apps auf dem iCloud -Abschnitt auf dem iCloud -Abschnitt auf dem ICloud -Abschnitt auf dem iCloud -Abschnitt auf dem Abschnitt über den ICloud auf dem Abschnitt über den ICloud -Abschnitt können. Das Problem ist, dass die Dateien im iCloud -Verzeichnis im Finder nicht angezeigt werden, obwohl die Datei auf einem iPhone für meine App zugegriffen werden kann. Der kürzeste Code, der das Problem demonstriert, ist der Code, den ich zum Lesen und Schreiben von und von iCloud verwendet habe: < /p>
void writeToiCloud(void) {
NSFileManager *fman = [NSFileManager defaultManager];
NSURL *urlDrive = [fman URLForUbiquityContainerIdentifier: nil];
NSURL *urlDocs = [urlDrive URLByAppendingPathComponent:@"Documents"];
if( ! [fman fileExistsAtPath: urlDocs.path] ) { //..need to create the Docs directory
NSError *err00 = nil;
@try {
[fman createDirectoryAtURL: urlDocs withIntermediateDirectories:true
attributes:nil error:&err00];
} @catch (NSException *except) {
NSLog(@"Exception creating directory %@", except);
}
} //..directory is now created if needed
NSURL *urlFile = [urlDocs URLByAppendingPathComponent:@"hello.txt"];
NSData *fdata = [@"Hello world" dataUsingEncoding: NSUTF8StringEncoding];
NSError *errorReturn = nil;
Boolean ret = [fdata writeToURL: urlFile options: NSDataWritingAtomic error: &errorReturn];
NSLog(@"returned %1d, error=%@", ret?1:0, errorReturn); //always says "1 error=(nil)"
}
void readFromiCloud(void) {
NSFileManager *fman = [NSFileManager defaultManager];
NSURL *urlDrive = [fman URLForUbiquityContainerIdentifier: nil];
NSURL *urlDocs = [urlDrive URLByAppendingPathComponent:@"Documents"];
NSURL *urlFile = [urlDocs URLByAppendingPathComponent:@"hello.txt"];
if([fman fileExistsAtPath: urlFile.path]) {
NSString *fullFN = [localDocsDirectory() stringByAppendingPathComponent: @"hello-Local.txt"];
NSURL *destURL = [NSURL fileURLWithPath: fullFN];
@try {
[fman copyItemAtURL: urlFile toURL:destURL error:&errReading];
NSLog(@"file copied from iCloud to local");
} @catch(NSException *exc) {
NSLog(@"copyItem threw %@", exc);
}
} else {NSLog(@"file %@ DOES NOT EXIST!", urlFile);}
}
< /code>
Eine seltsame Sache ist, dass bei der Verwendung eines iPhone 7 iOS 15.8.4 und ein iPhone 13, das iOS 18.3.2 ausgeführt wurde, aus dem iPhone 7 auf meine App, die auf dem iPhone 13 ausgeführt wurde, zugänglich war, aber Dateien, die vom iPhone 13 geschrieben wurden, waren nicht auf die iPhone 7 zugänglich. Beide Telefone wurden die ganze Zeit mit dem Internet verbunden. Ich habe auch den Namen der App -Version Bundle gestoßen, wenn ich eine Änderung der Plist -Datei vorgenommen habe.
Wie kann ich Dateien erstellen, die meine iOS -App in iCloud schreibt, die auf andere Apps wie Finder in MacOS oder die ⇐ IOS
-
- Similar Topics
- Replies
- Views
- Last post