12

誰かが洞察を提供できるかどうかさまよっていました。私の人生では、UIActivityTypeMessageでUIImageを送信する方法がわかりませんが、可能だと言う人もいます。

ドキュメントは言う: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIActivity_Class/Reference/Reference.html

UIActivityTypeMessage

オブジェクトは、提供されたコンテンツをメッセージ アプリに投稿します。このサービスを使用すると、アクティビティ項目のデータとして NSString および NSAttributedString オブジェクトを提供できます。また、コンテンツが sms スキームを使用する NSURL オブジェクトを指定することもできます。iOS 6.0 以降で利用できます。UIActivity.h で宣言されています。

したがって、私の理解では、NSString/NSURL のみを送信できます。私はあなたにそれが可能であることを知りません。

私はこれを使用しています:

UIImage *image; // some image here.

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

どんな助けでも大歓迎です。

4

2 に答える 2

1

iOS6 では UIActivityViewController を使用して共有シートにメッセージ アプリを表示させることができるようですが、それを機能させるにはいくつかの秘密があります。

ALAssetsLibrary から画像を取得しているかどうかはわかりませんが、その場合は、UIImage をプルするのではなく、NSURL を使用して ALAsset を取得してください。共有シートはごくわずかな時間で表示されます。これはまさに私が使用しているコードではありませんが、似ています。ただし、iOS6 では、画像が添付されている限り、アクティビティ ビュー コントローラーはメッセージ アプリを表示しません。

- (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];
}
于 2013-06-18T19:58:41.997 に答える
1

テキストと画像を使用して、UIActivityViewController を普遍的に使用する方法を次に示します。

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/6-Default-568h@2x.png
// http://anglerally.com/wp-content/uploads/2012/09/7-Default-568h@2x.png
// iPad:
// http://anglerally.com/wp-content/uploads/2012/09/6-Default-Portrait@2xipad.png
// http://anglerally.com/wp-content/uploads/2012/09/7-Default-Portrait@2xipad.png
于 2012-09-26T14:38:58.990 に答える