БОЛЬШОЕ ПРЕДУПРЕЖДЕНИЕ: убедитесь, что на ОДНОМ ПРОЦЕНТЕ ваше расширение не привязано к какому-либо типу MIME.
Мы использовали расширение '.icz' для наших пользовательских файлов, в основном, когда-либо, и Safari простоникогда не позволю вам открыть их, говоря: «Safari не может открыть этот файл».независимо от того, что мы делали или пробовали с UT выше.
В конце концов я понял, что есть некоторые функции UT * C, которые вы можете использовать для изучения различных вещей, и хотя .icz дает правильный ответ (наше приложение):
В приложении загрузилась сверху, просто сделайте это ...
NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
(CFStringRef)@"icz",
NULL);
CFURLRef ur =UTTypeCopyDeclaringBundleURL(UTI);
и поставьте разрыв после этой строки и посмотрите, что такое UTI и ur - в нашем случае это былонаш идентификатор, как мы хотели), а URL-адрес пакета (ur) указывал на папку нашего приложения.
Но MIME-тип, который Dropbox возвращает нам для нашей ссылки, которую вы можете проверить, выполнив, например,
$ curl -D headers THEURLGOESHERE > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27393 100 27393 0 0 24983 0 0:00:01 0:00:01 --:--:-- 28926
$ cat headers
HTTP/1.1 200 OK
accept-ranges: bytes
cache-control: max-age=0
content-disposition: attachment; filename="123.icz"
Content-Type: text/calendar
Date: Fri, 24 May 2013 17:41:28 GMT
etag: 872926d
pragma: public
Server: nginx
x-dropbox-request-id: 13bd327248d90fde
X-RequestId: bf9adc56934eff0bfb68a01d526eba1f
x-server-response-time: 379
Content-Length: 27393
Connection: keep-alive
Content-Type - это то, что мы хотим.Dropbox утверждает, что это текстовая / календарная запись.Отлично.Но в моем случае я уже пробовал помещать текст / календарь в типы mime моего приложения, и он все еще не работает.Вместо этого, когда я пытаюсь получить UTI и URL-адрес пакета для mimetype текста / календаря,
NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType,
(CFStringRef)@"text/calendar",
NULL);
CFURLRef ur =UTTypeCopyDeclaringBundleURL(UTI);
я вижу "com.apple.ical.ics" как UTI и "... / MobileCoreTypes.bundle / "в качестве URL пакета.Не наше приложение, а Apple.Поэтому я пытаюсь поместить com.apple.ical.ics в LSItemContentTypes вместе с моим собственным, и в UTConformsTo при экспорте, но не могу.
Таким образом, если Apple считает, что в какой-то момент они хотят обработать некоторую форму типа файла (которая может быть создана через 10 лет после того, как ваше приложение работает, учтите), вам придется изменить расширение, потому что они 'Я просто не позволю вам обработать тип файла.