#import <Foundation/Foundation.h>
@interface FileManager : NSFileManager
+ (FileManager *)shared;
- (void)downloadDocs:(NSString *)fileName withFileURL:(NSString *)shareURL;
@end
-----------------------------------------------------------------------------------------
#import "FileManager.h"
@implementation FileManager
+ (FileManager *)shared {
static FileManager *fm = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
fm = [[self alloc] init];
});
return fm;
}
- (void)downloadDocs:(NSString *)fileName withFileURL:(NSString *)shareURL {
NSString *fileType;
if ([shareURL hasSuffix:@"pdf"]) {
fileType = @"pdf";
}
else if ([shareURL hasSuffix:@"hwp"]) {
fileType = @"hwp";
}
dispatch_async(dispatch_get_main_queue(), ^ {
NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *file = [self generateName:fileName withFiletype:fileType];
NSString *filePath = [documentDir stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@", file]];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:shareURL]];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request
completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Download Error:%@",error.description);
return;
}
else if (data && error == nil) {
dispatch_async(dispatch_get_main_queue(), ^{
[data writeToFile:filePath atomically:YES];
[self shareFile:fileName withFilepath:filePath];
});
}
}];
[task resume];
});
}
- (void)shareFile:(NSString*)withfileName withFilepath:(NSString*)filePath {
NSMutableArray *items = [NSMutableArray array];
if (filePath) {
[items addObject:[NSURL fileURLWithPath:filePath]];
}
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
[activityViewController setValue:withfileName forKey:@"subject"];
UIWindow *win = [[[UIApplication sharedApplication] delegate] window];
UINavigationController *navi = (UINavigationController*)win.rootViewController;
[activityViewController setCompletionWithItemsHandler:
^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
if (completed) {
NSLog(@"completed");
}
else {
NSLog(@"fail");
}
}];
[navi presentViewController:activityViewController animated:YES completion:nil];
}
- (NSString *)generateName:(NSString*)title withFiletype:(NSString*)type {
NSString *subject = [title stringByReplacingOccurrencesOfString:@" " withString:@"_"];
subject = [NSString stringWithFormat:@"%@.%@",subject,type];
return subject;
}
@end
-----------------------------------------------------------------------------------------------------
if ([requestString rangeOfString:@".pdf"].location != NSNotFound) {
[[FileManager shared] downloadDocs:@"docs" withFileURL:requestString];
}
출처: https://stackoverflow.com/questions/15781877/how-to-send-a-pdf-file-using-uiactivityviewcontroller
'iOS > Objective-c' 카테고리의 다른 글
[ObjC] NSData XOR 비트 연산 - 데이터 축약 (0) | 2019.08.06 |
---|---|
[ObjC]URL 파싱해서 파라미터 추출 (0) | 2019.07.09 |
[ObjC] iOS 연결된 Bluetooth 기기 앱과 연결시켜주기 (0) | 2019.03.21 |
[ObjC] EAAccessory 사용해서 Bluetooth 연결하기 (0) | 2019.03.16 |
[ObjC] 텍스트 암호화 (0) | 2019.02.26 |