ios - UIActivityViewController 不在 gmail 中显示正文

标签 ios objective-c uiactivityviewcontroller

我正在使用 uiactivityviewcontroller 来显示共享选项。除了用户选择 Gmail 共享选项外,一切正常。如果用户选择电子邮件,则它会正确显示内容。但是,如果我选择 gmail,则正文中不会显示任何内容。

代码如下:

 NSString *str = [NSString stringWithFormat:@"%@",@"Check the application"];
 NSArray* dataToShare = @[str];  // ...or whatever pieces of data you want to share.

UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:nil];
[activityViewController setValue:@"Check it out" forKey:@"subject"];

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")) {
    activityViewController.popoverPresentationController.sourceView = self.view;
    activityViewController.popoverPresentationController.sourceRect = CGRectMake(0,self.view.frame.size.height, self.view.frame.size.width, 400);

}

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

[activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed) {
    if(completed){

    }
}];
}

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

最佳答案

您可以使用 URL 方案 Gmail 创建 UIActivity 的子类:

下面的代码是从这个答案中提取出来的:https://stackoverflow.com/a/12766330/3726577

//ActivityViewCustomActivity.h
@interface ActivityViewCustomActivity : UIActivity

@end

//ActivityViewCustomActivity.m
@implementation ActivityViewCustomActivity

- (NSString *)activityType {
    return @"googlegmail";
}

- (NSString *)activityTitle {
    return @"Gmail";
}

- (UIImage *)activityImage {
    // Note: These images need to have a transparent background and I recommend these sizes:
    // iPadShare@2x should be 126 px, iPadShare should be 53 px, iPhoneShare@2x should be 100
    // px, and iPhoneShare should be 50 px. I found these sizes to work for what I was making.

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        return [UIImage imageNamed:@"iPadShare.png"];
    }
    else
    {
        return [UIImage imageNamed:@"iPhoneShare.png"];
    }
}

- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems {
    NSLog(@"%s", __FUNCTION__);
    return YES;
}

- (void)prepareWithActivityItems:(NSArray *)activityItems {
    NSLog(@"%s",__FUNCTION__);
}

- (UIViewController *)activityViewController {
    NSLog(@"%s",__FUNCTION__);
    return nil;
}

- (void)performActivity {
    NSString *email = @"googlegmail:///co?subject=Check it out&body=Check the application";
    email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];

    [self activityDidFinish:YES];
}

@implementation ViewController2

- (void)viewDidLoad{
    [super viewDidLoad];

    NSString *textItem = @"Check the application";

    ActivityViewCustomActivity * ca = [ActivityViewCustomActivity new];

    UIActivityViewController *activityVC =
    [[UIActivityViewController alloc] initWithActivityItems:@[textItem] applicationActivities:[NSArray arrayWithObject:ca]];

    activityVC.excludedActivityTypes = @[UIActivityTypePostToWeibo, UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeSaveToCameraRoll];
    [activityVC setValue:@"Check it out" forKey:@"subject"];

    activityVC.completionHandler = ^(NSString *activityType, BOOL completed)
    {
        NSLog(@" activityType: %@", activityType);
        NSLog(@" completed: %i", completed);
    };

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

查看更多: http://www.macstories.net/links/gmail-for-ios-url-scheme/

关于ios - UIActivityViewController 不在 gmail 中显示正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28951113/

相关文章:

ios - Xcode 4 + SVN。添加分支问题

ios - 在 Double 中获得奇怪的值(value)

ios - 如何在更改尺寸时强制重绘(drawRect) subview ?

ios - 在模拟器中单击按钮会导致应用程序崩溃

ios - 执行相互调用的方法。全部在后台

ios - 选择时更改自定义 UIView 背景

iphone - 默认启动画面无法获取区域格式

ios - 使用 UIActivityViewController 共享图像

ios - 删除 UIActivityViewController 中的换行符

ios - 我正在使用 UIActivityViewController ,但如果我在 Facebook、电子邮件等上分享它,它会旋转图像