2012-05-07 24 views
19

Tôi gặp sự cố khi mở tệp GPX trong ứng dụng iOS của mình. Tôi đã đăng ký phần mở rộng và một số tập tin mở một cách chính xác, đó là khi tôi gõ vào một liên kết đến tập tin GPX trong Safari, nó cho thấy một dấu nhắc hỏi tôi ứng dụng nào tôi muốn sử dụng để mở tập tin. Sau đó, tôi chọn ứng dụng của tôi và tệp được xử lý như mong đợi. Với một số trang web trong Safari và với tất cả các tệp từ tệp đính kèm email, lời nhắc và lựa chọn ứng dụng không được hiển thị và trình duyệt/ứng dụng email hiển thị nội dung của tệp dưới dạng văn bản.Đăng ký tệp GPX (hoặc XML) để mở trong ứng dụng iOS

Tôi nghi ngờ đây là vấn đề với cài đặt info.plist hoặc có thể với ứng dụng Safari và email. Nếu bạn mở tệp XML hoặc GPX trong ứng dụng iOS của mình một cách chính xác, bạn có đăng các cài đặt CFBundleDocumentTypes và UTExportedTypeDeclarations của mình từ info.plist không?

Mọi ý tưởng đều được chào đón. Đây là phần thích hợp từ info.plist của tôi. Tôi đã cố thêm và xóa một số thẻ tùy chọn, đây là thẻ mới nhất, nhưng không hoàn chỉnh nhất.

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeIconFiles</key> 
     <array> 
      <string>Icon.png</string> 
      <string>[email protected]</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>GPS eXchange Format</string> 
     <key>CFBundleTypeRole</key> 
     <string>Viewer</string> 
     <key>LSHandlerRank</key> 
     <string>Owner</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>org.elsners.Indicium.gpx</string> 
     </array> 
    </dict> 
</array> 
<key>UTExportedTypeDeclarations</key> 
<array> 
    <dict> 
     <key>UTTypeConformsTo</key> 
     <array> 
      <string>public.xml</string> 
     </array> 
     <key>UTTypeDescription</key> 
     <string>GPS eXchange Format</string> 
     <key>UTTypeIdentifier</key> 
     <string>org.elsners.Indicium.gpx</string> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
      <key>public.filename-extension</key> 
      <array> 
       <string>GPX</string> 
       <string>gpx</string> 
      </array> 
     </dict> 
    </dict> 
</array> 
+0

Mirek, bạn đã từng giải quyết vấn đề này chưa? Tâm trí đăng một giải pháp cho những người vẫn đang tìm kiếm? – mstenroos

+0

Không, tôi không tìm được giải pháp, xin lỗi. Với tệp đính kèm email, nó hiển thị biểu tượng chính xác, nhưng khi tôi nhấn vào nó, nó sẽ mở ra dưới dạng tệp văn bản. – MirekE

+0

Lớp Stanford mới nhất nếu chính xác về chủ đề này! Họ có thể đã gửi mã mẫu – Yariv

Trả lời

0

Hãy thử mã này ...

(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 

    if (url != nil && [url isFileURL]) { 

     // xdxf file type handling 

     if ([[url pathExtension] isEqualToString:@"xdxf"]) { 

      NSLog(@"URL:%@", [url absoluteString]); 

     } 

    } 

    return YES; 
} 
+0

HI Jaffer, cảm ơn nhận xét của bạn. Tôi có mã tương tự trong ứng dụng của mình. Mẫu mã bạn cung cấp sẽ xử lý tệp, nhưng vấn đề ban đầu là ứng dụng không được khởi chạy khi người dùng kích hoạt tệp GPX trong một ứng dụng khác. – MirekE

1

Khi làm việc với nội dung HTTP (đó là trường hợp của Safari và ứng dụng Mail), bạn phải quên để xử lý kiểu nội dung của nó. Các Uniform Type Identifier (UTI) cho loại nội dung xử lý là public.mime-type và giả sử rằng các tiêu đề kiểu nội dung của một phản ứng máy chủ được thiết lập để application/GPX, vì vậy trong bạn plist bạn phải thêm vào UTTypeTagSpecification phần:

<dict> 
    <key>public.filename-extension</key> 
    <array> 
    <string>GPX</string> 
    <string>gpx</string> 
    </array> 
    <key>public.mime-type</key> 
    <string>application/gpx</string> 
</dict> 

Note: tôi đã nhìn thấy application/GPXapplication/GPX + xml as type nội dung cho dữ liệu GPX quanh web và tôi không biết nếu có một loại mime tiêu chuẩn do đó, nó tốt hơn để sử dụng cả hai .

0

Tôi nghĩ rằng phần sau đây phải được loại bỏ:

<key>UTTypeConformsTo</key> 
<array> 
    <string>public.xml</string> 
</array> 

Tôi tái tạo vấn đề với nó, và cố định bằng cách loại bỏ.

Dường như ứng dụng thư cho rằng ứng dụng thư có thể xử lý các loại tuân thủ XML tốt hơn các ứng dụng khác và xử lý chặn.

Tôi cũng khuyên bạn nên bao gồm các thay đổi từ answer posted by Wallace Campos.

Các vấn đề liên quan