GROSSE WARNUNG: Stellen Sie EINHUNDERT PROZENT sicher, dass Ihre Erweiterung nicht bereits an einen MIME-Typ gebunden ist.
Wir haben die Erweiterung '.icz' für unsere benutzerdefinierten Dateien im Grunde genommen immer verwendet, und Safari lässt Sie sie niemals öffnen, wenn Sie sagen: "Safari kann diese Datei nicht öffnen." egal was wir mit dem obigen UT-Zeug gemacht oder versucht haben.
Irgendwann wurde mir klar, dass es einige UT * C-Funktionen gibt, mit denen Sie verschiedene Dinge erkunden können, und während .icz die richtige Antwort gibt (unsere App):
In der App wurde oben geladen, mach das einfach ...
NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
(CFStringRef)@"icz",
NULL);
CFURLRef ur =UTTypeCopyDeclaringBundleURL(UTI);
und setzen Sie nach dieser Zeile eine Pause und sehen Sie, was UTI und ur sind - in unserem Fall war es unsere Kennung, wie wir wollten), und die Bundle-URL (ur) zeigte auf den Ordner unserer App.
Aber der MIME-Typ, den Dropbox uns für unseren Link zurückgibt, den Sie überprüfen können, indem Sie z
$ 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
Der Inhaltstyp ist das, was wir wollen. Dropbox behauptet, dies sei ein Text- / Kalendereintrag. Großartig. Aber in meinem Fall habe ich BEREITS VERSUCHT, Text / Kalender in die MIME-Typen meiner App einzufügen, und es funktioniert immer noch nicht. Wenn ich stattdessen versuche, die UTI zu erhalten und die URL für den Text- / Kalender-Mimetyp zu bündeln,
NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType,
(CFStringRef)@"text/calendar",
NULL);
CFURLRef ur =UTTypeCopyDeclaringBundleURL(UTI);
Ich sehe "com.apple.ical.ics" als UTI und "... / MobileCoreTypes.bundle /" als Bundle-URL. Nicht unsere App, sondern Apple. Also versuche ich, com.apple.ical.ics neben meinen eigenen in die LSItemContentTypes und im Export in UTConformsTo einzufügen, aber es geht nicht.
Wenn Apple glaubt, irgendwann einen Dateityp verarbeiten zu wollen (der 10 Jahre nach dem Start Ihrer App erstellt werden könnte, wohlgemerkt), müssen Sie die Erweiterung ändern, da Sie einfach nicht damit umgehen können der Dateityp.
-application:didFinishLaunchingWithOptions:
der Delegat in der App nur aufgerufen wird, wenn Ihre App beim Öffnen zur Verarbeitung einer Datei nicht im Hintergrund war.