Determinar qué extensión de recurso compartido se utilizó

Dado que completionHandler en UIActivityViewController estaba en desuso en iOS 8, ¿hay alguna forma de determinar qué extensión / actividad compartidas fue utilizada por el usuario?

Solo necesita usar el nuevo controller UIActivityViewControllerCompletionWithItemsHandler :

 typedef void (^UIActivityViewControllerCompletionWithItemsHandler)(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError); 

Llámalo así:

 [yourActivityVC setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError){ }]; 

Además, si se pregunta acerca de qué elemento se seleccionó, solo debe asegurarse de que sus elementos de actividad cumplan con el protocolo UIActivityItemSource ;

Documentación del protocolo UIActivityItemSource

setCompletionWithItemsHandler es solo para iOS8. Si necesita admitir iOS6-7, entonces:

 [yourActivityVC setCompletionHandler:^(NSString *activityType, BOOL completed){ }]; 

Esto es lo que usamos en Swift:

  ... // Configure UIActivityViewController let activityViewController = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil) activityViewController.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypeCopyToPasteboard] // Show UIActivityViewController presentViewController(activityViewController, animated: true, completion: nil) // Define completion handler activityViewController.completionWithItemsHandler = doneSharingHandler ... func doneSharingHandler(activityType: String?, completed: Bool, returnedItems: [AnyObject]?, error: NSError?) { // Return if cancelled if (!completed) { return } // If here, log which activity occurnetworking println("Shanetworking video activity: \(activityType)") }