如何使用UIActivityViewController共享.zip文件?

时间:2017-07-26 20:43:23

标签: ios objective-c

我需要通过电子邮件/ iTunes /其他方式(例如消息,AirDrop)共享.zip文件。我已经可以通过电子邮件和iTunes发送压缩文件,但是当我尝试使用UIActivityViewController发送zip文件时,它不会显示任何文件。

这是代码:

-(void) sendAllToApp {
    NSString *dpath=NSTemporaryDirectory();
    NSString *zipfile=[dpath stringByAppendingPathComponent:[NSString stringWithFormat:@"All_Reports_of_Project_%@.zip",project.displayName]];
    [SSZipArchive createZipFileAtPath:zipfile withFilesAtPaths:zippedURL];//zipfile is the path that I store zip file data,zippedURL is the paths of files t.
    NSData *zipData=[[NSFileManager defaultManager]contentsAtPath:zipFile];
    NSURL *url =[NSURL fileURLWithPath:zipfile];
    [zipData writeToURL:url atomically:NO];
    if(zipData != nil) {
        UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[url] applicationActivities:nil];
        activityViewController.excludedActivityTypes = @[UIActivityTypePrint];
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            activityViewController.popoverPresentationController.sourceView = self.navigationController.view;
            activityViewController.popoverPresentationController.sourceRect = CGRectMake(self.navigationController.view.bounds.size.width/2, self.navigationController.view.bounds.size.height/4, 0, 0);
        }
        [self.navigationController presentViewController:activityViewController animated:true completion:nil];

        activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
            // When completed flag is YES, user performed specific activity

                    };
        [self clearTmpDirectory];
    }
    else {
        [self showError];
        [self clearTmpDirectory];
    }
}

我将项目设置为@[url]@[zipData]

  • 使用网址时,我无法使用AirDrop。

  • 使用zip数据时,我在MacBook中获得了一个.data文件。如果我将.data文件更改为.zip,它将成为我想要分享的正确文件。

那我怎样才能正确分享.zip文件?

1 个答案:

答案 0 :(得分:0)

我们遇到了同样的问题。唯一对我们有用的修复方法是将.zip转换为.tar文件,该文件可以使用包含其路径的NSURL进行共享。