No puede compartir Docx en forma de NSDATA utilizando UIActivityViewController

Estoy usando UIWebView para abrir un file Docx que está en la forma de NSDATA pasado de otro controller a la vista web. Estoy usando UIAcvitityController para compartir contenido en las networkinges sociales también. Funciona bien para types de image y types de PDF, pero no funciona para DOCX y XLSX. ¿Hay algo especial que necesite hacer aquí?

 UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:self.downloadData applicationActivities:self.applicationActivities]; 

Necesita utilizar datos personalizados para activityItems e implementar methods en el protocolo UIActivityItemSource . Siguelo:

file: ShareData.h

 #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface ShareData : NSObject<UIActivityItemSource> @property (nonatomic, strong) NSData *data; @property (nonatomic, strong) NSURL *url; @end 

file: ShareData.m

 #import "ShareData.h" @implementation ShareData -(id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { return self.data; } -(id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { if ([activityType isEqualToString:UIActivityTypeAirDrop]) { return self.data; } return self.url; } -(NSString*)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType { return @"share data"; } -(NSString*)activityViewController:(UIActivityViewController *)activityViewController dataTypeIdentifierForActivityType:(NSString *)activityType { if ([activityType isEqualToString:UIActivityTypeAirDrop]) { return @"test"; } return nil; } @end 

Y, comparta contenido en las networkinges sociales:

 ShareData *share = [ShareData new]; share.data = downloadData; // one of your downloadData share.url = downloadURL; // url for the downloadData UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[share] applicationActivities:nil]; 

El código anterior ha sido probado, funciona para DOCX y XLSX.

La demostración de origen está aquí: https://github.com/ocarol/UIActivityViewControllerDemo

Tipos de datos admitidos por UIActivityViewController

introduzca la descripción de la imagen aquí