UIActivityViewController无法在分享到Gmail应用程序时设置主题

问题描述:

我通过共享来自其他应用程序的内容可以看到,使用分享表分享到Gmail邮件应用程序时,可以设置不同的主题和正文。我已经实现了它,它在本地邮件应用程序上运行良好,但不适用于Gmail。UIActivityViewController无法在分享到Gmail应用程序时设置主题

进入Yelp并分享业务,然后从分享表中选择gmail,我发现主题和主体是不同的。主题包含业务地址,而主体包含地址+ Yelp上业务的链接。

我试图在本地邮件应用程序上成功复制此逻辑,但不能在Gmail应用程序中复制。

我曾尝试以下:

实施UIActivityItemSource方法

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

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { 
    return @""; 
} 

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { 
    return @"body"; 
} 

- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType { 
    return @"subject"; 
} 

结果

苹果邮件主题设定为 “主题”,身体为 “体”

Gmail主题设置为“body”,Body设置为“body “

- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType 

分享到Gmail应用程序时永远不会被调用。

我再尝试做

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"body"] applicationActivities:nil]; 
[activityViewController setValue:@"subject" forKey:@"subject"]; 

结果

苹果邮件主题设定为 “主题”,身上设置的多个黑客方式 “身体”

的Gmail标题设为“正文”,正文设为“正文”

任何使Gmail像Apple Mail一样的方式?

同样,我看到其他应用程序(如Yelp和Safari)通过共享表格获得了Gmail应用程序的正确行为。任何意见,将不胜感激,谢谢。

+0

看起来像是Gmail刚刚从身体,直到第一个空行拉,使该主题 – dan

+0

@丹你有一个测试字符串我可以试试?我试过@“这是第一部分。\ n \ n这是第二部分。”但仍然是相同的行为。 –

+0

嗨!你找到了解决方案吗?我面临同样的问题 –

[_activityViewController setValue:subject forKey:@"subject"]; - 不支持的方式。

正确设置身体和主题的方式(iOS 7.0及更高版本) - 实施UIActivityItemSource协议关于要共享的项目。

// EmailDataProvider.h 

@interface EmailItemProvider : NSObject <UIActivityItemSource> 

@property (nonatomic, strong) NSString *subject; 
@property (nonatomic, strong) NSString *body; 

@end 


// EmailDataProvider.m 

    @implementation EmailDataProvider 

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { 
    return _body; 
} 

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { 
    return _body; 
} 

- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType { 
    return _subject; 
} 

@end 

而且比目前它:

EmailDataProvider *emailItem = [[EmailDataProvider alloc]init]; 

emailItem.subject = @"This is Subject text."; 

emailItem.body = @"This is Body,set by programatically"; 

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

[self presentViewController:activityViewController animated:YES completion:nil]; 
+0

在我的问题中,我发布我已经尝试了UIActivityItemSource协议,它不适用于gmail应用程序,只适用于本地邮件应用程序。与Gmail应用程序共享时,您是否亲自尝试实施? –