Добавить в iCloud Drive с помощью UIActivityViewController

Я хотел бы использовать действие UIActivityViewController "Добавить в iCloud Drive", изображенное здесь, чтобы загрузить файл, который я храню на устройстве iOS:

В настоящее время в моем пользовательском классе UIActivityItemProvider у меня есть метод элемента - (id), возвращающий следующее: [NSURL fileURLWithPath: fullPath];

FullPath - это путь к файлу, который я создаю и хочу загрузить на диск iCloud. Это работает, когда я нажимаю "Добавить в заметки", почтовое действие или мое пользовательское действие, но не для диска iCloud. Вместо того, чтобы использовать этот файл, он создает файл по умолчанию с темой, которую я использую для работы с электронной почтой, которая называется "Прикрепленный файл". как содержимое файла. Вот код, который я использую для представления UIActivityViewController:

CustomActivity * customActivity = [[CustomActivity alloc]init];
CustomItemProvider *itemProvider = [[CustomItemProvider alloc] initWithPlaceholderItem:_itemsArray];

NSArray *activityItems = [NSArray arrayWithObjects:itemProvider, NSLocalizedString(@"Attached is a file.", nil), nil];

UIActivityViewController *avc = [[UIActivityViewController alloc]
                                 initWithActivityItems:activityItems
                                 applicationActivities:@[customActivity]];

float iOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];

if (iOSVersion < 9.0)
{
    avc.excludedActivityTypes = @[UIActivityTypePostToFacebook, UIActivityTypeAirDrop, UIActivityTypeCopyToPasteboard, UIActivityTypeMessage, UIActivityTypePostToFlickr, UIActivityTypePostToTwitter, UIActivityTypePostToVimeo, UIActivityTypePostToWeibo, UIActivityTypePrint, UIActivityTypeSaveToCameraRoll, UIActivityTypePostToTencentWeibo,UIActivityTypeAssignToContact, UIActivityTypeAddToReadingList];
}
else
{
    avc.excludedActivityTypes = @[UIActivityTypePostToFacebook, UIActivityTypeAirDrop, UIActivityTypeCopyToPasteboard, UIActivityTypeMessage, UIActivityTypePostToFlickr, UIActivityTypePostToTwitter, UIActivityTypePostToVimeo, UIActivityTypePostToWeibo, UIActivityTypePrint, UIActivityTypeSaveToCameraRoll, UIActivityTypePostToTencentWeibo,UIActivityTypeAssignToContact, UIActivityTypeAddToReadingList, UIActivityTypeOpenInIBooks];
}

[self presentViewController:avc animated:YES completion:nil];

1 ответ

Код кажется правильным. Но опция iCloud будет добавлена ​​только тогда, когда:

  1. Пользователь должен войти в iCloud в настройках.

  2. У вас есть полезная информация, которую вы можете загрузить на iCloud. (Если вы используете какой-либо URL-адрес в общем доступе, тогда опция iCloud не отображается в ActivityController)

Он поддерживает те типы данных, которые он может позволить вам загружать, такие как заметки, фотографии, контакты, события календаря и т. Д.

Я попробовал это:

NSString *strTextToShare = @"Hi... Friends";
UIImage *imgToShare = [UIImage imageNamed:@"wall1.png"];
NSURL *urlToShare = [NSURL URLWithString:@"https://www.apple.com"];

UIActivityViewController *shareController = [[UIActivityViewController alloc] initWithActivityItems:@[strTextToShare, /*imgToShare, urlToShare*/] applicationActivities:nil];
[self presentViewController:shareController animated: YES completion: nil];

Выше, если я попытался добавить URL, то iCloud не отображается. А также

Примечание. Если вы используете только один элемент, отображается только iCloud.

Другие вопросы по тегам