ver transferir restringidas pasar las estan descargar dentro compras archivos apple app ios cocoa-touch

ios - transferir - ¿Cómo asocio tipos de archivos con una aplicación de iPhone?



transferir archivos de pc a iphone (3)

ADVERTENCIA GRANDE: asegúrate de que un ciento por ciento de tu extensión no esté vinculada a algún tipo de mimo.

Básicamente, usamos la extensión ''.icz'' para nuestros archivos personalizados, y Safari nunca te dejaría abrirlos diciendo que "Safari no puede abrir este archivo". no importa lo que hicimos o probamos con las cosas de UT arriba.

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 coloque un descanso después de esa línea y vea qué UTI y ur son (en nuestro caso, fue 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. Genial. Pero en mi caso, YA HA INTENTADO PONER el texto / calendario en los tipos mime de mi aplicación, y aún no funciona. En cambio, cuando trato de obtener la UTI y la url del paquete para el tipo de texto / calendario,

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 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 puedo.

Básicamente, si Apple piensa que en algún punto quieren manejar algún tipo de archivo (que podría crearse 10 años después de que su aplicación esté activa, tenga en cuenta que tendrá que cambiar la extensión, ya que simplemente no le permitirán manejar) el tipo de archivo.

Sobre el tema de asociar su aplicación de iPhone con tipos de archivos.

En this pregunta informativa, aprendí que las aplicaciones podrían asociarse con protocolos de URL personalizados.

Eso fue hace casi un año y, desde entonces, Apple presentó ''Document Support'', que va un paso más allá y permite que las aplicaciones se asocien con los tipos de archivos. En la documentation habla mucho sobre cómo configurar su aplicación para iniciar otras aplicaciones apropiadas cuando encuentra un tipo de archivo desconocido. Esto significa que la asociación no funciona de manera inmediata para ninguna aplicación, como lo hizo el protocolo de registro de URL.

Esto me lleva a la pregunta: ¿las aplicaciones del sistema como Safari o Mail implementaron este sistema para elegir las aplicaciones asociadas, o no harán nada, como antes?


Además de la excelente respuesta de Brad, descubrí que (al menos en iOS 4.2.1) al abrir archivos personalizados desde la aplicación Mail, su aplicación no se activa ni se notifica si el archivo adjunto se abrió antes. Aparece la ventana emergente "Abrir con ...", pero no hace nada.

Esto parece solucionarse (re) moviendo el archivo desde el directorio de la Bandeja de entrada. Un enfoque seguro parece ser tanto (re) mover el archivo a medida que se abre (en -(BOOL)application:openURL:sourceApplication:annotation: como también a través del directorio Documents / Inbox, eliminando todos los elementos, por ejemplo, en applicationDidBecomeActive: El último catch-all puede ser necesario para que la aplicación vuelva a estar limpia, en caso de que una importación anterior cause un bloqueo o se interrumpa.


El manejo de tipos de archivos es nuevo con iPhone OS 3.2 y es diferente de los esquemas de URL personalizados ya existentes. Puede registrar su aplicación para manejar tipos de documentos particulares, y cualquier aplicación que use un controlador de documentos puede transferir el procesamiento de estos documentos a su propia aplicación.

Por ejemplo, mi aplicación Molecules (para las que está disponible el código fuente) maneja los tipos de archivos .pdb y .pdb.gz, si se reciben por correo electrónico o en otra aplicación compatible.

Para registrar la asistencia, deberá tener algo como lo siguiente en su lista de información:

<key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeIconFiles</key> <array> <string>Document-molecules-320.png</string> <string>Document-molecules-64.png</string> </array> <key>CFBundleTypeName</key> <string>Molecules Structure File</string> <key>CFBundleTypeRole</key> <string>Viewer</string> <key>LSHandlerRank</key> <string>Owner</string> <key>LSItemContentTypes</key> <array> <string>com.sunsetlakesoftware.molecules.pdb</string> <string>org.gnu.gnu-zip-archive</string> </array> </dict> </array>

Se proporcionan dos imágenes que se utilizarán como iconos para los tipos admitidos en Mail y otras aplicaciones capaces de mostrar documentos. La clave LSItemContentTypes permite proporcionar una serie de Identificadores de Tipo Uniforme (UTI) que su aplicación puede abrir. Para obtener una lista de UTI definidas por el sistema, consulte la Referencia de identificadores de tipo uniforme de Apple. Incluso se pueden encontrar más detalles sobre las UTI en la descripción general de los identificadores de tipo uniforme de Apple. Esas guías se encuentran en el centro de desarrolladores de Mac, porque esta capacidad se ha trasladado desde Mac.

Una de las UTI utilizadas en el ejemplo anterior fue definida por el sistema, pero la otra fue una UTI específica de la aplicación. La IU específica de la aplicación deberá exportarse para que otras aplicaciones en el sistema puedan conocerla. Para hacer esto, debe agregar una sección a su lista de información como la siguiente:

<key>UTExportedTypeDeclarations</key> <array> <dict> <key>UTTypeConformsTo</key> <array> <string>public.plain-text</string> <string>public.text</string> </array> <key>UTTypeDescription</key> <string>Molecules Structure File</string> <key>UTTypeIdentifier</key> <string>com.sunsetlakesoftware.molecules.pdb</string> <key>UTTypeTagSpecification</key> <dict> <key>public.filename-extension</key> <string>pdb</string> <key>public.mime-type</key> <string>chemical/x-pdb</string> </dict> </dict> </array>

Este ejemplo particular exporta la UTI com.sunsetlakesoftware.molecules.pdb con la extensión de archivo .pdb, correspondiente al tipo chemical/x-pdb MIME chemical/x-pdb .

Con esto en su lugar, su aplicación podrá manejar documentos adjuntos a correos electrónicos o de otras aplicaciones en el sistema. En Mail, puede tocar y mantener para abrir una lista de aplicaciones que pueden abrir un archivo adjunto en particular.

Cuando se abra el archivo adjunto, se iniciará su aplicación y deberá manejar el procesamiento de este archivo en su -application:didFinishLaunchingWithOptions: método de delegado de la aplicación. Parece que los archivos cargados de esta manera desde el Correo se copian en el directorio de Documentos de su aplicación en un subdirectorio correspondiente al buzón de correo electrónico que recibió. Puede obtener la URL de este archivo dentro del método de delegado de la aplicación usando un código como el siguiente:

NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];

Tenga en cuenta que este es el mismo enfoque que usamos para manejar esquemas de URL personalizados. Puede separar las URL de los archivos de otros utilizando un código como el siguiente:

if ([url isFileURL]) { // Handle file being passed in } else { // Handle custom URL scheme }