Present UIActivityViewController- LaunchServices: invalidationHandler llamado

Ya he visto las preguntas relacionadas aquí y aquí , y he implementado las respuestas sugeridas en vano.

Tengo un UIBarButtonItem en una barra UITool, con connection para enviar acción a btnTBAction_touch:

En el encabezado de la class ViewController tengo:

@property (nonatomic, strong) UIActivityViewController *activityViewController; 

El método relacionado en la implementación de la class:

 - (IBAction)btnTBAction_touch:(id)sender { NSString *string = @"Some string"; NSURL *url = [[NSURL alloc] initWithString:@"http://www.google.com"]; UIImage *image = [UIImage imageNamed:@"default.png"]; self.activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[string, url, image] applicationActivities:nil]; if ([self.activityViewController respondsToSelector:@selector(popoverPresentationController)]) { UIPopoverPresentationController *presentationController = [self.activityViewController popoverPresentationController]; presentationController.sourceView = sender; } [self presentViewController:self.activityViewController animated:YES completion:nil]; } 

Mientras ejecuto el modo de debugging en un dispositivo físico cuando toco el button que llama al método anterior, obtengo lo siguiente en la console de debugging

 2014-09-19 09:43:31.635 TestApp[1878:237873] LaunchServices: invalidationHandler called 2014-09-19 09:43:31.644 TestApp[1878:237814] LaunchServices: invalidationHandler called 

Sin embargo, a diferencia de las preguntas relacionadas, mi aplicación no falla cuando esto sucede, la aplicación sigue funcionando bien y el UIActivityViewController se presenta correctamente … pero prefiero corregir el error que decir que es lo suficientemente bueno.

Además, he probado algunas permutaciones del método anterior utilizando estas líneas:

 presentationController.sourceView = self.view; presentationController.sourceRect = self.view.frame; 

Ninguno de los cuales ayudó a resolver el problema.

  • Estoy usando Xcode v6.0.1
  • El objective de deployment de mi aplicación es 7.0 solo para iPhone
  • Prueba en un iPhone 5s con iOS 8.0
  • El código está en Objective-C

Si su dispositivo de destino de destino de desarrollo es iPhone, no debería preocuparse por este post. Parece que es un error de Apple. Mirando los foros de desarrolladores: "Ese post de logging no indica ningún error de su parte".

Consulte: https://devforums.apple.com/message/1049415#1049415 (podría requerir que inicie session)

Problema similar aquí.

Estoy usando UIDocumentInteractionController, no UIActivityViewController, por lo que no hay sourceView ni sourceRect para manejar.

En el encabezado:

 UIDocumentInteractionController *docInteractionController; 

En ellos:

 self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL]; self.docInteractionController.delegate = self; self.docInteractionController.UTI = @"com.adobe.pdf"; //UIBarButtonItem *element is an element in my toolbar [self.docInteractionController presentOptionsMenuFromBarButtonItem:element animated:YES]; 

En la console veo la siguiente advertencia:

  Unknown activity items supplied: ( { "com.adobe.pdf" = <25504446 (and then what looks like the rest of the pdf I tried to open)>; }, "<UIPrintInfo: 0x17b47ca0>" ) 2014-10-14 21:11:21.661 iFly[288:29569] LaunchServices: invalidationHandler called 

Y en mi versión oficial de App Store de mi aplicación, la aplicación se bloquea. Cuando compilo y ejecuto en mi iPad solo da la advertencia.

Puedo evitar la parte "elementos de actividad desconocidos" proporcionada de la advertencia mediante el uso de presentOpenInMenuFromBarButtonItem en lugar de presentOptionsMenuFromBarButtonItem para la llamada UIDocumentInteractionController, pero todavía se produce la advertencia "LaunchServices".

iPad versión 8.0.2. Xcode versión 6.0.1, destino de deployment 6.0 (también probado con destino de deployment 8.0). Todo objective-c.

Esto es lo que funcionó para mí. Sin errores. Tuve que deshacerme de la instrucción if que se llama "isAvailableForServiceType:". ¡Espero que funcione para ti!

  SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [tweetSheet setInitialText:@"Great fun to learn iOS programming at appcoda.com!"]; [self presentViewController:tweetSheet animated:YES completion:nil]; if ([tweetSheet respondsToSelector:@selector(popoverPresentationController)]) { // iOS 8+ UIPopoverPresentationController *presentationController = [tweetSheet popoverPresentationController]; presentationController.sourceView = sender; // if button or change to self.view. }