UIActivityTypePostToFacebook如何发布图像和文本xcode ios NSDictionary密钥用于文本

时间:2015-05-09 22:21:17

标签: ios xcode facebook uiactivityviewcontroller

在我的CustomActivityItemProvider中,我获得了自定义Facebook共享项的代码:

@implementation CustomActivityItemProvider

@property(nonatomic,strong) NSString *text;
@property(nonatomic,strong) NSURL *url;
@property(nonatomic,strong) UIImage *image;

- (id)item {
            if ([self.activityType isEqualToString:UIActivityTypeMessage]) {
                return [NSString stringWithFormat:@"%@\n%@",self.text,self.url];
                }

            if ([self.activityType isEqualToString:UIActivityTypePostToFacebook]) {
                //>>>>FACEBOOK
                self.url = [NSUrl urlWithString:@"http://www.google.it"];
                self.text = @"FaceBookText";
                self.image = [UIImage imageNamed:@"imageShare.png"];
                NSDictionary *d = [[NSDictionary alloc] initWithObjects:@[self.text,self.image,self.url] forKeys:@[@"text",@"image",@"url"]];
                return d;
                }
        return @"";
    }

我无法发送图片和文字......我已经尝试了所有可能的密钥:“标题”或“文字”或“描述”但没有。我看到img,我看到了网址..但我看不到任何文字......谁能解释我做错了什么?

谢谢你!

1 个答案:

答案 0 :(得分:1)

您需要为要传递给UIActivityViewController的每种数据类型子类化UIActivityItemProvider。您需要UIActivityItemProvider的每个子类的原因是在使用initWithPlaceholderItem:初始化UIActivityItemProvider子类时提供特定的数据类型。

因此,在您的示例中,您将拥有UIActivityItemProvider的字符串和图像子类。字符串子类将为其initWithPlaceholderItem返回一个空字符串:图像子类将返回资产目录中的任何图像,它的initWithPlaceholderItem:。

此外,虽然没有记录并且完全令人讨厌,但如果安装了Facebook应用程序,Facebook活动不允许字符串活动项目提供者。即使这样,它似乎也会删除您发送给它的URL和主题标签。