2013-01-23 1 views
6

파일을 전자 메일로 보내어 데이터를 내보낼 수있는 iOS 응용 프로그램에서 작업하고 있습니다. 앱은 파일 유형을 'sainputs'확장자를 가진 파일로 등록합니다 (앱이 값을 가져 오기 위해 이메일 또는 보관 용 계정의 파일을 열 수도 있습니다. 제대로 작동합니다). 다른 종류의 파일을 열 수있는 다른 응용 프로그램에 파일을 보낼 가능성을 추가하려고합니다. Dropbox는 좋은 예입니다. 모든 유형의 파일을 열 수 있어야합니다.iOS : UIDocumentInteractionController를 사용하여 Dropbox에 응용 프로그램 특정 파일을 보낼 때 오류가 발생했습니다.

현재이 파일의 URL로 초기화 된 UIDocumentInteractionController를 표시하여이를 시도하고 있습니다. 그것이 표시되면 Dropbox 응용 프로그램은 예상대로 파일을 여는 데 사용할 수있는 선택 사항 중 하나로 나타납니다. 나는 드롭 박스 아이콘을 누르면

그러나, 아무 일도 발생하지 않습니다 콘솔에서 나는 다음과 같은 텍스트 참조 :

LaunchServices: Invalid LSOpenOperation request - No applications found to open document 

응용 프로그램의 PLIST 파일에서이 요로 감염의 com.mycompany.myapp을 갖는 문서 유형을 등록합니다. sainputs이며, 공용 파일 이름 확장명 'sainputs'및 MIME 유형 myapp/inputs을 사용하여 식별자 com.mycompany.myapp.sainputs를 갖는 내 보낸 형식 UTI를 등록합니다. 여기

는 PLIST 파일에서 관련 발췌 :

나는 PLIST 파일에서 '응용 프로그램/octet-stream을'의 MIME 타입을 변경하려고
<key>CFBundleDocumentTypes</key> 
    <array> 
     <dict> 
      <key>CFBundleTypeName</key> 
      <string>My App's File Type</string> 
      <key>LSHandlerRank</key> 
      <string>Owner</string> 
      <key>LSItemContentTypes</key> 
      <array> 
       <string>com.mycompany.myapp.sainputs</string> 
      </array> 
     </dict> 
     <array> 
. 
. 
. 
<key>UTExportedTypeDeclarations</key> 
    <array> 
     <dict> 
      <key>UTTypeConformsTo</key> 
      <array/> 
      <key>UTTypeDescription</key> 
      <string>My App's File Type</string> 
      <key>UTTypeIdentifier</key> 
      <string>com.mycompany.myapp.sainputs</string> 
      <key>UTTypeTagSpecification</key> 
      <dict> 
       <key>public.filename-extension</key> 
       <string>sainputs</string> 
       <key>public.mime-type</key> 
       <string>steuerapp/inputs</string> 
      </dict> 
     </dict> 
     <array> 

. 그것은 차이를 만들지 않았다.

어떤 조언이나 아이디어라도 높이 평가 될 것입니다.

+2

'UTTypeConformsTo' 키에 값을 입력하십시오. 아마도'public.data'가 작동 할 것입니다. – rmaddy

+0

감사합니다 rmaddy! 그 트릭을 했어! 이것을 답으로 게시하여 정답으로 표시 할 수 있습니다. – bgh

답변

5

@maddy가 제안하고 @bgh가 확인 했으므로이 문제가 해결되었습니다. 방금 같은 문제가 발생했습니다.

사용자 지정 유니버설 유형을 정의하는 것 외에도이 유형이보다 일반적인 유형의 '하위 유형'임을 암시 할 수 있습니다. 예 : 명시 적으로 키 UTTypeConformsTo의 UTI 'public.data'을 지정하여 다음과 같이

UIDocumentInteractionController *documentController = ...; 
documentController.UTI = @"com.mycompany.myapp.sainputs"; 

Apples documentation about this can be found here.

0

:

<dict> 
    <key>UTTypeConformsTo</key> 
     <array> 
     <string>public.data</string> 
     </array> 
    <key>UTTypeDescription</key> 
     <string>My App's File Type</string> 
    <key>UTTypeIdentifier</key> 
     <string>com.mycompany.myapp.sainputs</string> 
    <key>UTTypeTagSpecification</key> 
     <dict> 
     <key>public.filename-extension</key> 
      <string>sainputs</string> 
     <key>public.mime-type</key> 
      <string>steuerapp/inputs</string> 
     </dict> 
</dict> 

그런 다음 UIDocumentInteractionController의 인수로 사용자 정의 요로를 지정할 수 있습니다 이 문제가 다른 사람에게 발생하는 경우 :

devi에 다른 앱이 있기 때문에 Klaas가 답을 낼 수 없습니다. ce (잘못된 버전으로 동일한 UTI를 선언하는 "밝은"버전). 형식을 선언하는 모든 응용 프로그램에서 작동하려면 먼저 "public.data"를 추가해야합니다.

그냥 난 다음 다른 하나를 추가하고 모든 여전히 작동하는지, 설치된 하나의 응용 프로그램과 함께 디버깅을 추천 할 것입니다 있는지 확인합니다.