ADVERTENCIA GRANDE: Asegúrese de CIENTO POR CIENTO que su extensión no esté vinculada a algún tipo de mimo.
Usamos la extensión '.icz' para nuestros archivos personalizados, básicamente, para siempre, y Safari nunca te dejaba abrirlos diciendo "Safari no puede abrir este archivo". no importa lo que hicimos o probamos con las cosas de UT anteriores.
Finalmente, me di cuenta de que hay algunas funciones UT * C que puedes usar para explorar varias cosas, y mientras .icz da la respuesta correcta (nuestra aplicación):
En la aplicación se cargó en la parte superior, solo haz esto ...
NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
(CFStringRef)@"icz",
NULL);
CFURLRef ur =UTTypeCopyDeclaringBundleURL(UTI);
y poner un salto después de esa línea y ver qué son UTI y ur - en nuestro caso, era nuestro identificador como queríamos, y la url del paquete (ur) apuntaba a la carpeta de nuestra aplicación.
Pero el tipo MIME que Dropbox nos devuelve para nuestro enlace, que puede verificar haciendo, por ejemplo,
$ 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
El tipo de contenido es lo que queremos. Dropbox afirma que esta es una entrada de texto / calendario. Excelente. Pero en mi caso, YA Traté de poner texto / calendario en los tipos mime de mi aplicación, y todavía no funciona. En cambio, cuando trato de obtener la UTI y la URL del paquete para el texto / calendario mimetype,
NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType,
(CFStringRef)@"text/calendar",
NULL);
CFURLRef ur =UTTypeCopyDeclaringBundleURL(UTI);
Veo "com.apple.ical.ics" como la UTI y "... / MobileCoreTypes.bundle /" como la URL del paquete. No es nuestra aplicación, sino Apple. Así que trato de poner com.apple.ical.ics en LSItemContentTypes junto con el mío, y en UTConformsTo en la exportación, pero no voy.
Básicamente, si Apple cree que en algún momento quiere manejar algún tipo de tipo de archivo (eso podría crearse 10 años después de que su aplicación esté activa, tenga en cuenta), tendrá que cambiar la extensión porque simplemente no le permitirán manejar El tipo de archivo.
-application:didFinishLaunchingWithOptions:en la aplicación, solo se llama al delegado si su aplicación no está en segundo plano cuando se abre para manejar un archivo.