[iOS] 앱이 지원하는 File Type 등록하고 처리하기
-
CFBundleDocumentTypes 를 Info.plist 에 포함시켜야 한다.
이 key 에 대한 값은 dictionary 의 array 형태를 갖는다.
각 dictionary 는 처리할 파일에 대한 정보를 갖는다.
한 dictionary 에 여러 개의 파일 타입을 정의할 수도 있다. ( ex) old format & new format )
-
CFBundleDocumentTypes 에 연결되는 dictionary 는 다음의 값을 가질 수 있다.
CFBundleTypeNames
CFBundleTypeIconFiles : 이미지 리소스들에 대한 file name 를 array 형태로 갖는다.
LSItemContentTypes : 파일 타입에 대한 UTI(Uniform Type Identifier) string 을 array 형태로 갖는다.
LSHandlerRank : 해당 타입에 대한 owner 인지 아니면 open 만 지원하는건지를 명시한다.
-
LSItemContenTypes 는 아래 링크에서 찾아서 적용하면 된다.
-
ex)
<dict>
<key>CFBundleTypeName</key>
<string>My File Format</string>
<key>CFBundleTypeIconFiles</key>
<array>
<string>MySmallIcon.png</string>
<string>MyLargeIcon.png</string>
</array>
<key>LSItemContentTypes</key>
<array>
<string>com.example.myformat</string>
</array>
<key>LSHandlerRank</key>
<string>Owner</string>
</dict>
-
https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/DocumentInteraction_TopicsForIOS/Articles/OpeningSupportedFileTypes.html#//apple_ref/doc/uid/TP40010412-SW1
실제 open 을 한 경우 AppDelegate 의 application:willFinishLaunchingWithOptions: 또는 application:didFinishLaunchingWithOptions: 가 불리게 되며, options 에 아래 key 값들에 값이 채워져 온다.
UIApplicationLaunchOptionsURLKey : 처리해야 할 파일의 NSURL 이 들어있다.
UIApplicationLaunchOptionsSourceApplicationKey : 앱을 연 app 의 bundle id 가 NSString 으로 들어있다.
UIApplicationLaunchOptionsAnnotationKey : file 을 열 때 관련된 property list 가 들어있다.
-
앱이 background 일 때는 didFinishLaunch 쪽이 안 불리고, 아래 callback 이 대신 불린다.
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
'프로그래밍 놀이터 > iOS' 카테고리의 다른 글
[iOS] UILocalNotification 권한 요청하는 코드 (0) | 2018.04.05 |
---|---|
[ios] AFNetworking 을 이용하여 File download start, pause, resume, stop 시키기 (0) | 2018.02.21 |
[ios] 32bit, 64bit 이야기 (0) | 2018.02.18 |
[ios] NSInteger, NSUInteger on 32bit / 64bit (0) | 2018.02.17 |
[ios] beginBackgroundTaskWithExpirationHandler: 에 대한 연구 (0) | 2018.02.16 |
댓글