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.
-
UIActivityViewController ne montrant pas le corps du texte dans gmail
-
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,
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.
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 &
à la place. D'autres caractères spéciaux ne sont pas testés.
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) { // ... };