Tôi đang làm việc trên ứng dụng iOS cho phép xuất dữ liệu của mình bằng cách gửi email một tệp. Ứng dụng đăng ký loại tệp dưới dạng tệp có phần mở rộng 'sainputs' (điều này để ứng dụng cũng có thể mở tệp từ email hoặc dropbox để nhập các giá trị - điều này hoạt động tốt). Tôi đang cố gắng thêm khả năng gửi tệp cho bất kỳ ứng dụng nào khác có thể mở các loại tệp linh tinh khác. Dropbox là một ví dụ hay - nó được cho là có thể mở bất kỳ loại tệp nào.iOS: lỗi khi gửi tệp ứng dụng cụ thể tới Dropbox bằng cách sử dụng UIDocumentInteractionController
Tôi hiện đang cố gắng điều này bằng cách hiển thị UIDocumentInteractionController được khởi tạo với URL của tệp. Khi nó được hiển thị, ứng dụng Dropbox xuất hiện như một trong những lựa chọn có sẵn để mở tệp, như mong đợi.
Tuy nhiên, khi tôi bấm vào biểu tượng Dropbox, không có gì xảy ra và trong giao diện điều khiển tôi thấy văn bản sau đây:
LaunchServices: Invalid LSOpenOperation request - No applications found to open document
Trong file plist của ứng dụng đó đăng ký một loại tài liệu có UTI com.mycompany.myapp. sainputs, và nó đăng ký một loại UTI đã xuất có mã định danh com.mycompany.myapp.sainputs, với phần mở rộng tên tệp công khai 'sainputs' và MIME-type myapp/input.
Sau đây là các trích đoạn có liên quan từ các tập tin plist:
<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>
tôi đã cố gắng thay đổi MIME-type để 'application/octet-stream' trong file plist. Nó không tạo ra sự khác biệt.
Mọi lời khuyên/ý tưởng sẽ được đánh giá cao.
Cung cấp giá trị cho khóa 'UTTypeConformsTo'. Có lẽ 'public.data' sẽ hoạt động. – rmaddy
Cảm ơn bạn rmaddy! Điều đó đã làm các trick! Vui lòng đăng câu trả lời này làm câu trả lời, vì vậy tôi có thể đánh dấu câu trả lời đó là câu trả lời chính xác. – bgh