2012-09-26 5 views
12

Était errant si quelqu'un peut offrir un aperçu. Pour la vie de moi, je ne peux pas comprendre comment envoyer un UIImage avec UIActivityTypeMessage, bien que certains disent que c'est possible.Composer UIActivityTypeMessage avec UIImage

Les docs disent: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIActivity_Class/Reference/Reference.html

UIActivityTypeMessage

Les messages d'objet le contenu fourni à l'application Messages. Lorsque vous utilisez ce service, vous pouvez fournir des objets NSString et NSAttributedString en tant que données pour les éléments d'activité. Vous pouvez également spécifier des objets NSURL dont le contenu utilise le schéma sms. Disponible dans iOS 6.0 et versions ultérieures. Déclaré dans UIActivity.h. Donc, à ma connaissance, je ne peux envoyer que NSString/NSURL. Je ne te vois pas c'est possible.

J'utilise ceci:

UIImage *image; // some image here. 

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

Toute aide serait très apprécié.

Répondre

1

Bien qu'il semble possible d'obtenir l'application de message à apparaître dans la feuille de partage à l'aide UIActivityViewController dans iOS6, il y a un secret pour le faire fonctionner - iOS 7 est une autre histoire, en passant le NSURL à l'actif fonctionne hors de la boîte.

Vous n'êtes pas sûr de recevoir vos images de la bibliothèque ALAssets, mais si c'est le cas, prenez l'ALAsset à l'aide de son NSURL plutôt que d'extraire le fichier UIImage. La feuille de calcul apparaît dans une fraction du temps. Ce n'est pas exactement le code que j'utilise, mais similaire. Mais sur iOS6, le contrôleur de vue d'activité n'affiche pas l'application de messages tant qu'une image est attachée.

- (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

Confirmé que dans iOS7, le partage vers iMessage fonctionne avec le contrôleur UIActivityController standard. En prime, vous pouvez également partager une vidéo via iMessage et AirDrop sans devoir d'abord l'extraire vous-même. Dans les deux cas, passez le NSURL de l'ALAsset dans les activityItems. –

1

Voici comment utiliser universellement UIActivityViewController, avec du texte et une image.

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

C'est exactement ce que je fais. Ajouter un tableau au UIActivityViewController. Tout fonctionne très bien. Je peux partager l'image à Mail, Twitter, Facebook, Weibo, Copier, Imprimer, enregistrer au rouleau de caméra .. etc Mais je veux partager l'image via MMS (iMessage) Il ne permet pas de composer avec un UIImage. SEULEMENT des chaînes et nsurl. – corndogcomputers

+0

Ahh. J'ai mal lu votre question. Pardon! Et je viens de vérifier et vous avez raison bien sûr. Texte seulement pour Message ... étrange. –

+3

Malheureusement, les applications qui envoient des images avec l'affichage des messages (même avec UIActivityViewController) sont impossibles. Pour résoudre ce problème, copiez l'image dans le carton, demandez à l'utilisateur de coller l'image dans son message, puis lancez l'application de messagerie iOS à l'aide de UIApplication ... – jjxtra

Questions connexes