앱이 지원하는 UTI를 아는 파일을 다른 앱에 보내려면 어떻게해야합니까? 파일에 파일 확장자가 없지만 파일의 UTI를 알 수 있습니다. UIDocumentInteractionController, 파일 확장자 없음 UTI
나는 다음과 같은 시도 : 나는 그것을 선택하면, 그러나,// target is a NSURL with the location of the extension less file on the system
// knownUTI is a NSString containing the UTI of the file
UIDocumentInteractionController* dic = [UIDocumentInteractionController interactionControllerWithURL:target];
[dic retain];
dic.delegate = self;
dic.UTI = knownUTI;
[dic presentOpenInMenuFromRect:CGRectZero inView:superController.view animated:YES]
그것은 지원되는 앱을 보여주고,이 앱을 전환하지 않습니다. 대리인은
- (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application
하지만
- (void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application
가 호출되지 않습니다를 호출하고 응용 프로그램은 결코 전환되지 않습니다.
대상은 응용 프로그램은 다음의 UTI 수출이로
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>Migration DocType</string>
<key>CFBundleTypeRol</key>
<string>Shell</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.mycomp.customstring</string>
</array>
</dict>
</array>
...
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>My custom UTI</string>
<key>UTTypeIdentifier</key>
<string>com.mycomp.customstring</string>
</dict>
</array>
작동하지 않았다, 나는 또한 사용자 지정 확장을 추가했습니다. 그래도이 방법으로는 작동하지 않습니다. 사용자 지정 확장명을 파일에 추가 할 때 DocumentInteractionController
에 넘겨주고 작동합니다. 그러나 응용 프로그램 목록에는 UTI 유형 I에 관계없이 동일한 파일 확장명을 지원하는 다른 모든 응용 프로그램이 표시됩니다.
com.mycomp.a
에 UTI를 설정
App1 with UTI1: com.mycomp.a with extension .abc
App2 with UTI2: com.mycomp.b with extension .abc
그것은 또한 파일을 처리 할 수있는 가능한 응용 프로그램으로 앱 2를 표시합니다 :
내가 2 개 개의 다른 애플리케이션에서이 개 요로 감염을 선언 말 . 나는 다음과 같은 방식으로 확장명을 가진 UTI를 정의 :<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>My UTI Type</string>
<key>UTTypeIdentifier</key>
<string>com.mycomp.a</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>abc</string>
<key>public.mime-type</key>
<string>application/abc</string>
</dict>
</dict>
</array>
나는 당신의 도움을 주셔서 감사합니다 정말 것이다, 내가 가지 붙어있어. 그럼 다시 질문입니다. 확장자가 없거나 DocumentInteractionController에서 응용 프로그램을 선택으로 표시하지 않으려는 다른 파일과 동일한 확장자를 가진 알려진 UTI가있는 응용 프로그램으로 파일을 보내려면 어떻게해야합니까?
감사합니다.
더 간단한 해결책을 찾았습니다. 'willBeginSendingToApplication :'의 코드는 open in 메뉴가 성공적으로 호출 된 후에 이미 실행될 수 있습니다. 이렇게하면 메소드를 뒤 흔드는 일이 없어집니다! – Jan
코드를 제공해주십시오. 이름 속성 설정을 시도했지만 타사 앱에 반영되지 않았습니다. – slott
예, * 실제 * 솔루션의 자세한 작성이 가장 도움이 될 것입니다. – buildsucceeded