2016-05-04 4 views
1

Я интегрирован ICloud в IOS приложение, с помощью raywenderlich https://www.raywenderlich.com/6015/beginning-icloud-in-ios-5-tutorial-part-1Интеграция ICloud в Ios App и извлечение файлов из ICloud

Но IAM не в состоянии показать все файлы из ICloud нашего приложения IOS, а также специальных типов файлов, таких как PDF, doc и docx

Может ли кто-нибудь предложить мне.

+0

Дорогой я отправил ответ, пожалуйста, проверьте, что я надеюсь, что это поможет. –

ответ

1

Следуйте этому руководству

https://www.raywenderlich.com/12779/icloud-and-uidocument-beyond-the-basics-part-1

Скачать образец кода на

https://github.com/rwenderlich/PhotoKeeper

Проверьте, если ICloud доступны

- (void)initializeiCloudAccessWithCompletion:(void (^)(BOOL available)) completion { 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     _iCloudRoot = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; 
     if (_iCloudRoot != nil) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       NSLog(@"iCloud available at: %@", _iCloudRoot); 
       completion(TRUE); 
      });    
     }    
     else { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       NSLog(@"iCloud not available"); 
       completion(FALSE); 
      }); 
     } 
    }); 
} 

Тип запроса мух, как PDF, DOC и DOCX

- (NSMetadataQuery *)documentQuery { 

    NSMetadataQuery * query = [[NSMetadataQuery alloc] init]; 
    if (query) { 

     // Search documents subdir only 
     [query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]]; 

     // Add a predicate for finding the documents 
     NSString * filePattern = [NSString stringWithFormat:@"*.%@", PTK_EXTENSION]; 
     [query setPredicate:[NSPredicate predicateWithFormat:@"%K LIKE %@", 
          NSMetadataItemFSNameKey, filePattern]];   

    } 
    return query; 

} 
1

Следуйте инструкциям ниже, чтобы интегрировать iCloud в приложении iOS и получить файлы. 1. Включите iCloud из своей учетной записи разработчика. 2. Создайте права на контейнеры iCloud на счете разработчика. 3. Затем используйте только код, в котором вы хотите интегрировать интеграцию iCloud.

Прежде всего импорта #import и добавить iCloudDelegate делегат затем установить делегат:

   // Setup iCloud 
      [[iCloud sharedCloud] setDelegate:self]; 
      [[iCloud sharedCloud] setVerboseLogging:YES]; 
      [[iCloud sharedCloud] setupiCloudDocumentSyncWithUbiquityContainer:nil]; 

      [self showiCloudFiles]; 

затем реализация метода showiCloudFiles ниже

-(void) showiCloudFiles{ 

BOOL cloudAvailable = [[iCloud sharedCloud] checkCloudAvailability]; 
if (cloudAvailable && [[NSUserDefaults standardUserDefaults] boolForKey:@"userCloudPref"] == YES) { 
    UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"public.content"] 
                              inMode:UIDocumentPickerModeImport]; 
    documentPicker.delegate = self; 
    documentPicker.modalPresentationStyle = UIModalPresentationFormSheet; 
    [self presentViewController:documentPicker animated:YES completion:nil]; 

} 
else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"userCloudPref"] == NO) { 

    UIAlertController * alert = SIMPLE_ALERT_VIEW(@"iCloud Disabled", @"You have disabled iCloud for this app. Would you like to turn it on again?"); 
    UIAlertAction* cancelButton = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){}];[alert addAction:cancelButton]; 
    UIAlertAction* deleteButton = [UIAlertAction actionWithTitle:@"Turn On iCloud" 
                  style:UIAlertActionStyleDefault 
                 handler:^(UIAlertAction * action){ 
                  [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"userCloudPref"]; 
                  [[NSUserDefaults standardUserDefaults] synchronize]; 

                  BOOL cloudAvailable = [[iCloud sharedCloud] checkCloudAvailability]; 
                  if (cloudAvailable && [[NSUserDefaults standardUserDefaults] boolForKey:@"userCloudPref"] == YES) { 
                   UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"public.content"] 
                                             inMode:UIDocumentPickerModeImport]; 
                   documentPicker.delegate = self; 
                   documentPicker.modalPresentationStyle = UIModalPresentationFormSheet; 
                   [self presentViewController:documentPicker animated:YES completion:nil]; 

                  } 
                 }]; 
    [alert addAction:deleteButton]; 
    [self presentViewController:alert animated:YES completion:nil]; 

} else { 

    UIAlertController * alert = SIMPLE_ALERT_VIEW(@"Setup iCloud", @"iCloud is not available. Sign into an iCloud account on this device and check that this app has valid entitlements."); 
    UIAlertAction* cancelButton = [UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){}];[alert addAction:cancelButton];                 
                 }]; 
    [self presentViewController:alert animated:YES completion:nil]; 

} 

}

После что f или загрузки файла используйте метод UIDocumentPickerDelegate:

#pragma mark - UIDocumentPickerDelegate 
-(void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url{ 
if (controller.documentPickerMode == UIDocumentPickerModeImport) { 
    //NSLog(@"%@",url); 


    [url startAccessingSecurityScopedResource]; 
    NSFileCoordinator *coordinator = [[NSFileCoordinator alloc] init]; 
    NSError *error; 
    __block NSData *fileData; 

    [coordinator coordinateReadingItemAtURL:url options:NSFileCoordinatorReadingForUploading error:&error byAccessor:^(NSURL *newURL) { 
// File name for use in writing the file out later 
NSString *fileName = [newURL lastPathComponent]; NSString *fileExtension = [newURL pathExtension]; if([fileExtension isEqualToString:@"zip"]) {if([[[newURL URLByDeletingPathExtension] pathExtension] isEqualToString:@"pages"] || 
     [[[newURL URLByDeletingPathExtension] pathExtension] isEqualToString:@"numbers"] || 
     [[[newURL URLByDeletingPathExtension] pathExtension] isEqualToString:@"key"]) { 
     // Remove .zip if it is an iWork file 
     fileExtension = [[newURL URLByDeletingPathExtension] pathExtension]; 
     fileName = [[newURL URLByDeletingPathExtension] lastPathComponent]; 
} 
} 
NSError *fileConversionError;fileData = [NSData dataWithContentsOfURL:newURL options:NSDataReadingUncached error:&fileConversionError]; 
     // Do further code using fileData 
     } 
    }]; 
[url stopAccessingSecurityScopedResource]; 
    } 
} 

Для UIDocumentPicker визита ссылку iOS-8-UIDocumentPicker

Смежные вопросы