БОЛЬШОЕ ПРЕДУПРЕЖДЕНИЕ: Убедитесь, что ОДИН СТОЛЕНТНЫЙ ПРОЦЕНТ уверен, что ваш добавочный номер еще не привязан к какому-либо типу пантомимы.
В основном, мы использовали расширение «.icz» для наших пользовательских файлов, и Safari просто никогда не позволил бы вам открыть их, говоря: «Safari не может открыть этот файл». независимо от того, что мы сделали или попробовали с UT выше.
В конце концов я понял, что есть некоторые функции UT * C, которые вы можете использовать для изучения различных вещей, и в то время как .icz дает правильный ответ (наше приложение):
В приложении загрузился сверху, просто сделайте это ...
NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
(CFStringRef)@"icz",
NULL);
CFURLRef ur =UTTypeCopyDeclaringBundleURL(UTI);
и поместите break после этой строки и посмотрите, что такое 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 утверждает, что это текстовая / календарная запись. Отлично. Но в моем случае я уже пробовал помещать текст / календарь в типы пантомимы моего приложения, и он все еще не работает. Вместо этого, когда я пытаюсь получить UTI и пакетный URL для типа mimetype text / calendar,
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 лет после того, как ваше приложение будет работать, учтите), вам придется изменить расширение, потому что они просто не позволят вам обрабатывать тип файла.
-application:didFinishLaunchingWithOptions:
в приложении делегат вызывается только в том случае, если ваше приложение не было фоновым, когда оно открыто для обработки файла.