UIDocumentInteractionController no abre la aplicación (didEndSendingToApplication: nunca llamada)

Tengo una instancia de UIDocumentInteractionController (que tiene una fuerte reference en mi class, soy consciente de los problemas de memory al respecto) y quiero enviar un file de foto a Instagram.

igo el file usando la extensión ig (también probé igo ) y estoy presentando el controller. Instagram se muestra en la list. Toco Instagram, y no pasa nada.

 NSURL *imageFile = [NSURL fileURLWithPath:path]; interactionController = [UIDocumentInteractionController interactionControllerWithURL:imageFile]; interactionController.UTI = @"com.instagram.photo"; interactionController.annotation = [NSDictionary dictionaryWithObject:@"my caption" forKey:@"InstagramCaption"]; interactionController.delegate = self; [interactionController presentOpenInMenuFromRect:self.view.frame inView:self.view animated:YES]; 

Para investigar más a background, he configurado mi class de llamada como un delegado e implementé la aplicación willBeginSendingToApplication: and didEndSendingToApplication: methods. Curiosamente, me di count de que willBeginSendingToApplication: se llama, pero didEndSendingToApplication: no. He intentado cambiar mis extensiones de file, cambiando UTI a com.instagram.exclusivegram , comprobando si la URL del file es correcta, etc. pero ninguna de ellas parece funcionar. Ningún error, nada en la console o nada. El controller de interacción se cierra, mi aplicación sigue funcionando como estaba funcionando antes, simplemente no pasa nada. He leído que puede haber algunos problemas en iOS 6, pero mi aplicación es una aplicación iOS 6, por lo que no puedo probarlo en iOS <6. Lo único que se acerca a mi problema que he encontrado es UIDocumentInteractionController, Sin extensión de file, pero UTI, pero se sumerge demasiado en los bits de bajo nivel, ni tengo un código que no sea ARC.

¿Cuál podría ser la causa del problema?

Solutions Collecting From Web of "UIDocumentInteractionController no abre la aplicación (didEndSendingToApplication: nunca llamada)"

Esto puede suceder si el file no existe, pero también si no ha construido correctamente la URL del file. Esto me molestó por un time.

Asegúrate de build tu URL de file de esta manera:

 NSURL *pagesURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MyGreatPDF.pdf" ofType:nil]]; 

y no así:

 NSURL *pagesURL = [NSURL fileURLWithPath:@"MyGreatPDF.pdf"]; 

Este último todavía forma una URL válida, pero obtiene un prefijo "privado", es decir, file:///private/var/mobile/Applications/00000000-0000-0000-0000-000000000000/MyGreatApp.app/MyGreatPDF.pdf lugar de file:///var/mobile/Applications/00000000-0000-0000-0000-000000000000/MyGreatApp.app/MyGreatPDF.pdf

Después de un largo time, descubrí que el file no se guardaba correctamente y no existía. iOS no arrojaba ningún tipo de error, fallaba en silencio. He corregido el código sobre la generación del file, y cuando el file estaba allí, apareció el controller. Tal vez Apple debería agregar un mecanismo de aserción / exception para manejar files no existentes en el controller de interacción de documentos.

Esto también puede deberse a la extensión del nombre del file.

Si la aplicación de destino declara que solo es compatible con la extensión png en Info.plist -> UTI de tipo exportado -> Tipos equivalentes -> public.filename-extension , y envía un file con la extensión jpg , la aplicación de destino no se abrirá como bien.