티스토리 뷰

반응형

사용 목적 : 특정 확장자를 다른 앱에서 실행 시킬 때 필요.

사용 기회 : 안드로이드는 폴더를 탐색기를 통해 공유할 수 있지만 iOS의 경우 그렇지 못하니 별도의 설정이 필요하다. 하지만 이점을 iOS에서 제공해준다는점~~~ 기능이 있다는걸 알았지만 처음 써보게 되었다.

 

//.h

@property (nonatomic, strong) UIDocumentInteractionController *documentInteractionController;


//.m

//파일 실행을 위한 준비작업.

//서버에 있는 경로를 바로 연결시켜주면 "한컴뷰어"의 경우 파일이 열리지 않아 별도로 해당 앱의 도큐먼트에 저장한 후 파일경로를 넘겨줄 경우 한글뷰어에서 해당 파일을 볼 수 있다.

NSData *tempData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://%@",@"파일경로"]]];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSAllDomainsMask, YES);

NSString *documentDirectory = [paths objectAtIndex:0];

NSString *filePath = [documentDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",fileName]];

BOOL isWrite = [tempData writeToFile:filePath atomically:YES];

NSString *tempFilePath;

if (isWrite) {

tempFilePath = [documentDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", fileName]];

}

NSURL *resultURL = [NSURL fileURLWithPath: tempFilePath];


self.documentInteractionController = [[UIDocumentInteractionController alloc] init];

self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL: resultURL];

self.documentInteractionController.delegate = self;

[self.documentInteractionController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES];


//delegate

특정앱에서만 실행 시켜야 할 경우 controller.UTI 속성을 비교하여 해당앱 설치 페이지로 넘기면 될 것 같다.

리턴값에 따라 기본속성인 복사하기, 프린트, 카메라롤 저장 등 보이게 할지 여부를 체크할 수 있다.

특정 앱이 없을 경우에는 controller.UTI 값이 "public.data"으로 넘어오는듯하다.

- (BOOL)documentInteractionController:(UIDocumentInteractionController *)controller canPerformAction:(SEL)action


< documentInteractionController return NO>


< documentInteractionController return YES>


반응형
댓글
반응형