ios - activity - spinner swift
UIActivityViewController Gmail ¿Compartir el asunto y el cuerpo quedando vacío? (2)
UIActivityViewController * activityViewController = [[UIActivityViewController alloc] initWithActivityItems: @ [@ "La cadena de tu cuerpo para compartir"] applicationActivities: nil];
[activityViewController setValue: @ "Asunto de su correo electrónico" forKey: @ "subject"];
activityViewController.completionHandler = ^ (NSString * activityType, BOOL completado) {// ...};
Estoy usando UIActivityViewController para mostrar compartir. En la lista, cuando selecciono Aplicación de correo, el asunto y el cuerpo están configurados correctamente y donde, como en la aplicación de Gmail, está vacío.
- (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];
}
}
He comprobado las dos preguntas a continuación en StackOverFlow.
UIActivityViewController no muestra el texto del cuerpo en gmail
UIActivityViewController no muestra el texto del cuerpo en gmail
Estas no responden a mi pregunta porque agregan nueva actividad en la lista, más bien quiero que el iOS muestre todas las aplicaciones que se pueden compartir. En ese caso, el cuerpo compartido de Gmail se está vaciando.
Gracias por adelantado. Añadiendo las capturas de pantalla,
[_activityViewController setValue:subject forKey:@"subject"];
Es indocumentada la forma de configurar el asunto del correo electrónico.
Manera correcta de establecer el cuerpo y el tema (iOS 7.0 y posterior): implemente el protocolo UIActivityItemSource
en el elemento para compartir.
// 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
Y que lo presente:
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];
Esto establecerá el cuerpo y el asunto en la aplicación de correo, pero parece que la aplicación de Gmail ignora el asunto y lo establece igual al cuerpo.
Importante : Parece que hay un error en la aplicación de Gmail. Paso &
carácter hacen que el asunto y el cuerpo del mensaje estén vacíos. Utilice &
en lugar. Otros caracteres especiales no son probados.