파일 유형 처리는 iPhone OS 3.2의 새로운 기능이며 기존의 사용자 정의 URL 체계와 다릅니다. 특정 문서 유형을 처리하기 위해 응용 프로그램을 등록 할 수 있으며, 문서 제어기를 사용하는 모든 응용 프로그램은 이러한 문서 처리를 사용자 고유의 응용 프로그램으로 전달할 수 있습니다.
예를 들어, 내 응용 프로그램 Molecules (소스 코드를 사용할 수있는)는 전자 메일이나 다른 지원되는 응용 프로그램을 통해 수신 된 경우 .pdb 및 .pdb.gz 파일 형식을 처리합니다.
지원을 등록하려면 Info.plist에 다음과 같은 것이 있어야합니다.
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string>Document-molecules-320.png</string>
<string>Document-molecules-64.png</string>
</array>
<key>CFBundleTypeName</key>
<string>Molecules Structure File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.sunsetlakesoftware.molecules.pdb</string>
<string>org.gnu.gnu-zip-archive</string>
</array>
</dict>
</array>
Mail 및 문서를 표시 할 수있는 기타 응용 프로그램에서 지원되는 유형의 아이콘으로 사용될 두 개의 이미지가 제공됩니다. 이 LSItemContentTypes
키를 사용하면 응용 프로그램에서 열 수있는 UTI (Uniform Type Identifier) 배열을 제공 할 수 있습니다. 시스템 정의 UTI 목록은 Apple의 Uniform Type Identifiers Reference를 참조하십시오 . UTI에 대한 자세한 내용은 Apple의 Uniform Type Identifiers Overview를 참조하십시오 . 이 기능은 Mac에서 이식 되었기 때문에이 안내서는 Mac 개발자 센터에 있습니다.
위 예제에서 사용 된 UTI 중 하나는 시스템 정의이지만 다른 하나는 응용 프로그램 별 UTI입니다. 시스템의 다른 응용 프로그램이이를 인식 할 수 있도록 응용 프로그램 별 UTI를 내 보내야합니다. 이렇게하려면 Info.plist에 다음과 같은 섹션을 추가하십시오.
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.plain-text</string>
<string>public.text</string>
</array>
<key>UTTypeDescription</key>
<string>Molecules Structure File</string>
<key>UTTypeIdentifier</key>
<string>com.sunsetlakesoftware.molecules.pdb</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>pdb</string>
<key>public.mime-type</key>
<string>chemical/x-pdb</string>
</dict>
</dict>
</array>
이 특정 예 com.sunsetlakesoftware.molecules.pdb
는 MIME 유형에 해당하는 .pdb 파일 확장자로 UTI 를 내 보냅니다 chemical/x-pdb
.
이를 통해 응용 프로그램은 전자 메일 또는 시스템의 다른 응용 프로그램에 첨부 된 문서를 처리 할 수 있습니다. Mail에서 길게 누르면 특정 첨부 파일을 열 수있는 응용 프로그램 목록이 나타납니다.
첨부 파일이 열리면 응용 프로그램이 시작되고 -application:didFinishLaunchingWithOptions:
응용 프로그램 대리자 메서드 에서이 파일의 처리를 처리해야합니다 . Mail에서 이러한 방식으로로드 된 파일은 도착한 이메일 상자에 해당하는 서브 디렉토리 아래에있는 애플리케이션의 문서 디렉토리로 복사 된 것으로 보입니다. 다음과 같은 코드를 사용하여 애플리케이션 위임 메소드 내에서이 파일의 URL을 얻을 수 있습니다.
NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
이는 맞춤 URL 체계를 처리 할 때 사용한 것과 동일한 방식입니다. 다음과 같은 코드를 사용하여 파일 URL을 다른 URL과 분리 할 수 있습니다.
if ([url isFileURL])
{
// Handle file being passed in
}
else
{
// Handle custom URL scheme
}
-application:didFinishLaunchingWithOptions:
이 파일을 처리하기 위해 열 때 앱이 백그라운드로되지 않은 경우 응용 프로그램 위임 만이라고합니다.