UIActivityViewController Gmail partage sujet et corps vide?

Im en utilisant UIActivityViewController pour montrer l'action. Dans la liste, quand je sélectionne Mail app, le sujet et le corps sont définis correctement et où, comme dans Gmail app son vide.

- (void)shareAVideoWithSubject:(NSString*)subject Link:(NSString *)string onViewController:(UIViewController *)viewController fromView:(UIView *)view {

    _activityViewController =
    [[UIActivityViewController alloc] initWithActivityItems:@[string]
                                      applicationActivities:nil];
    _activityViewController.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeAddToReadingList, UIActivityTypeAirDrop];
    [_activityViewController setValue:subject forKey:@"subject"];


    UIWindow *window = [[[UIApplication sharedApplication] delegate]window];

    //if iPhone
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    {
        if(!viewController){
            viewController = ((SWRevealViewController*)window.rootViewController).presentedViewController;
        }
        [viewController presentViewController:_activityViewController
                                     animated:YES
                                   completion:nil];

    }   
    //if iPad
    else
    {
        // Change Rect to position Popover
        popup = [[UIPopoverController alloc] initWithContentViewController:_activityViewController];
        UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:view];
        [popup presentPopoverFromBarButtonItem:barButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    }
}

j'ai vérifier les deux questions ci-dessous sur StackOverFlow.

  1. UIActivityViewController ne montrant pas le corps du texte dans gmail

  2. UIActivityViewController ne pas afficher le corps du texte dans gmail

ce ne sont pas la réponse à ma question parce que leur nouvelle activité dans la liste, mais je veux l'iOS montre les toutes partageables apps. Dans ce cas, le corps de Gmail est vide.

Merci d'avance. Ajout des captures d'écran, UIActivityViewController showing Gmail app to share

Gmail window open with empty subject and body. Cropped the image because of company policy can show the email address

24
demandé sur Community 2015-04-21 10:36:34

2 réponses

[_activityViewController setValue:subject forKey:@"subject"]; est une façon non documentée de définir l'objet du courriel.

Façon correcte de définir le corps et le sujet (iOS 7.0 et versions ultérieures) - implémenter le protocole UIActivityItemSource sur l'article à partager.

//  EmailItemProvider.h
@interface EmailItemProvider : NSObject <UIActivityItemSource>
@property (nonatomic, strong) NSString *subject;
@property (nonatomic, strong) NSString *body;
@end

//  EmailItemProvider.m
#import "EmailItemProvider.h"

@implementation EmailItemProvider

- (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

et qu'il présente:

EmailItemProvider *emailItem = [EmailItemProvider new];
emailItem.subject = @"Subject";
emailItem.body = @"Body";

UIActivityViewController *activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:@[emailItem]
                                  applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];

cela définira le corps et le sujet sur l'application mail, mais il semble que L'application Gmail ignore le sujet et l'égale au corps.

Mail.app Gmail

Important : il semble qu'il y ait un bug dans L'application Gmail. Le fait de passer le caractère & rend le sujet et le corps du message vides. Utilisez &amp; à la place. D'autres caractères spéciaux ne sont pas testés.

12
répondu Sergey Kuryanov 2015-04-30 12:11:23

UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"Your body String to share"] activités d'application: néant];

[activityViewController setValue:@"Objet du courriel" forKey:@"sujet"];

activityViewController.completionHandler = ^(NSString *activityType, BOOL completed) { // ... };

-2
répondu Faran Ghani 2015-04-30 12:01:15