2012-09-26 5 views
12

War Wandern, wenn jemand Einblick bieten kann. Für das Leben von mir kann ich nicht herausfinden, wie man eine UIImage mit UIActivityTypeMessage sendet, obwohl einige sagen, dass es möglich ist.Verfassen UIActivityTypeMessage mit UIImage

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

UIActivityTypeMessage

Das Objekt setzt den bereitgestellten Inhalte an die Nachrichten-App. Wenn Sie diesen Service verwenden, können Sie NSString- und NSAttributedString-Objekte als Daten für die Aktivitätselemente bereitstellen. Sie können auch NSURL-Objekte angeben, deren Inhalt das SMS-Schema verwendet. Verfügbar in iOS 6.0 und höher. In UIActivity.h deklariert.

So zu meinem Verständnis kann ich nur NSString/NSURL senden. Ich sehe dich nicht, es ist möglich.

ich dies mit:

UIImage *image; // some image here. 

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

Jede Hilfe sehr geschätzt würde.

Antwort

1

Während es scheint möglich, die Nachricht App erscheint im Aktienblatt mit UIActivityViewController in iOS6 zu bekommen, ist es ein Geheimnis, es an der Arbeit - iOS7 ist eine andere Geschichte, den NSURL des Vermögenswert vorbei funktioniert out of the box.

Nicht sicher, dass Sie Ihre Bilder von der ALAssentsLibrary erhalten, aber wenn dies der Fall ist, greifen Sie die ALAsset mit ihrer NSURL, anstatt die UIImage zu ziehen. Das Aktienblatt erscheint in einem Bruchteil der Zeit. Dies ist nicht genau der Code, den ich verwende, aber ähnlich. Aber auf iOS6 zeigt der Aktivitätsansicht-Controller die Nachrichten-App nicht an, solange ein Bild angehängt ist.

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

Bestätigt, dass das Teilen mit iMessage in iOS7 mit dem Standard-UIActivityController funktioniert. Als zusätzlichen Bonus können Sie ein Video auch über iMessage und AirDrop freigeben, ohne es zuvor selbst extrahieren zu müssen. In beiden Fällen übergeben Sie die NSURL des ALAsset in den activityItems. –

1

So verwenden Sie UIActivityViewController universell mit Text und einem Bild.

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

Das ist genau das, was ich mache. Hinzufügen eines Arrays zum UIActivityViewController. Alles funktioniert gut. Ich kann das Bild an Mail, Twitter, Facebook, Weibo, Kopieren, Drucken, Speichern in die Kamera rollen .. etc. Aber ich möchte das Bild per MMS (iMessage) teilen Es erlaubt nicht mit einem UIImage zu komponieren. NUR Strings und Nsurl. – corndogcomputers

+0

Ahh. Ich habe deine Frage falsch verstanden. Es tut uns leid! Und ich habe es einfach überprüft und du hast natürlich Recht. Text nur für Nachricht ... seltsam. –

+3

Leider sind Apps, die Bilder mit der Nachrichtenansicht senden (auch mit UIActivityViewController) nicht möglich. Meine Lösung hierfür ist, kopieren Sie das Bild in die Montagefläche, den Benutzer anweisen, das Bild in ihre Nachricht einzufügen, und starten Sie dann die iOS-Nachricht App mit UIApplication ... – jjxtra