La cartella di iCloud Drive non mostra la cartella della mia app.Perché la mia app non viene mostrata nella cartella di iCloud Drive
Questo è come io mando un file su iCloud Unità:
- (IBAction)btnStoreTapped:(id)sender {
// Let's get the root directory for storing the file on iCloud Drive
[self rootDirectoryForICloud:^(NSURL *ubiquityURL) {
NSLog(@"1. ubiquityURL = %@", ubiquityURL);
if (ubiquityURL) {
// We also need the 'local' URL to the file we want to store
//NSURL *localURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Photo" ofType:@"pdf"]];
NSURL *localURL = [self localPathForResource:@"document" ofType:@"doc"];
NSLog(@"2. localURL = %@", localURL);
// Now, append the local filename to the ubiquityURL
ubiquityURL = [ubiquityURL URLByAppendingPathComponent:localURL.lastPathComponent];
NSLog(@"3. ubiquityURL = %@", ubiquityURL);
// And finish up the 'store' action
NSError *error;
if (![[NSFileManager defaultManager] setUbiquitous:YES itemAtURL:localURL destinationURL:ubiquityURL error:&error]) {
NSLog(@"Error occurred: %@", error);
}else{
NSLog(@"Succeed");
}
}
else {
NSLog(@"Could not retrieve a ubiquityURL");
}
}];
}
- (void)rootDirectoryForICloud:(void (^)(NSURL *))completionHandler {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL *rootDirectory = [[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]URLByAppendingPathComponent:@"Documents"];
if (rootDirectory) {
if (![[NSFileManager defaultManager] fileExistsAtPath:rootDirectory.path isDirectory:nil]) {
NSLog(@"Create directory");
[[NSFileManager defaultManager] createDirectoryAtURL:rootDirectory withIntermediateDirectories:YES attributes:nil error:nil];
}
}
dispatch_async(dispatch_get_main_queue(), ^{
completionHandler(rootDirectory);
});
});
}
- (NSURL *)localPathForResource:(NSString *)resource ofType:(NSString *)type {
NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *resourcePath = [[documentsDirectory stringByAppendingPathComponent:resource] stringByAppendingPathExtension:type];
return [NSURL fileURLWithPath:resourcePath];
}
In realtà ho fatto everyting spiegato in this post
Tutto sembra bene. Posso caricare i file con successo e posso mostrarli sul mio computer tramite terminale.
E posso vedere i file che ho appena caricato dal mio iPhone.
Ma nulla viene mostrato nella mia cartella iCloud Drive nel mio mac o icloud.com. Perché non stanno mostrando la cartella della mia app, anche se tutto sembra a posto e non ci sono errori?
Mi sembra di aver smentito la tua affermazione che "NSUbiquitousContainerIsDocumentScopePublic = true entra in vigore solo dopo che l'app (e il contenitore iCloud autorizzato) è stata sottoposta a revisione e approvazione". Con un'app di app store esistente, nessuna chiave NSUbiquitousContainers è presente nel plist. Ho aggiunto NSUbiquitousContainerIsDocumentScopePublic = true e ho eseguito il Bump di CFBundleVersion senza inviarlo all'app store e il contenitore dell'ubiquità diventa visibile nell'app iOS di iCloud Drive ** e ** il contenitore diventa visibile su un sistema OS X registrato nello stesso account iCloud (I non ha nemmeno sincronizzato un file). –
Sono d'accordo @ Michael Rourke. Non ha nulla a che fare con App Store. Quello che per me è stato risolto è stato ottenere un nuovo ID app come http://stackoverflow.com/questions/25203697/exposing-an-apps-ubiquitous-container-to-icloud-drive-in-ios-8/32801479#32801479 . La mia app non è ancora in App Store. È necessario avere NSUbiquitousContainerIsDocumentScopePublic = true in Info.plist prima di eseguire l'app per la prima volta. – BillF
Ho avuto questo stesso problema. La mia app è già attiva nell'app store, quindi non c'è nulla che possa fare per rendere visibile la cartella dell'app nell'unità iCloud. Ho anche disinstallato l'app e reinstallato, e non mostra. – gbotha