티스토리 뷰
[iOS] UIDocumentInteractionController, UIActivityViewController 의 사용
beankhan 2016. 11. 15. 16:101. 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
'iOS 개발 > iOS' 카테고리의 다른 글
[iOS] CoreData 의 기본적인 개념, 사용시점, 작동 방식 (2) | 2016.11.21 |
---|---|
UIView 의 frame, bound 및 Point Contain, Point Convert (0) | 2016.11.16 |
[MAC] SourceTree 에서 remote Commit ment 가 안보일 때 (1) | 2016.11.14 |
[iOS10] TodayExtension(Widget) 와 Height 및 유동글자에 따른 Height (0) | 2016.10.05 |
[iOS10] CallKit (Call Blocking & Identification) 의 문제점들 및 해결 방법 (0) | 2016.09.20 |
- Total
- Today
- Yesterday
- NSManagedObjectContext
- Block
- Swift
- docker
- ios
- applicationWillResignActive
- 읽기 좋은 코드가 좋은 코드다
- CGImage
- string
- CIImage
- RunLoop
- delegate
- dictionary
- NSManagedObject
- thread
- NSManagedObjectModel
- Swift 3.0
- 꺼내먹어요
- Swift 3
- AWS
- EffectiveObjectiveC
- set
- UIView
- optional
- coredata
- Arc
- Swfit
- HTTP
- workerThread
- Swift3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |