Ios 实现共享功能的标准方法

Ios 实现共享功能的标准方法,ios,share,Ios,Share,我需要在iOS中实现“共享为…”功能。 例如,一个按钮命名为“共享为…”并弹出一个对话框,其中包括电子邮件、短信、Facebook、Twitter等项目。 我想知道是否有一个标准的对话框来完成这项工作。在使用UIActivityViewController之后,我相信这是一个比我在下面发布的更好的解决方案。我留下了我的答案,因为个人分享方式可能对某些人有用。 以下是我在项目中实现共享功能的方式: 电子邮件:使用MFMailComposeViewController。请参阅此处的文档: Faceb

我需要在iOS中实现“共享为…”功能。 例如,一个按钮命名为“共享为…”并弹出一个对话框,其中包括电子邮件、短信、Facebook、Twitter等项目。
我想知道是否有一个标准的对话框来完成这项工作。

在使用UIActivityViewController之后,我相信这是一个比我在下面发布的更好的解决方案。我留下了我的答案,因为个人分享方式可能对某些人有用。

以下是我在项目中实现共享功能的方式:

电子邮件:使用
MFMailComposeViewController
。请参阅此处的文档:

Facebook和Twitter:使用
SLComposeViewController
。请参阅此处的文档:

例如:

// prepare and present SLComposeViewController if service is available
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
    SLComposeViewController *socialPost = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [socialPost setInitialText:@"TEXT FOR POST"];
    [socialPost addImage:[UIImage imageNamed:@"yourImage.png"]];

    [self presentViewController:socialPost animated:YES completion:nil];
}

// set up a completion handler
[socialPost setCompletionHandler:^(SLComposeViewControllerResult result) {
    switch (result) {
        case SLComposeViewControllerResultDone:
            // post was completed
            break;
        case SLComposeViewControllerResultCancelled:
            // post was cancelled
            break;
        default:
            break;
    }
}

注意:如果你想在Twitter上发帖,请在上面的代码示例中将
slservicetypetebook
替换为
SLServiceTypeTwitter

搜索后,我发现一种在iOS6中使用UIActivityViewController的方式看起来相当“标准”

以下是developer.apple.com的描述:

UIActivityViewController类是一个标准视图控制器,可用于从应用程序提供各种服务。该系统提供多种标准服务,如将项目复制到粘贴板、将内容发布到社交媒体网站、通过电子邮件或短信发送项目等。应用程序还可以定义自定义服务

下面是我使用UIActivityViewController生成的一个对话框

下面是我使用的源代码:

NSArray *activityItems = [NSArray arrayWithObjects: share_text.text, share_image.image , nil];

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
    [self presentViewController:activityController animated:YES completion:nil];

在ViewController.m中:

NSString *message = @"The Flyer http://flyerdream.tumblr.com";
UIImage *image = [UIImage imageNamed:@"flyer"];
NSArray *arrayOfActivityItems = [NSArray arrayWithObjects:message, image, nil];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]
                                         initWithActivityItems:arrayOfActivityItems applicationActivities:nil];

[self.navigationController presentViewController:activityVC animated:YES completion:nil];

查看
UIActivityViewController
,它是一个比我发布的更好的共享解决方案。谢谢你的发帖+1本讨论还涉及如何将“共享操作”按钮实际放入UI的问题: