Добавить в 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 будет добавлена только тогда, когда:
Пользователь должен войти в iCloud в настройках.
У вас есть полезная информация, которую вы можете загрузить на 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.