티스토리 뷰


1. UIDocumentInteractionController 의 사용


UIDocumentInteractionController 는 sandbox 내부의 파일과의 사용자 상호 작용을 관리하기 위한 클래스이다.

예를들어 이메일 앱에서는 사용자가 첨부파일을 미리보고 다른 앱에서 열 수 있도록한다.

또한 지정된 파일을 미리 보거나 열거나 복사, 인쇄할 수 있는 적절한 UI 를 제공한다.


UI 를 나타낸 후 UIDocumentInteractionController 는 파일 미리보기 및 메뉴 표시에 대한 동작들을 담당한다.


self.documentController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];

self.documentController.delegate = self;


BOOL isPresentSuccess = [self.documentController presentOptionsMenuFromRect:CGRectZero

                                                                     inView:self.view

                                                                   animated:YES];


앱 개발자는 delegate 를 통해 사용자 인터페이스 내에서 발생하는 상호 작용에 참여할 수 있다.


- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller;

- (CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController *)controller;

- (nullable UIView *)documentInteractionControllerViewForPreview:(UIDocumentInteractionController *)controller;

- (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller;

- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller;


- (void)documentInteractionControllerWillPresentOptionsMenu:(UIDocumentInteractionController *)controller;

- (void)documentInteractionControllerDidDismissOptionsMenu:(UIDocumentInteractionController *)controller;

- (void)documentInteractionControllerWillPresentOpenInMenu:(UIDocumentInteractionController *)controller;

- (void)documentInteractionControllerDidDismissOpenInMenu:(UIDocumentInteractionController *)controller;

- (void)documentInteractionController:(UIDocumentInteractionController *)controller 

        willBeginSendingToApplication:(nullable NSString *)application; // bundle ID

- (void)documentInteractionController:(UIDocumentInteractionController *)controller 

        didEndSendingToApplication:(nullable NSString *)application;


추가적으로, 어떤 앱을 선택 후 우리 앱 실행 시 UIDocumentInteractionController 내부적으로 다시 자신을 참조할 수 있는데

이때 지역변수로 인스턴스를 들고있다면 ARC 가 release 시켜 crash 가 날 수 있다.


따라서 UIDocumentInteractionController 를 ViewController 전반적으로 사용할 때는 

@property 를 이용하여 instance 를 유지하는 것이 좋다.




2. UIActivityViewController 의 사용


아이템을 클립보드에 복사하거나 Facebook 과 같은 SNS 에 컨텐츠를 게시하거나

Email 이나 SMS 를 통해 아이템을 보내는 것과 같은 표준 서비스를 제공한다.


특정 정보를 UIActivityViewController 를 통해 공유하기 위해선 아래와 같이 사용하면된다.


사용)

NSArray *activityItems = @[ @"aa" ];

UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];

[avc setValue:title forKey:@"subject"]; //이메일 앱으로 공유 시 이메일 주소 설정 

[self presentViewController:avc animated:YES completion:nil];


iPad 에서는 ViewController 를 팝업으로 표시해야하고,

iPhone 및 iPod touch 에서는 Modal 로 표시해야한다.




3. UIDocumentInteractionController vs UIActivityViewController


두 Controller 모두 사용자가 공유하고 싶어하는 것을 공유한다는 공통점이 존재한다.

차이점은, UIDocumentInteractionController 는 파일을 처리하고

UIActivityViewController 는 앱 내의 여러 정보 (UIImage, NSString 등) 를 처리한다.





참고 링크


https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/DocumentInteraction_TopicsForIOS/Articles/RegisteringtheFileTypesYourAppSupports.html

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-101685

http://stackoverflow.com/questions/9266079/why-is-my-ios-app-not-showing-up-in-other-apps-open-in-dialog

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함