2012-09-26 21 views
12

Estaba vagando si alguien puede ofrecer alguna información. Por mi vida, no puedo imaginar cómo enviar un UIImage con UIActivityTypeMessage, aunque algunos dicen que es posible.Componer UIActivityTypeMessage con UIImage

Los documentos dicen: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIActivity_Class/Reference/Reference.html

UIActivityTypeMessage mensajes

el objeto del contenido proporcionado a la aplicación de mensajes. Al utilizar este servicio, puede proporcionar objetos NSString y NSAttributedString como datos para los elementos de actividad. También puede especificar objetos NSURL cuyos contenidos usan el esquema sms. Disponible en iOS 6.0 y posterior. declarado en UIActivity.h.

Por lo que a mi entender, solo puedo enviar NSString/NSURL. No te veo, es posible.

estoy usando esto:

UIImage *image; // some image here. 

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[ image ] applicationActivities:nil]; 

Cualquier ayuda sería muy apreciada.

Respuesta

1

Aunque parece posible obtener la aplicación mensaje a aparecer en la hoja de acción utilizando UIActivityViewController en iOS 6, no es un secreto para conseguir que funcione - iOS7 es una historia diferente, pasando el NSURL al activo funciona fuera de la caja.

No estoy seguro de que esté obteniendo sus imágenes de ALAssetsLibrary, pero si es así, tome el ALAsset usando su NSURL en lugar de tirar del UIImage. La hoja de compartir aparece en una fracción del tiempo. Este no es exactamente el código que estoy usando, pero similar. Pero en iOS6, el controlador de vista de actividad no mostrará la aplicación de mensajes siempre que haya una imagen adjunta.

- (void) presentActivityViewController:(ALAsset*) asset { 
    // add this to your viewController class 

    NSDictionary *urls = [asset valueForProperty:ALAssetPropertyURLs]; 
    NSURL *url; 
    if ([urls count]) { 
     for (NSString *key in urls) { 
      // I'm making an assumption that the URL I want is the first URL in the dictionary 
      url = [urls objectForKey:key]; 
      break; 
     } 
    } 

    NSArray *activityItems = @[url]; 
    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
    [self presentViewController:activityController animated:YES completion:nil]; 
} 
+1

Confirmado que en iOS7, compartir en iMessage funciona con el UIActivityController estándar. Como una ventaja adicional, también puedes compartir un video a través de iMessage y AirDrop sin tener que extraerlo primero. En ambos casos, pase el NSURL del ALAsset en los items activity. –

1

Aquí se explica cómo usar UIActivityViewController universalmente, con texto y una imagen.

NSMutableArray *items = [NSMutableArray new]; 
[items addObject:@"Hello world!"]; 
[items addObject:[UIImage imageNamed:@"MyImage"]]; 
NSArray *activityItems = [NSArray arrayWithArray:items]; 
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 
    [self presentViewController:self.activityViewController animated:YES completion:nil]; 
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    UIPopoverController *aPopoverController = [[UIPopoverController alloc] initWithContentViewController:activityViewController]; 
    [aPopoverController presentPopoverFromBarButtonItem:self.actionButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
} 

// Examples: 
// iPhone: 
// http://anglerally.com/wp-content/uploads/2012/09/[email protected] 
// http://anglerally.com/wp-content/uploads/2012/09/[email protected] 
// iPad: 
// http://anglerally.com/wp-content/uploads/2012/09/[email protected] 
// http://anglerally.com/wp-content/uploads/2012/09/[email protected] 
+0

Esto es exactamente lo que estoy haciendo. Agregar una matriz al UIActivityViewController. Todo funciona bien. Puedo compartir la imagen en Mail, Twitter, Facebook, Weibo, Copiar, Imprimir, guardar en rollo de la cámara ... etc. Pero quiero compartir la imagen a través de MMS (iMessage) NO permite componer con un UIImage. SOLO cuerdas y nsurl. – corndogcomputers

+0

Ahh. Leí mal tu pregunta. ¡Lo siento! Y acabo de comprobar y tienes razón, por supuesto. Texto solo para mensaje ... extraño. –

+3

Lamentablemente, las aplicaciones que envían imágenes con la vista de mensajes (incluso con UIActivityViewController) son imposibles. Mi solución para esto es copiar la imagen a la mesa de trabajo, indicar al usuario que pegue la imagen en su mensaje y luego iniciar la aplicación de mensajes de iOS usando UIApplication ... – jjxtra