【问题标题】:Add to iCloud Drive with UIActivityViewController使用 UIActivityViewController 添加到 iCloud Drive
【发布时间】:2017-02-06 22:17:32
【问题描述】:

我想使用此处所示的 UIActivityViewController 的“添加到 iCloud Drive”操作来上传我存储在 iOS 设备上的文件:

目前在我的自定义 UIActivityItemProvider 类中,我的 - (id)item 方法返回以下内容: [NSURL 文件URLWithPath: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];

【问题讨论】:

    标签: ios objective-c uiactivityviewcontroller uiactivity uiactivityitemprovider


    【解决方案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。

    【讨论】:

    • 我希望能够将文件上传到 iCloud Drive。它目前显示此 iCloud 选项,我的自定义提供程序返回一个 NSURL,我的活动项是该自定义提供程序和一个字符串
    • 在真机上显示
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多